Lines Matching refs:led_cdev
31 trigger_relevant(struct led_classdev *led_cdev, struct led_trigger *trig) in trigger_relevant() argument
33 return !trig->trigger_type || trig->trigger_type == led_cdev->trigger_type; in trigger_relevant()
41 struct led_classdev *led_cdev = dev_get_drvdata(dev); in led_trigger_write() local
45 mutex_lock(&led_cdev->led_access); in led_trigger_write()
47 if (led_sysfs_is_disabled(led_cdev)) { in led_trigger_write()
53 led_trigger_remove(led_cdev); in led_trigger_write()
59 if (sysfs_streq(buf, trig->name) && trigger_relevant(led_cdev, trig)) { in led_trigger_write()
60 down_write(&led_cdev->trigger_lock); in led_trigger_write()
61 led_trigger_set(led_cdev, trig); in led_trigger_write()
62 up_write(&led_cdev->trigger_lock); in led_trigger_write()
73 mutex_unlock(&led_cdev->led_access); in led_trigger_write()
95 struct led_classdev *led_cdev) in led_trigger_format() argument
99 led_cdev->trigger ? "none" : "[none]"); in led_trigger_format()
104 if (!trigger_relevant(led_cdev, trig)) in led_trigger_format()
107 hit = led_cdev->trigger && !strcmp(led_cdev->trigger->name, trig->name); in led_trigger_format()
130 struct led_classdev *led_cdev = dev_get_drvdata(dev); in led_trigger_read() local
135 down_read(&led_cdev->trigger_lock); in led_trigger_read()
137 len = led_trigger_format(NULL, 0, led_cdev); in led_trigger_read()
140 up_read(&led_cdev->trigger_lock); in led_trigger_read()
144 len = led_trigger_format(data, len + 1, led_cdev); in led_trigger_read()
146 up_read(&led_cdev->trigger_lock); in led_trigger_read()
158 int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) in led_trigger_set() argument
166 if (!led_cdev->trigger && !trig) in led_trigger_set()
173 if (led_cdev->trigger) { in led_trigger_set()
174 write_lock_irqsave(&led_cdev->trigger->leddev_list_lock, flags); in led_trigger_set()
175 list_del(&led_cdev->trig_list); in led_trigger_set()
176 write_unlock_irqrestore(&led_cdev->trigger->leddev_list_lock, in led_trigger_set()
178 cancel_work_sync(&led_cdev->set_brightness_work); in led_trigger_set()
179 led_stop_software_blink(led_cdev); in led_trigger_set()
180 if (led_cdev->trigger->deactivate) in led_trigger_set()
181 led_cdev->trigger->deactivate(led_cdev); in led_trigger_set()
182 device_remove_groups(led_cdev->dev, led_cdev->trigger->groups); in led_trigger_set()
183 led_cdev->trigger = NULL; in led_trigger_set()
184 led_cdev->trigger_data = NULL; in led_trigger_set()
185 led_cdev->activated = false; in led_trigger_set()
186 led_set_brightness(led_cdev, LED_OFF); in led_trigger_set()
190 list_add_tail(&led_cdev->trig_list, &trig->led_cdevs); in led_trigger_set()
192 led_cdev->trigger = trig; in led_trigger_set()
195 ret = trig->activate(led_cdev); in led_trigger_set()
202 ret = device_add_groups(led_cdev->dev, trig->groups); in led_trigger_set()
204 dev_err(led_cdev->dev, "Failed to add trigger attributes\n"); in led_trigger_set()
212 if (kobject_uevent_env(&led_cdev->dev->kobj, KOBJ_CHANGE, envp)) in led_trigger_set()
213 dev_err(led_cdev->dev, in led_trigger_set()
223 trig->deactivate(led_cdev); in led_trigger_set()
226 write_lock_irqsave(&led_cdev->trigger->leddev_list_lock, flags); in led_trigger_set()
227 list_del(&led_cdev->trig_list); in led_trigger_set()
228 write_unlock_irqrestore(&led_cdev->trigger->leddev_list_lock, flags); in led_trigger_set()
229 led_cdev->trigger = NULL; in led_trigger_set()
230 led_cdev->trigger_data = NULL; in led_trigger_set()
231 led_set_brightness(led_cdev, LED_OFF); in led_trigger_set()
238 void led_trigger_remove(struct led_classdev *led_cdev) in led_trigger_remove() argument
240 down_write(&led_cdev->trigger_lock); in led_trigger_remove()
241 led_trigger_set(led_cdev, NULL); in led_trigger_remove()
242 up_write(&led_cdev->trigger_lock); in led_trigger_remove()
246 void led_trigger_set_default(struct led_classdev *led_cdev) in led_trigger_set_default() argument
250 if (!led_cdev->default_trigger) in led_trigger_set_default()
254 down_write(&led_cdev->trigger_lock); in led_trigger_set_default()
256 if (!strcmp(led_cdev->default_trigger, trig->name) && in led_trigger_set_default()
257 trigger_relevant(led_cdev, trig)) { in led_trigger_set_default()
258 led_cdev->flags |= LED_INIT_DEFAULT_TRIGGER; in led_trigger_set_default()
259 led_trigger_set(led_cdev, trig); in led_trigger_set_default()
263 up_write(&led_cdev->trigger_lock); in led_trigger_set_default()
285 struct led_classdev *led_cdev; in led_trigger_register() local
307 list_for_each_entry(led_cdev, &leds_list, node) { in led_trigger_register()
308 down_write(&led_cdev->trigger_lock); in led_trigger_register()
309 if (!led_cdev->trigger && led_cdev->default_trigger && in led_trigger_register()
310 !strcmp(led_cdev->default_trigger, trig->name) && in led_trigger_register()
311 trigger_relevant(led_cdev, trig)) { in led_trigger_register()
312 led_cdev->flags |= LED_INIT_DEFAULT_TRIGGER; in led_trigger_register()
313 led_trigger_set(led_cdev, trig); in led_trigger_register()
315 up_write(&led_cdev->trigger_lock); in led_trigger_register()
325 struct led_classdev *led_cdev; in led_trigger_unregister() local
337 list_for_each_entry(led_cdev, &leds_list, node) { in led_trigger_unregister()
338 down_write(&led_cdev->trigger_lock); in led_trigger_unregister()
339 if (led_cdev->trigger == trig) in led_trigger_unregister()
340 led_trigger_set(led_cdev, NULL); in led_trigger_unregister()
341 up_write(&led_cdev->trigger_lock); in led_trigger_unregister()
380 struct led_classdev *led_cdev; in led_trigger_event() local
386 list_for_each_entry(led_cdev, &trig->led_cdevs, trig_list) in led_trigger_event()
387 led_set_brightness(led_cdev, brightness); in led_trigger_event()
398 struct led_classdev *led_cdev; in led_trigger_blink_setup() local
404 list_for_each_entry(led_cdev, &trig->led_cdevs, trig_list) { in led_trigger_blink_setup()
406 led_blink_set_oneshot(led_cdev, delay_on, delay_off, in led_trigger_blink_setup()
409 led_blink_set(led_cdev, delay_on, delay_off); in led_trigger_blink_setup()