[PATCH v3 4/6] leds: aw2013: Move assignment of chip->num_leds
From: Paul Sajna
Date: Tue Oct 13 2026 - 01:42:33 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, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/leds/leds-aw2013.c b/drivers/leds/leds-aw2013.c
index 05d61f4e5804..3b2be960c04d 100644
--- a/drivers/leds/leds-aw2013.c
+++ b/drivers/leds/leds-aw2013.c
@@ -398,6 +398,8 @@ static int aw2013_probe_dt(struct aw2013 *chip)
led->cdev.brightness_set_blocking = aw2013_brightness_set;
led->cdev.blink_set = aw2013_blink_set;
+ chip->num_leds = i + 1;
+
ret = devm_led_classdev_register_ext(&chip->client->dev,
&led->cdev, &init_data);
if (ret < 0)
@@ -409,8 +411,6 @@ static int aw2013_probe_dt(struct aw2013 *chip)
if (!count)
return -EINVAL;
- chip->num_leds = i;
-
return 0;
}
--
2.55.0