Add a comment on why the code never sets on/off registers to zero. Reported-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> Analyzed-by: Russell King <linux@xxxxxxxxxxxxxxx> Signed-off-by: Baruch Siach <baruch@xxxxxxxxxx> --- drivers/gpio/gpio-mvebu.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c index 6b017854ce61..09780944bef9 100644 --- a/drivers/gpio/gpio-mvebu.c +++ b/drivers/gpio/gpio-mvebu.c @@ -706,6 +706,10 @@ static int mvebu_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm, do_div(val, NSEC_PER_SEC); if (val > UINT_MAX) return -EINVAL; + /* + * Zero on/off values don't work as expected. Experimentation shows + * that zero value is treated as 2^32. This behavior is not documented. + */ if (val) on = val; else -- 2.29.2