Lines Matching defs:pwm
29 #include <linux/pwm.h>
56 static int sunplus_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
63 if (state->polarity != pwm->state.polarity)
67 /* disable pwm channel output */
69 mode0 &= ~SP7021_PWM_MODE0_PWMEN(pwm->hwpwm);
71 /* disable pwm channel clk source */
73 mode1 &= ~SP7021_PWM_MODE1_CNT_EN(pwm->hwpwm);
101 writel(dd_freq, priv->base + SP7021_PWM_FREQ(pwm->hwpwm));
103 /* cal and set pwm duty */
105 mode0 |= SP7021_PWM_MODE0_PWMEN(pwm->hwpwm);
107 mode1 |= SP7021_PWM_MODE1_CNT_EN(pwm->hwpwm);
110 mode0 |= SP7021_PWM_MODE0_BYPASS(pwm->hwpwm);
111 duty = SP7021_PWM_DUTY_DD_SEL(pwm->hwpwm) | SP7021_PWM_DUTY_MAX;
113 mode0 &= ~SP7021_PWM_MODE0_BYPASS(pwm->hwpwm);
119 duty = SP7021_PWM_DUTY_DD_SEL(pwm->hwpwm) | duty;
121 writel(duty, priv->base + SP7021_PWM_DUTY(pwm->hwpwm));
128 static int sunplus_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
137 if (mode0 & BIT(pwm->hwpwm)) {
139 dd_freq = readl(priv->base + SP7021_PWM_FREQ(pwm->hwpwm));
140 duty = readl(priv->base + SP7021_PWM_DUTY(pwm->hwpwm));
193 "get pwm clock failed\n");
219 { .compatible = "sunplus,sp7021-pwm", },
227 .name = "sunplus-pwm",