aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/time.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-01-10 12:15:32 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-02-15 16:39:12 -0500
commit373b32abf9b33616ad94283461bb2ab49e8371d5 (patch)
treef503bb29f47bbb019578141e399ee178c9a94728 /arch/arm/kernel/time.c
parent7921fc4a25800f4210bca96c05dea67a6b736d32 (diff)
ARM: move LED support code out of arch/arm/kernel/time.c
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/time.c')
-rw-r--r--arch/arm/kernel/time.c104
1 files changed, 0 insertions, 104 deletions
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c
index e26f966d117b..28753805d2d1 100644
--- a/arch/arm/kernel/time.c
+++ b/arch/arm/kernel/time.c
@@ -79,110 +79,6 @@ static unsigned long dummy_gettimeoffset(void)
79} 79}
80#endif 80#endif
81 81
82#ifdef CONFIG_LEDS
83
84static void dummy_leds_event(led_event_t evt)
85{
86}
87
88void (*leds_event)(led_event_t) = dummy_leds_event;
89
90struct leds_evt_name {
91 const char name[8];
92 int on;
93 int off;
94};
95
96static const struct leds_evt_name evt_names[] = {
97 { "amber", led_amber_on, led_amber_off },
98 { "blue", led_blue_on, led_blue_off },
99 { "green", led_green_on, led_green_off },
100 { "red", led_red_on, led_red_off },
101};
102
103static ssize_t leds_store(struct sys_device *dev,
104 struct sysdev_attribute *attr,
105 const char *buf, size_t size)
106{
107 int ret = -EINVAL, len = strcspn(buf, " ");
108
109 if (len > 0 && buf[len] == '\0')
110 len--;
111
112 if (strncmp(buf, "claim", len) == 0) {
113 leds_event(led_claim);
114 ret = size;
115 } else if (strncmp(buf, "release", len) == 0) {
116 leds_event(led_release);
117 ret = size;
118 } else {
119 int i;
120
121 for (i = 0; i < ARRAY_SIZE(evt_names); i++) {
122 if (strlen(evt_names[i].name) != len ||
123 strncmp(buf, evt_names[i].name, len) != 0)
124 continue;
125 if (strncmp(buf+len, " on", 3) == 0) {
126 leds_event(evt_names[i].on);
127 ret = size;
128 } else if (strncmp(buf+len, " off", 4) == 0) {
129 leds_event(evt_names[i].off);
130 ret = size;
131 }
132 break;
133 }
134 }
135 return ret;
136}
137
138static SYSDEV_ATTR(event, 0200, NULL, leds_store);
139
140static int leds_suspend(struct sys_device *dev, pm_message_t state)
141{
142 leds_event(led_stop);
143 return 0;
144}
145
146static int leds_resume(struct sys_device *dev)
147{
148 leds_event(led_start);
149 return 0;
150}
151
152static int leds_shutdown(struct sys_device *dev)
153{
154 leds_event(led_halted);
155 return 0;
156}
157
158static struct sysdev_class leds_sysclass = {
159 .name = "leds",
160 .shutdown = leds_shutdown,
161 .suspend = leds_suspend,
162 .resume = leds_resume,
163};
164
165static struct sys_device leds_device = {
166 .id = 0,
167 .cls = &leds_sysclass,
168};
169
170static int __init leds_init(void)
171{
172 int ret;
173 ret = sysdev_class_register(&leds_sysclass);
174 if (ret == 0)
175 ret = sysdev_register(&leds_device);
176 if (ret == 0)
177 ret = sysdev_create_file(&leds_device, &attr_event);
178 return ret;
179}
180
181device_initcall(leds_init);
182
183EXPORT_SYMBOL(leds_event);
184#endif
185
186#ifdef CONFIG_LEDS_TIMER 82#ifdef CONFIG_LEDS_TIMER
187static inline void do_leds(void) 83static inline void do_leds(void)
188{ 84{