2 * arch/arm/mach-s3c24a0/leds-smdk.c
4 * $Id: leds-smdk.c,v 1.3 2006/12/12 13:38:48 gerg Exp $
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
11 #include <linux/init.h>
13 #include <asm/hardware.h>
15 #include <asm/system.h>
16 #include <asm/arch/smdk.h>
20 #define LED_STATE_ENABLED 1
21 #define LED_STATE_CLAIMED 2
28 static unsigned int led_state
;
29 static unsigned int hw_led_state
;
32 led_update(unsigned int state
)
34 write_gpio_bit(SMDK_LED4
, (state
& LED0
));
35 write_gpio_bit(SMDK_LED5
, ((state
& LED1
) >> 1));
36 write_gpio_bit(SMDK_LED6
, ((state
& LED2
) >> 2));
37 write_gpio_bit(SMDK_LED7
, ((state
& LED3
) >> 3));
41 smdk_leds_event(led_event_t evt
)
45 local_irq_save(flags
);
49 hw_led_state
= (LED1
| LED2
| LED3
);
50 led_state
= LED_STATE_ENABLED
;
54 led_state
&= ~LED_STATE_ENABLED
;
55 hw_led_state
= (LED0
| LED1
| LED2
| LED3
);
56 led_update(hw_led_state
);
60 led_state
|= LED_STATE_CLAIMED
;
61 hw_led_state
= (LED0
| LED1
| LED2
| LED3
);
65 led_state
&= ~LED_STATE_CLAIMED
;
66 hw_led_state
= (LED1
| LED2
| LED3
);
69 #ifdef CONFIG_LEDS_TIMER
71 if (!(led_state
& LED_STATE_CLAIMED
))
76 #ifdef CONFIG_LEDS_CPU
78 if (!(led_state
& LED_STATE_CLAIMED
))
83 if (!(led_state
& LED_STATE_CLAIMED
))
84 hw_led_state
&= ~LED2
;
92 if (led_state
& LED_STATE_CLAIMED
)
93 hw_led_state
&= ~LED2
;
97 if (led_state
& LED_STATE_CLAIMED
)
117 if (led_state
& LED_STATE_ENABLED
)
118 led_update(hw_led_state
);
120 local_irq_restore(flags
);