Lines Matching defs:pwm
19 #include <linux/pwm.h>
73 static int berlin_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
81 return pwm_set_chip_data(pwm, channel);
84 static void berlin_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
86 struct berlin_pwm_channel *channel = pwm_get_chip_data(pwm);
91 static int berlin_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
116 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_CONTROL);
121 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_CONTROL);
123 berlin_pwm_writel(bpc, pwm->hwpwm, duty, BERLIN_PWM_DUTY);
124 berlin_pwm_writel(bpc, pwm->hwpwm, period, BERLIN_PWM_TCNT);
130 struct pwm_device *pwm,
136 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_CONTROL);
143 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_CONTROL);
148 static int berlin_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
153 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_EN);
155 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_EN);
161 struct pwm_device *pwm)
166 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_EN);
168 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_EN);
171 static int berlin_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
175 bool enabled = pwm->state.enabled;
177 if (state->polarity != pwm->state.polarity) {
179 berlin_pwm_disable(chip, pwm);
183 err = berlin_pwm_set_polarity(chip, pwm, state->polarity);
190 berlin_pwm_disable(chip, pwm);
194 err = berlin_pwm_config(chip, pwm, state->duty_cycle, state->period);
199 return berlin_pwm_enable(chip, pwm);
212 { .compatible = "marvell,berlin-pwm" },
321 .name = "berlin-pwm",