Loading drivers/pwm/pwm-spear.c +29 −4 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ static inline void spear_pwm_writel(struct spear_pwm_chip *chip, } static int spear_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, int duty_ns, int period_ns) u64 duty_ns, u64 period_ns) { struct spear_pwm_chip *pc = to_spear_pwm_chip(chip); u64 val, div, clk_rate; Loading Loading @@ -163,10 +163,35 @@ static void spear_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm) clk_disable(pc->clk); } static int spear_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) spear_pwm_disable(chip, pwm); return 0; } if (state->period != pwm->state.period || state->duty_cycle != pwm->state.duty_cycle) { err = spear_pwm_config(chip, pwm, state->duty_cycle, state->period); if (err) return err; } if (!pwm->state.enabled) return spear_pwm_enable(chip, pwm); return 0; } static const struct pwm_ops spear_pwm_ops = { .config = spear_pwm_config, .enable = spear_pwm_enable, .disable = spear_pwm_disable, .apply = spear_pwm_apply, .owner = THIS_MODULE, }; Loading Loading
drivers/pwm/pwm-spear.c +29 −4 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ static inline void spear_pwm_writel(struct spear_pwm_chip *chip, } static int spear_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, int duty_ns, int period_ns) u64 duty_ns, u64 period_ns) { struct spear_pwm_chip *pc = to_spear_pwm_chip(chip); u64 val, div, clk_rate; Loading Loading @@ -163,10 +163,35 @@ static void spear_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm) clk_disable(pc->clk); } static int spear_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) spear_pwm_disable(chip, pwm); return 0; } if (state->period != pwm->state.period || state->duty_cycle != pwm->state.duty_cycle) { err = spear_pwm_config(chip, pwm, state->duty_cycle, state->period); if (err) return err; } if (!pwm->state.enabled) return spear_pwm_enable(chip, pwm); return 0; } static const struct pwm_ops spear_pwm_ops = { .config = spear_pwm_config, .enable = spear_pwm_enable, .disable = spear_pwm_disable, .apply = spear_pwm_apply, .owner = THIS_MODULE, }; Loading