[PATCH v6 4/9] leds: st1202: set all pattern PWM slots to full after clearing pattern
Manuel Fombuena <[email protected]>
| Newsgroups | org.kernel.vger.linux-leds,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <GV1PR08MB849765352C4031BD2D800207C5F52@GV1PR08MB8497.eurprd08.prod.outlook.com> |
pattern_clear() zeros all PWM registers then restores only Pattern0 to full duty cycle. Patterns 1-7 are left at zero. The LED1202 has a single global sequencer shared across all channels. If another channel starts the sequencer after this one has been cleared, the cleared channel cycles through its PWM steps — full brightness on step 0, dark for steps 1-7 — producing an unintended blink. Set all 8 PWM slots to ST1202_PATTERN_PWM_FULL and unify into a single loop from 0, ensuring the channel outputs steady ILED regardless of which sequencer step is active. Signed-off-by: Manuel Fombuena <[email protected]> Assisted-by: Claude:claude-sonnet-4-6 --- drivers/leds/leds-st1202.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/leds/leds-st1202.c b/drivers/leds/leds-st1202.c index b4adade49898..3203b3768ec5 100644 --- a/drivers/leds/leds-st1202.c +++ b/drivers/leds/leds-st1202.c @@ -35,6 +35,7 @@ #define ST1202_MILLIS_PATTERN_DUR_MIN 22 #define ST1202_PATTERN_DUR 0x16 #define ST1202_PATTERN_PWM 0x1E +#define ST1202_PATTERN_PWM_FULL 0x0FFF #define ST1202_PATTERN_REP 0x15 struct st1202_led { @@ -205,7 +206,7 @@ static int st1202_led_pattern_clear(struct led_classdev *ldev) return ret; for (int patt = 0; patt < ST1202_MAX_PATTERNS; patt++) { - ret = st1202_pwm_pattern_write(chip, led->led_num, patt, LED_OFF); + ret = st1202_pwm_pattern_write(chip, led->led_num, patt, ST1202_PATTERN_PWM_FULL); if (ret != 0) return ret; -- 2.55.0