Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-omap1/leds-innovator.c
10817 views
1
/*
2
* linux/arch/arm/mach-omap1/leds-innovator.c
3
*/
4
#include <linux/init.h>
5
6
#include <mach/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
16
static unsigned int led_state;
17
static unsigned int hw_led_state;
18
19
void 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
local_irq_restore(flags);
99
}
100
101