Skip to content

Commit 8179b06

Browse files
jwrdegoedesre
authored andcommitted
power: supply: leds: Add activate() callback to triggers
Add an activate() callback to the power-supply LED triggers so that the LED being activated will properly reflect the current power-supply state for power-supply devices which are already fully registered when the trigger gets activated. This fixes e.g. wrong LED state (1) when the LED gets registered after the power-supply device. 1) Until the psy driver has a reason to call power_supply_changed() which may take quite a while Signed-off-by: Hans de Goede <[email protected]> Reviewed-by: Andy Shevchenko <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Sebastian Reichel <[email protected]>
1 parent 6c951a8 commit 8179b06

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

drivers/power/supply/power_supply_leds.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,16 @@ struct power_supply_led_trigger {
2727
#define trigger_to_psy_trigger(trigger) \
2828
container_of(trigger, struct power_supply_led_trigger, trig)
2929

30+
static int power_supply_led_trigger_activate(struct led_classdev *led_cdev)
31+
{
32+
struct power_supply_led_trigger *psy_trig =
33+
trigger_to_psy_trigger(led_cdev->trigger);
34+
35+
/* Sync current power-supply state to LED being activated */
36+
power_supply_update_leds(psy_trig->psy);
37+
return 0;
38+
}
39+
3040
static int power_supply_register_led_trigger(struct power_supply *psy,
3141
const char *name_template,
3242
struct led_trigger **tp, int *err)
@@ -46,6 +56,7 @@ static int power_supply_register_led_trigger(struct power_supply *psy,
4656
if (!psy_trig->trig.name)
4757
goto err_free_trigger;
4858

59+
psy_trig->trig.activate = power_supply_led_trigger_activate;
4960
psy_trig->psy = psy;
5061

5162
ret = led_trigger_register(&psy_trig->trig);

0 commit comments

Comments
 (0)