From: Uwe Kleine-König Date: Mon, 2 Jul 2018 20:05:23 +0000 (+0200) Subject: leds: triggers: handle .trigger_data and .activated() in the core X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a7d5904a6f44e0da05d62197521ec7d96cebb6aa;p=linux.git leds: triggers: handle .trigger_data and .activated() in the core This helps keeping these two fields consistent and drivers don't need to care for this themselves any more. Note that .activated isn't set to true automatically because that might confuse some triggers when deactivating (e.g. ledtrig-gpio). Signed-off-by: Uwe Kleine-König Acked-by: Pavel Machek Signed-off-by: Jacek Anaszewski --- diff --git a/drivers/leds/led-triggers.c b/drivers/leds/led-triggers.c index 3f3e8728d82c8..17d73db1456eb 100644 --- a/drivers/leds/led-triggers.c +++ b/drivers/leds/led-triggers.c @@ -129,6 +129,8 @@ int led_trigger_set(struct led_classdev *led_cdev, struct led_trigger *trig) led_cdev->trigger->deactivate(led_cdev); device_remove_groups(led_cdev->dev, led_cdev->trigger->groups); led_cdev->trigger = NULL; + led_cdev->trigger_data = NULL; + led_cdev->activated = false; led_set_brightness(led_cdev, LED_OFF); } if (trig) { @@ -170,6 +172,7 @@ err_add_groups: err_activate: led_cdev->trigger = NULL; + led_cdev->trigger_data = NULL; write_lock_irqsave(&led_cdev->trigger->leddev_list_lock, flags); list_del(&led_cdev->trig_list); write_unlock_irqrestore(&led_cdev->trigger->leddev_list_lock, flags);