diff mbox series

[leds,+,devicetree,12/13] leds: tca6507: set registers to zero before LEDs/GPIOs registration

Message ID 20200919221548.29984-13-marek.behun@nic.cz
State New
Headers show
Series leds: tca6507 cleanup | expand

Commit Message

Marek BehĂșn Sept. 19, 2020, 10:15 p.m. UTC
The LED registering functions can internally call brightness changes. If
we zero the registers only after LEDs are registered, then the values
set by registration code are lost.

Therefore set chip's registers to zero before registering LEDs/GPIOs.

Signed-off-by: Marek BehĂșn <marek.behun@nic.cz>
Cc: NeilBrown <neilb@suse.de>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: H. Nikolaus Schaller <hns@goldelico.com>
---
 drivers/leds/leds-tca6507.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/drivers/leds/leds-tca6507.c b/drivers/leds/leds-tca6507.c
index e32e628f2e460..ad4af6b6e94c7 100644
--- a/drivers/leds/leds-tca6507.c
+++ b/drivers/leds/leds-tca6507.c
@@ -732,14 +732,14 @@  static int tca6507_probe(struct i2c_client *client,
 	spin_lock_init(&tca->lock);
 	i2c_set_clientdata(client, tca);
 
+	/* set all registers to known state - zero */
+	tca->reg_set = 0x7f;
+	tca6507_work(&tca->work);
+
 	err = tca6507_register_leds_and_gpios(dev, tca);
 	if (err)
 		return err;
 
-	/* set all registers to known state - zero */
-	tca->reg_set = 0x7f;
-	schedule_work(&tca->work);
-
 	return 0;
 }