summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/leds/leds-lp5569.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/leds/leds-lp5569.c b/drivers/leds/leds-lp5569.c
index 2253c19f0cd2..c976b10b6558 100644
--- a/drivers/leds/leds-lp5569.c
+++ b/drivers/leds/leds-lp5569.c
@@ -180,20 +180,25 @@ static int lp5569_post_init_device(struct lp55xx_chip *chip)
val = LP5569_DEFAULT_CONFIG;
val |= FIELD_PREP(LP5569_CP_MODE_MASK, chip->pdata->charge_pump_mode);
+ ret = lp55xx_write(chip, LP5569_REG_MISC, val);
+ if (ret)
+ return ret;
if (chip->pdata->clock_mode == LP55XX_CLOCK_INT) {
+ /* Internal clock MUST be configured before CLK output */
+ ret = lp55xx_update_bits(chip, LP5569_REG_MISC,
+ LP5569_INTERNAL_CLK,
+ LP5569_INTERNAL_CLK);
+ if (ret)
+ return ret;
+
ret = lp55xx_update_bits(chip, LP5569_REG_IO_CONTROL,
LP5569_CLK_OUTPUT,
LP5569_CLK_OUTPUT);
if (ret)
return ret;
-
- val |= LP5569_INTERNAL_CLK;
}
- ret = lp55xx_write(chip, LP5569_REG_MISC, val);
- if (ret)
- return ret;
return lp5569_init_program_engine(chip);
}