mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
leds: leds-lp5569: Better handle enabling clock internal setting
Better handle enabling clock internal setting. In further testing it was notice that internal clock config MUST be set before clock output config or the LED CHIP might stop working. This wasn't documented and was actually found on devices that have 2 chip chained where one chip provide clock for the other. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> Link: https://lore.kernel.org/r/20240712004556.15601-2-ansuelsmth@gmail.com Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
parent
9c5fd27925
commit
2a498d626d
1 changed files with 10 additions and 5 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue