mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
pwm: sun4i: Properly check current state
Correctly extract the prescaler value from CTRL_REG before comparing it
to PWM_PRESCAL_MASK.
Also, check that both PWM_CLK_GATING and PWM_EN to ensure the PWM is
enabled instead of relying on only one of those.
Fixes: 93e0dfb2c5
("pwm: sun4i: Improve hardware read out")
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
parent
120cc2fff4
commit
989ae7a5b2
1 changed files with 4 additions and 2 deletions
|
@ -117,7 +117,8 @@ static void sun4i_pwm_get_state(struct pwm_chip *chip,
|
|||
|
||||
val = sun4i_pwm_readl(sun4i_pwm, PWM_CTRL_REG);
|
||||
|
||||
if ((val == PWM_PRESCAL_MASK) && sun4i_pwm->data->has_prescaler_bypass)
|
||||
if ((PWM_REG_PRESCAL(val, pwm->hwpwm) == PWM_PRESCAL_MASK) &&
|
||||
sun4i_pwm->data->has_prescaler_bypass)
|
||||
prescaler = 1;
|
||||
else
|
||||
prescaler = prescaler_table[PWM_REG_PRESCAL(val, pwm->hwpwm)];
|
||||
|
@ -130,7 +131,8 @@ static void sun4i_pwm_get_state(struct pwm_chip *chip,
|
|||
else
|
||||
state->polarity = PWM_POLARITY_INVERSED;
|
||||
|
||||
if (val & BIT_CH(PWM_CLK_GATING | PWM_EN, pwm->hwpwm))
|
||||
if ((val & BIT_CH(PWM_CLK_GATING | PWM_EN, pwm->hwpwm)) ==
|
||||
BIT_CH(PWM_CLK_GATING | PWM_EN, pwm->hwpwm))
|
||||
state->enabled = true;
|
||||
else
|
||||
state->enabled = false;
|
||||
|
|
Loading…
Reference in a new issue