# BRCM_VERSION=3
[bcm963xx.git] / kernel / linux / arch / arm / mach-omap / leds-perseus2.c
1 /*
2  * linux/arch/arm/mach-omap/leds-perseus2.c
3  *
4  * Copyright 2003 by Texas Instruments Incorporated
5  *
6  */
7 #include <linux/config.h>
8 #include <linux/init.h>
9 #include <linux/kernel_stat.h>
10 #include <linux/sched.h>
11 #include <linux/version.h>
12
13 #include <asm/io.h>
14 #include <asm/hardware.h>
15 #include <asm/leds.h>
16 #include <asm/system.h>
17
18 #include "leds.h"
19
20 void perseus2_leds_event(led_event_t evt)
21 {
22         unsigned long flags;
23         static unsigned long hw_led_state = 0;
24
25         local_irq_save(flags);
26
27         switch (evt) {
28         case led_start:
29                 hw_led_state |= OMAP730_FPGA_LED_STARTSTOP;
30                 break;
31
32         case led_stop:
33                 hw_led_state &= ~OMAP730_FPGA_LED_STARTSTOP;
34                 break;
35
36         case led_claim:
37                 hw_led_state |= OMAP730_FPGA_LED_CLAIMRELEASE;
38                 break;
39
40         case led_release:
41                 hw_led_state &= ~OMAP730_FPGA_LED_CLAIMRELEASE;
42                 break;
43
44 #ifdef CONFIG_LEDS_TIMER
45         case led_timer:
46                 /*
47                  * Toggle Timer LED
48                  */
49                 if (hw_led_state & OMAP730_FPGA_LED_TIMER)
50                         hw_led_state &= ~OMAP730_FPGA_LED_TIMER;
51                 else
52                         hw_led_state |= OMAP730_FPGA_LED_TIMER;
53                 break;
54 #endif
55
56 #ifdef CONFIG_LEDS_CPU
57         case led_idle_start:
58                 hw_led_state |= OMAP730_FPGA_LED_IDLE;
59                 break;
60
61         case led_idle_end:
62                 hw_led_state &= ~OMAP730_FPGA_LED_IDLE;
63                 break;
64 #endif
65
66         case led_halted:
67                 if (hw_led_state & OMAP730_FPGA_LED_HALTED)
68                         hw_led_state &= ~OMAP730_FPGA_LED_HALTED;
69                 else
70                         hw_led_state |= OMAP730_FPGA_LED_HALTED;
71                 break;
72
73         case led_green_on:
74                 break;
75
76         case led_green_off:
77                 break;
78
79         case led_amber_on:
80                 break;
81
82         case led_amber_off:
83                 break;
84
85         case led_red_on:
86                 break;
87
88         case led_red_off:
89                 break;
90
91         default:
92                 break;
93         }
94
95
96         /*
97          *  Actually burn the LEDs
98          */
99         __raw_writew(~hw_led_state & 0xffff, OMAP730_FPGA_LEDS);
100
101         local_irq_restore(flags);
102 }