fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / arch / arm / mach-pxa / leds-idp.c
index 8f9d2c3..38aa927 100644 (file)
  */
 
 
-#include <linux/config.h>
 #include <linux/init.h>
 
 #include <asm/hardware.h>
 #include <asm/leds.h>
 #include <asm/system.h>
 
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/idp.h>
+
 #include "leds.h"
 
 #define LED_STATE_ENABLED      1
@@ -63,12 +65,12 @@ void idp_leds_event(led_event_t evt)
 #ifdef CONFIG_LEDS_CPU
        case led_idle_start:
                if (!(led_state & LED_STATE_CLAIMED))
-                       hw_led_state |= IDP_BUSY_LED;
+                       hw_led_state &= ~IDP_BUSY_LED;
                break;
 
        case led_idle_end:
                if (!(led_state & LED_STATE_CLAIMED))
-                       hw_led_state &= ~IDP_BUSY_LED;
+                       hw_led_state |= IDP_BUSY_LED;
                break;
 #endif
 
@@ -77,12 +79,12 @@ void idp_leds_event(led_event_t evt)
 
        case led_green_on:
                if (led_state & LED_STATE_CLAIMED)
-                       hw_led_state &= ~IDP_HB_LED;
+                       hw_led_state |= IDP_HB_LED;
                break;
 
        case led_green_off:
                if (led_state & LED_STATE_CLAIMED)
-                       hw_led_state |= IDP_HB_LED;
+                       hw_led_state &= ~IDP_HB_LED;
                break;
 
        case led_amber_on:
@@ -93,12 +95,12 @@ void idp_leds_event(led_event_t evt)
 
        case led_red_on:
                if (led_state & LED_STATE_CLAIMED)
-                       hw_led_state &= ~IDP_BUSY_LED;
+                       hw_led_state |= IDP_BUSY_LED;
                break;
 
        case led_red_off:
                if (led_state & LED_STATE_CLAIMED)
-                       hw_led_state |= IDP_BUSY_LED;
+                       hw_led_state &= ~IDP_BUSY_LED;
                break;
 
        default:
@@ -106,7 +108,9 @@ void idp_leds_event(led_event_t evt)
        }
 
        if  (led_state & LED_STATE_ENABLED)
-               IDP_WRITE_LEDS(hw_led_state);
+               IDP_CPLD_LED_CONTROL = ( (IDP_CPLD_LED_CONTROL | IDP_LEDS_MASK) & ~hw_led_state);
+       else
+               IDP_CPLD_LED_CONTROL |= IDP_LEDS_MASK;
 
        local_irq_restore(flags);
 }