Skip to content

Commit

Permalink
pwm: Let pwm_get_state() return the last implemented state
Browse files Browse the repository at this point in the history
When pwm_apply_state() is called the lowlevel driver usually has to
apply some rounding because the hardware doesn't support nanosecond
resolution. So let pwm_get_state() return the actually implemented state
instead of the last applied one if possible.

Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
  • Loading branch information
Uwe Kleine-König authored and Thierry Reding committed Sep 20, 2019
1 parent fc3c551 commit 01ccf90
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion drivers/pwm/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,14 @@ int pwm_apply_state(struct pwm_device *pwm, struct pwm_state *state)
if (err)
return err;

pwm->state = *state;
/*
* .apply might have to round some values in *state, if possible
* read the actually implemented value back.
*/
if (chip->ops->get_state)
chip->ops->get_state(chip, pwm, &pwm->state);
else
pwm->state = *state;
} else {
/*
* FIXME: restore the initial state in case of error.
Expand Down

0 comments on commit 01ccf90

Please sign in to comment.