mirror of
https://github.com/torvalds/linux.git
synced 2024-12-29 14:21:47 +00:00
pwm: tiecap: Ensure configuring period and duty_cycle isn't wrongly skipped
As the last call to ecap_pwm_apply() might have exited early if
state->enabled was false, the values for period and duty_cycle stored in
pwm->state might not have been written to hardware and it must be
ensured that they are configured before enabling the PWM.
Fixes: 0ca7acd847
("pwm: tiecap: Implement .apply() callback")
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
parent
fe8255f80b
commit
25f70b8f3d
@ -189,16 +189,13 @@ static int ecap_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (state->period != pwm->state.period ||
|
||||
state->duty_cycle != pwm->state.duty_cycle) {
|
||||
if (state->period > NSEC_PER_SEC)
|
||||
return -ERANGE;
|
||||
if (state->period > NSEC_PER_SEC)
|
||||
return -ERANGE;
|
||||
|
||||
err = ecap_pwm_config(chip, pwm, state->duty_cycle,
|
||||
state->period, enabled);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
err = ecap_pwm_config(chip, pwm, state->duty_cycle,
|
||||
state->period, enabled);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
if (!enabled)
|
||||
return ecap_pwm_enable(chip, pwm);
|
||||
|
Loading…
Reference in New Issue
Block a user