Skip to content

Commit

Permalink
pwm: img: Implement .apply() callback
Browse files Browse the repository at this point in the history
To eventually get rid of all legacy drivers convert this driver to the
modern world implementing .apply(). This just pushes down a slightly
optimized variant of how legacy drivers are handled in the core.

Signed-off-by: Uwe Kleine-König <[email protected]>
Tested-by: Hauke Mehrtens <[email protected]>
Signed-off-by: Thierry Reding <[email protected]>
  • Loading branch information
Uwe Kleine-König authored and thierryreding committed Nov 17, 2021
1 parent 5e93d77 commit 0ee11b8
Showing 1 changed file with 26 additions and 3 deletions.
29 changes: 26 additions & 3 deletions drivers/pwm/pwm-img.c
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,33 @@ static void img_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
pm_runtime_put_autosuspend(chip->dev);
}

static int img_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
const struct pwm_state *state)
{
int err;

if (state->polarity != PWM_POLARITY_NORMAL)
return -EINVAL;

if (!state->enabled) {
if (pwm->state.enabled)
img_pwm_disable(chip, pwm);

return 0;
}

err = img_pwm_config(pwm->chip, pwm, state->duty_cycle, state->period);
if (err)
return err;

if (!pwm->state.enabled)
err = img_pwm_enable(chip, pwm);

return err;
}

static const struct pwm_ops img_pwm_ops = {
.config = img_pwm_config,
.enable = img_pwm_enable,
.disable = img_pwm_disable,
.apply = img_pwm_apply,
.owner = THIS_MODULE,
};

Expand Down

0 comments on commit 0ee11b8

Please sign in to comment.