Commit 2a498d62 authored by Christian Marangi's avatar Christian Marangi Committed by Lee Jones

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: default avatarChristian Marangi <ansuelsmth@gmail.com>
Link: https://lore.kernel.org/r/20240712004556.15601-2-ansuelsmth@gmail.comSigned-off-by: default avatarLee Jones <lee@kernel.org>
parent 9c5fd279
......@@ -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);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment