[PATCH v2 05/10] leds: st1202: reset PAT_REP to POR default in pattern_clear
From: Manuel Fombuena
Date: Sun May 24 2026 - 18:27:00 EST
The Pattern Sequence Repetition register (PAT_REP) is not reset when
clearing a pattern. This leaves a stale repeat count in the register,
most critically 0xFF if the previous pattern was set to infinite loop,
which will be picked up by a subsequent pattern_set() call in the
window between pattern_clear() returning and pattern_set() writing its
own value.
Reset PAT_REP to its power-on reset default of 1 in pattern_clear() to
ensure a clean state.
Signed-off-by: Manuel Fombuena <fombuena@xxxxxxxxxxx>
Assisted-by: Claude:claude-sonnet-4-6
---
drivers/leds/leds-st1202.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/leds/leds-st1202.c b/drivers/leds/leds-st1202.c
index 1ca77fbe4ec9..9c1ae35dcb4c 100644
--- a/drivers/leds/leds-st1202.c
+++ b/drivers/leds/leds-st1202.c
@@ -204,6 +204,10 @@ static int st1202_led_pattern_clear(struct led_classdev *ldev)
if (ret != 0)
return ret;
+ ret = st1202_write_reg(chip, ST1202_PATTERN_REP, 1);
+ if (ret != 0)
+ return ret;
+
for (int patt = 0; patt < ST1202_MAX_PATTERNS; patt++) {
ret = st1202_pwm_pattern_write(chip, led->led_num, patt, LED_OFF);
if (ret != 0)
--
2.54.0