vserver 2.0 rc7
[linux-2.6.git] / arch / arm / mach-pxa / leds-idp.c
index adb108c..5eba6ea 100644 (file)
@@ -19,6 +19,7 @@
 #include <asm/leds.h>
 #include <asm/system.h>
 
+#include <asm/arch/pxa-regs.h>
 #include <asm/arch/idp.h>
 
 #include "leds.h"
@@ -65,12 +66,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
 
@@ -79,12 +80,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:
@@ -95,12 +96,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:
@@ -108,7 +109,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);
 }