1/*
2 * linux/arch/arm/mach-omap1/leds-innovator.c
3 */
4#include <linux/init.h>
5
6#include <asm/hardware.h>
7#include <asm/leds.h>
8#include <asm/system.h>
9
10#include "leds.h"
11
12
13#define LED_STATE_ENABLED	1
14#define LED_STATE_CLAIMED	2
15
16static unsigned int led_state;
17static unsigned int hw_led_state;
18
19void innovator_leds_event(led_event_t evt)
20{
21	unsigned long flags;
22
23	local_irq_save(flags);
24
25	switch (evt) {
26	case led_start:
27		hw_led_state = 0;
28		led_state = LED_STATE_ENABLED;
29		break;
30
31	case led_stop:
32		led_state &= ~LED_STATE_ENABLED;
33		hw_led_state = 0;
34		break;
35
36	case led_claim:
37		led_state |= LED_STATE_CLAIMED;
38		hw_led_state = 0;
39		break;
40
41	case led_release:
42		led_state &= ~LED_STATE_CLAIMED;
43		hw_led_state = 0;
44		break;
45
46#ifdef CONFIG_LEDS_TIMER
47	case led_timer:
48		if (!(led_state & LED_STATE_CLAIMED))
49			hw_led_state ^= 0;
50		break;
51#endif
52
53#ifdef CONFIG_LEDS_CPU
54	case led_idle_start:
55		if (!(led_state & LED_STATE_CLAIMED))
56			hw_led_state |= 0;
57		break;
58
59	case led_idle_end:
60		if (!(led_state & LED_STATE_CLAIMED))
61			hw_led_state &= ~0;
62		break;
63#endif
64
65	case led_halted:
66		break;
67
68	case led_green_on:
69		if (led_state & LED_STATE_CLAIMED)
70			hw_led_state &= ~0;
71		break;
72
73	case led_green_off:
74		if (led_state & LED_STATE_CLAIMED)
75			hw_led_state |= 0;
76		break;
77
78	case led_amber_on:
79		break;
80
81	case led_amber_off:
82		break;
83
84	case led_red_on:
85		if (led_state & LED_STATE_CLAIMED)
86			hw_led_state &= ~0;
87		break;
88
89	case led_red_off:
90		if (led_state & LED_STATE_CLAIMED)
91			hw_led_state |= 0;
92		break;
93
94	default:
95		break;
96	}
97
98	if (led_state & LED_STATE_ENABLED)
99		;
100
101	local_irq_restore(flags);
102}
103