diff options
Diffstat (limited to 'arch/arm/kernel/time.c')
-rw-r--r-- | arch/arm/kernel/time.c | 104 |
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 | |||
84 | static void dummy_leds_event(led_event_t evt) | ||
85 | { | ||
86 | } | ||
87 | |||
88 | void (*leds_event)(led_event_t) = dummy_leds_event; | ||
89 | |||
90 | struct leds_evt_name { | ||
91 | const char name[8]; | ||
92 | int on; | ||
93 | int off; | ||
94 | }; | ||
95 | |||
96 | static 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 | |||
103 | static 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 | |||
138 | static SYSDEV_ATTR(event, 0200, NULL, leds_store); | ||
139 | |||
140 | static int leds_suspend(struct sys_device *dev, pm_message_t state) | ||
141 | { | ||
142 | leds_event(led_stop); | ||
143 | return 0; | ||
144 | } | ||
145 | |||
146 | static int leds_resume(struct sys_device *dev) | ||
147 | { | ||
148 | leds_event(led_start); | ||
149 | return 0; | ||
150 | } | ||
151 | |||
152 | static int leds_shutdown(struct sys_device *dev) | ||
153 | { | ||
154 | leds_event(led_halted); | ||
155 | return 0; | ||
156 | } | ||
157 | |||
158 | static struct sysdev_class leds_sysclass = { | ||
159 | .name = "leds", | ||
160 | .shutdown = leds_shutdown, | ||
161 | .suspend = leds_suspend, | ||
162 | .resume = leds_resume, | ||
163 | }; | ||
164 | |||
165 | static struct sys_device leds_device = { | ||
166 | .id = 0, | ||
167 | .cls = &leds_sysclass, | ||
168 | }; | ||
169 | |||
170 | static 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 | |||
181 | device_initcall(leds_init); | ||
182 | |||
183 | EXPORT_SYMBOL(leds_event); | ||
184 | #endif | ||
185 | |||
186 | #ifdef CONFIG_LEDS_TIMER | 82 | #ifdef CONFIG_LEDS_TIMER |
187 | static inline void do_leds(void) | 83 | static inline void do_leds(void) |
188 | { | 84 | { |