aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/leds/led-triggers.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/leds/led-triggers.c')
-rw-r--r--drivers/leds/led-triggers.c27
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 @@
28static DEFINE_RWLOCK(triggers_list_lock); 28static DEFINE_RWLOCK(triggers_list_lock);
29static LIST_HEAD(trigger_list); 29static LIST_HEAD(trigger_list);
30 30
31ssize_t led_trigger_store(struct class_device *dev, const char *buf, 31ssize_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
70ssize_t led_trigger_show(struct class_device *dev, char *buf) 70ssize_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)
183void led_trigger_register_simple(const char *name, struct led_trigger **tp) 184void 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
216void led_trigger_unregister_simple(struct led_trigger *trigger) 224void 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