Lines Matching refs:trig

31 trigger_relevant(struct led_classdev *led_cdev, struct led_trigger *trig)
33 return !trig->trigger_type || trig->trigger_type == led_cdev->trigger_type;
42 struct led_trigger *trig;
63 list_for_each_entry(trig, &trigger_list, next_trig) {
64 if (sysfs_streq(buf, trig->name) && trigger_relevant(led_cdev, trig)) {
66 led_trigger_set(led_cdev, trig);
102 struct led_trigger *trig;
109 list_for_each_entry(trig, &trigger_list, next_trig) {
112 if (!trigger_relevant(led_cdev, trig))
115 hit = led_cdev->trigger && !strcmp(led_cdev->trigger->name, trig->name);
119 trig->name, hit ? "]" : "");
166 int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig)
173 if (!led_cdev->trigger && !trig)
176 name = trig ? trig->name : "none";
199 if (trig) {
200 spin_lock(&trig->leddev_list_lock);
201 list_add_tail_rcu(&led_cdev->trig_list, &trig->led_cdevs);
202 spin_unlock(&trig->leddev_list_lock);
203 led_cdev->trigger = trig;
208 * Ensure the led_cdev is visible on trig->led_cdevs for this.
219 if (trig->activate)
220 ret = trig->activate(led_cdev);
222 led_set_brightness(led_cdev, trig->brightness);
226 ret = device_add_groups(led_cdev->dev, trig->groups);
246 if (trig->deactivate)
247 trig->deactivate(led_cdev);
272 struct led_trigger *trig)
274 if (!strcmp(led_cdev->default_trigger, trig->name) &&
275 trigger_relevant(led_cdev, trig)) {
277 led_trigger_set(led_cdev, trig);
286 struct led_trigger *trig;
299 list_for_each_entry(trig, &trigger_list, next_trig) {
300 found = led_match_default_trigger(led_cdev, trig);
318 int led_trigger_register(struct led_trigger *trig)
323 spin_lock_init(&trig->leddev_list_lock);
324 INIT_LIST_HEAD(&trig->led_cdevs);
329 if (!strcmp(_trig->name, trig->name) &&
330 (trig->trigger_type == _trig->trigger_type ||
331 !trig->trigger_type || !_trig->trigger_type)) {
337 list_add_tail(&trig->next_trig, &trigger_list);
345 led_match_default_trigger(led_cdev, trig);
354 void led_trigger_unregister(struct led_trigger *trig)
358 if (list_empty_careful(&trig->next_trig))
363 list_del_init(&trig->next_trig);
370 if (led_cdev->trigger == trig)
384 struct led_trigger *trig)
394 *dr = trig;
396 rc = led_trigger_register(trig);
408 void led_trigger_event(struct led_trigger *trig,
413 if (!trig)
416 trig->brightness = brightness;
419 list_for_each_entry_rcu(led_cdev, &trig->led_cdevs, trig_list)
425 void led_mc_trigger_event(struct led_trigger *trig,
431 if (!trig)
435 list_for_each_entry_rcu(led_cdev, &trig->led_cdevs, trig_list) {
445 static void led_trigger_blink_setup(struct led_trigger *trig,
453 if (!trig)
457 list_for_each_entry_rcu(led_cdev, &trig->led_cdevs, trig_list) {
467 void led_trigger_blink(struct led_trigger *trig,
471 led_trigger_blink_setup(trig, delay_on, delay_off, 0, 0);
475 void led_trigger_blink_oneshot(struct led_trigger *trig,
480 led_trigger_blink_setup(trig, delay_on, delay_off, 1, invert);
486 struct led_trigger *trig;
489 trig = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
491 if (trig) {
492 trig->name = name;
493 err = led_trigger_register(trig);
495 kfree(trig);
496 trig = NULL;
504 *tp = trig;
508 void led_trigger_unregister_simple(struct led_trigger *trig)
510 if (trig)
511 led_trigger_unregister(trig);
512 kfree(trig);