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()
58 led_trigger_set_default(led_cdev); in led_trigger_write()
64 if (sysfs_streq(buf, trig->name) && trigger_relevant(led_cdev, trig)) { in led_trigger_write()
65 down_write(&led_cdev->trigger_lock); in led_trigger_write()
66 led_trigger_set(led_cdev, trig); in led_trigger_write()
67 up_write(&led_cdev->trigger_lock); in led_trigger_write()
78 mutex_unlock(&led_cdev->led_access); in led_trigger_write()
100 struct led_classdev *led_cdev) in led_trigger_format() argument
104 led_cdev->trigger ? "none" : "[none]"); in led_trigger_format()
106 if (led_cdev->default_trigger) in led_trigger_format()
112 if (!trigger_relevant(led_cdev, trig)) in led_trigger_format()
115 hit = led_cdev->trigger && !strcmp(led_cdev->trigger->name, trig->name); in led_trigger_format()
138 struct led_classdev *led_cdev = dev_get_drvdata(dev); in led_trigger_read() local
143 down_read(&led_cdev->trigger_lock); in led_trigger_read()
145 len = led_trigger_format(NULL, 0, led_cdev); in led_trigger_read()
148 up_read(&led_cdev->trigger_lock); in led_trigger_read()
152 len = led_trigger_format(data, len + 1, led_cdev); in led_trigger_read()
154 up_read(&led_cdev->trigger_lock); in led_trigger_read()
166 int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) in led_trigger_set() argument
173 if (!led_cdev->trigger && !trig) in led_trigger_set()
180 if (led_cdev->trigger) { in led_trigger_set()
181 spin_lock(&led_cdev->trigger->leddev_list_lock); in led_trigger_set()
182 list_del_rcu(&led_cdev->trig_list); in led_trigger_set()
183 spin_unlock(&led_cdev->trigger->leddev_list_lock); in led_trigger_set()
188 cancel_work_sync(&led_cdev->set_brightness_work); in led_trigger_set()
189 led_stop_software_blink(led_cdev); in led_trigger_set()
190 device_remove_groups(led_cdev->dev, led_cdev->trigger->groups); in led_trigger_set()
191 if (led_cdev->trigger->deactivate) in led_trigger_set()
192 led_cdev->trigger->deactivate(led_cdev); in led_trigger_set()
193 led_cdev->trigger = NULL; in led_trigger_set()
194 led_cdev->trigger_data = NULL; in led_trigger_set()
195 led_cdev->activated = false; in led_trigger_set()
196 led_cdev->flags &= ~LED_INIT_DEFAULT_TRIGGER; in led_trigger_set()
197 led_set_brightness(led_cdev, LED_OFF); in led_trigger_set()
201 list_add_tail_rcu(&led_cdev->trig_list, &trig->led_cdevs); in led_trigger_set()
203 led_cdev->trigger = trig; in led_trigger_set()
216 flush_work(&led_cdev->set_brightness_work); in led_trigger_set()
220 ret = trig->activate(led_cdev); in led_trigger_set()
222 led_set_brightness(led_cdev, trig->brightness); in led_trigger_set()
226 ret = device_add_groups(led_cdev->dev, trig->groups); in led_trigger_set()
228 dev_err(led_cdev->dev, "Failed to add trigger attributes\n"); in led_trigger_set()
236 if (kobject_uevent_env(&led_cdev->dev->kobj, KOBJ_CHANGE, envp)) in led_trigger_set()
237 dev_err(led_cdev->dev, in led_trigger_set()
247 trig->deactivate(led_cdev); in led_trigger_set()
250 spin_lock(&led_cdev->trigger->leddev_list_lock); in led_trigger_set()
251 list_del_rcu(&led_cdev->trig_list); in led_trigger_set()
252 spin_unlock(&led_cdev->trigger->leddev_list_lock); in led_trigger_set()
254 led_cdev->trigger = NULL; in led_trigger_set()
255 led_cdev->trigger_data = NULL; in led_trigger_set()
256 led_set_brightness(led_cdev, LED_OFF); in led_trigger_set()
263 void led_trigger_remove(struct led_classdev *led_cdev) in led_trigger_remove() argument
265 down_write(&led_cdev->trigger_lock); in led_trigger_remove()
266 led_trigger_set(led_cdev, NULL); in led_trigger_remove()
267 up_write(&led_cdev->trigger_lock); in led_trigger_remove()
271 static bool led_match_default_trigger(struct led_classdev *led_cdev, in led_match_default_trigger() argument
274 if (!strcmp(led_cdev->default_trigger, trig->name) && in led_match_default_trigger()
275 trigger_relevant(led_cdev, trig)) { in led_match_default_trigger()
276 led_cdev->flags |= LED_INIT_DEFAULT_TRIGGER; in led_match_default_trigger()
277 led_trigger_set(led_cdev, trig); in led_match_default_trigger()
284 void led_trigger_set_default(struct led_classdev *led_cdev) in led_trigger_set_default() argument
289 if (!led_cdev->default_trigger) in led_trigger_set_default()
292 if (!strcmp(led_cdev->default_trigger, "none")) { in led_trigger_set_default()
293 led_trigger_remove(led_cdev); in led_trigger_set_default()
298 down_write(&led_cdev->trigger_lock); in led_trigger_set_default()
300 found = led_match_default_trigger(led_cdev, trig); in led_trigger_set_default()
304 up_write(&led_cdev->trigger_lock); in led_trigger_set_default()
312 request_module_nowait("ledtrig:%s", led_cdev->default_trigger); in led_trigger_set_default()
320 struct led_classdev *led_cdev; in led_trigger_register() local
342 list_for_each_entry(led_cdev, &leds_list, node) { in led_trigger_register()
343 down_write(&led_cdev->trigger_lock); in led_trigger_register()
344 if (!led_cdev->trigger && led_cdev->default_trigger) in led_trigger_register()
345 led_match_default_trigger(led_cdev, trig); in led_trigger_register()
346 up_write(&led_cdev->trigger_lock); in led_trigger_register()
356 struct led_classdev *led_cdev; in led_trigger_unregister() local
368 list_for_each_entry(led_cdev, &leds_list, node) { in led_trigger_unregister()
369 down_write(&led_cdev->trigger_lock); in led_trigger_unregister()
370 if (led_cdev->trigger == trig) in led_trigger_unregister()
371 led_trigger_set(led_cdev, NULL); in led_trigger_unregister()
372 up_write(&led_cdev->trigger_lock); in led_trigger_unregister()
411 struct led_classdev *led_cdev; in led_trigger_event() local
419 list_for_each_entry_rcu(led_cdev, &trig->led_cdevs, trig_list) in led_trigger_event()
420 led_set_brightness(led_cdev, brightness); in led_trigger_event()
429 struct led_classdev *led_cdev; in led_mc_trigger_event() local
435 list_for_each_entry_rcu(led_cdev, &trig->led_cdevs, trig_list) { in led_mc_trigger_event()
436 if (!(led_cdev->flags & LED_MULTI_COLOR)) in led_mc_trigger_event()
439 led_mc_set_brightness(led_cdev, intensity_value, num_colors, brightness); in led_mc_trigger_event()
451 struct led_classdev *led_cdev; in led_trigger_blink_setup() local
457 list_for_each_entry_rcu(led_cdev, &trig->led_cdevs, trig_list) { in led_trigger_blink_setup()
459 led_blink_set_oneshot(led_cdev, &delay_on, &delay_off, in led_trigger_blink_setup()
462 led_blink_set_nosleep(led_cdev, delay_on, delay_off); in led_trigger_blink_setup()