diff options
Diffstat (limited to 'drivers/leds/led-triggers.c')
-rw-r--r-- | drivers/leds/led-triggers.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c index 454fb0901f82..575368c2b100 100644 --- a/drivers/leds/led-triggers.c +++ b/drivers/leds/led-triggers.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * LED Triggers Core | 2 | * LED Triggers Core |
3 | * | 3 | * |
4 | * Copyright 2005-2006 Openedhand Ltd. | 4 | * Copyright 2005-2007 Openedhand Ltd. |
5 | * | 5 | * |
6 | * Author: Richard Purdie <rpurdie@openedhand.com> | 6 | * Author: Richard Purdie <rpurdie@openedhand.com> |
7 | * | 7 | * |
@@ -28,10 +28,10 @@ | |||
28 | static DEFINE_RWLOCK(triggers_list_lock); | 28 | static DEFINE_RWLOCK(triggers_list_lock); |
29 | static LIST_HEAD(trigger_list); | 29 | static LIST_HEAD(trigger_list); |
30 | 30 | ||
31 | ssize_t led_trigger_store(struct class_device *dev, const char *buf, | 31 | ssize_t led_trigger_store(struct device *dev, struct device_attribute *attr, |
32 | size_t count) | 32 | const char *buf, size_t count) |
33 | { | 33 | { |
34 | struct led_classdev *led_cdev = class_get_devdata(dev); | 34 | struct led_classdev *led_cdev = dev_get_drvdata(dev); |
35 | char trigger_name[TRIG_NAME_MAX]; | 35 | char trigger_name[TRIG_NAME_MAX]; |
36 | struct led_trigger *trig; | 36 | struct led_trigger *trig; |
37 | size_t len; | 37 | size_t len; |
@@ -67,9 +67,10 @@ ssize_t led_trigger_store(struct class_device *dev, const char *buf, | |||
67 | } | 67 | } |
68 | 68 | ||
69 | 69 | ||
70 | ssize_t led_trigger_show(struct class_device *dev, char *buf) | 70 | ssize_t led_trigger_show(struct device *dev, struct device_attribute *attr, |
71 | char *buf) | ||
71 | { | 72 | { |
72 | struct led_classdev *led_cdev = class_get_devdata(dev); | 73 | struct led_classdev *led_cdev = dev_get_drvdata(dev); |
73 | struct led_trigger *trig; | 74 | struct led_trigger *trig; |
74 | int len = 0; | 75 | int len = 0; |
75 | 76 | ||
@@ -183,13 +184,20 @@ int led_trigger_register(struct led_trigger *trigger) | |||
183 | void led_trigger_register_simple(const char *name, struct led_trigger **tp) | 184 | void led_trigger_register_simple(const char *name, struct led_trigger **tp) |
184 | { | 185 | { |
185 | struct led_trigger *trigger; | 186 | struct led_trigger *trigger; |
187 | int err; | ||
186 | 188 | ||
187 | trigger = kzalloc(sizeof(struct led_trigger), GFP_KERNEL); | 189 | trigger = kzalloc(sizeof(struct led_trigger), GFP_KERNEL); |
188 | 190 | ||
189 | if (trigger) { | 191 | if (trigger) { |
190 | trigger->name = name; | 192 | trigger->name = name; |
191 | led_trigger_register(trigger); | 193 | err = led_trigger_register(trigger); |
192 | } | 194 | if (err < 0) |
195 | printk(KERN_WARNING "LED trigger %s failed to register" | ||
196 | " (%d)\n", name, err); | ||
197 | } else | ||
198 | printk(KERN_WARNING "LED trigger %s failed to register" | ||
199 | " (no memory)\n", name); | ||
200 | |||
193 | *tp = trigger; | 201 | *tp = trigger; |
194 | } | 202 | } |
195 | 203 | ||
@@ -215,7 +223,8 @@ void led_trigger_unregister(struct led_trigger *trigger) | |||
215 | 223 | ||
216 | void led_trigger_unregister_simple(struct led_trigger *trigger) | 224 | void led_trigger_unregister_simple(struct led_trigger *trigger) |
217 | { | 225 | { |
218 | led_trigger_unregister(trigger); | 226 | if (trigger) |
227 | led_trigger_unregister(trigger); | ||
219 | kfree(trigger); | 228 | kfree(trigger); |
220 | } | 229 | } |
221 | 230 | ||