da9030_battery: Fix race between event handler and monitor
[pandora-kernel.git] / arch / arm / mach-imx / leds-mx1ads.c
1 /*
2  * linux/arch/arm/mach-imx/leds-mx1ads.c
3  *
4  * Copyright (c) 2004 Sascha Hauer <sascha@saschahauer.de>
5  *
6  * Original (leds-footbridge.c) by Russell King
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  *
12  */
13
14 #include <linux/kernel.h>
15 #include <linux/init.h>
16 #include <linux/io.h>
17 #include <mach/hardware.h>
18 #include <asm/system.h>
19 #include <asm/leds.h>
20 #include "leds.h"
21
22 /*
23  * The MX1ADS Board has only one usable LED,
24  * so select only the timer led or the
25  * cpu usage led
26  */
27 void
28 mx1ads_leds_event(led_event_t ledevt)
29 {
30         unsigned long flags;
31
32         local_irq_save(flags);
33
34         switch (ledevt) {
35 #ifdef CONFIG_LEDS_CPU
36         case led_idle_start:
37                 DR(0) &= ~(1<<2);
38                 break;
39
40         case led_idle_end:
41                 DR(0) |= 1<<2;
42                 break;
43 #endif
44
45 #ifdef CONFIG_LEDS_TIMER
46         case led_timer:
47                 DR(0) ^= 1<<2;
48 #endif
49         default:
50                 break;
51         }
52         local_irq_restore(flags);
53 }