[PATCH v2 5/7] leds: aw2013: Move assignment of chip->num_leds
From: Paul Sajna
Date: Mon Oct 05 2026 - 23:49:14 EST
devm_led_classdev_register_ext() executes default triggers
synchronously, which call aw20xx_brightness_set().
aw20xx_chip_in_use() silently returns false, skipping chip enablement and
causing unbalanced regulator disables while probe is still running.
Increment chip->num_leds inside the loop, so that each call gets the
correct value for it's default trigger.
Signed-off-by: Paul Sajna <sajattack@xxxxxxxxxxxxxxxx>
---
drivers/leds/leds-aw2013.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/leds/leds-aw2013.c b/drivers/leds/leds-aw2013.c
index 705de95c6eac..5d242e2bab60 100644
--- a/drivers/leds/leds-aw2013.c
+++ b/drivers/leds/leds-aw2013.c
@@ -399,7 +399,7 @@ static int aw20xx_probe_dt(struct aw20xx *chip)
led->cdev.brightness_set_blocking = aw20xx_brightness_set;
led->cdev.blink_set = aw20xx_blink_set;
-
+ chip->num_leds = i + 1;
ret = devm_led_classdev_register_ext(&chip->client->dev,
&led->cdev, &init_data);
if (ret < 0)
@@ -411,8 +411,6 @@ static int aw20xx_probe_dt(struct aw20xx *chip)
if (!count)
return -EINVAL;
- chip->num_leds = i;
-
return 0;
}
--
2.55.0