Lines Matching refs:pwm
29 #include <linux/pwm.h>
227 static void atmel_pwm_update_cdty(struct pwm_chip *chip, struct pwm_device *pwm,
235 val = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm, PWM_CMR);
237 atmel_pwm_ch_writel(atmel_pwm, pwm->hwpwm, PWM_CMR, val);
240 atmel_pwm_ch_writel(atmel_pwm, pwm->hwpwm,
242 atmel_pwm_set_pending(atmel_pwm, pwm->hwpwm);
246 struct pwm_device *pwm,
251 atmel_pwm_ch_writel(atmel_pwm, pwm->hwpwm,
253 atmel_pwm_ch_writel(atmel_pwm, pwm->hwpwm,
257 static void atmel_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm,
263 atmel_pwm_wait_nonpending(atmel_pwm, pwm->hwpwm);
265 atmel_pwm_writel(atmel_pwm, PWM_DIS, 1 << pwm->hwpwm);
273 while ((atmel_pwm_readl(atmel_pwm, PWM_SR) & (1 << pwm->hwpwm)) &&
281 static int atmel_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
292 if (pwm->state.enabled &&
293 pwm->state.polarity == state->polarity &&
294 pwm->state.period == state->period) {
295 u32 cmr = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm, PWM_CMR);
297 cprd = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm,
302 atmel_pwm_update_cdty(chip, pwm, cdty);
316 if (pwm->state.enabled) {
317 atmel_pwm_disable(chip, pwm, false);
327 val = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm, PWM_CMR);
333 atmel_pwm_ch_writel(atmel_pwm, pwm->hwpwm, PWM_CMR, val);
334 atmel_pwm_set_cprd_cdty(chip, pwm, cprd, cdty);
335 atmel_pwm_writel(atmel_pwm, PWM_ENA, 1 << pwm->hwpwm);
336 } else if (pwm->state.enabled) {
337 atmel_pwm_disable(chip, pwm, true);
343 static int atmel_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
350 cmr = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm, PWM_CMR);
352 if (sr & (1 << pwm->hwpwm)) {
359 cprd = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm,
366 atmel_pwm_wait_nonpending(atmel_pwm, pwm->hwpwm);
368 cdty = atmel_pwm_ch_readl(atmel_pwm, pwm->hwpwm,
433 .compatible = "atmel,at91sam9rl-pwm",
436 .compatible = "atmel,sama5d3-pwm",
439 .compatible = "atmel,sama5d2-pwm",
442 .compatible = "microchip,sam9x60-pwm",
470 "failed to enable clock for pwm %pe\n",
533 .name = "atmel-pwm",
540 MODULE_ALIAS("platform:atmel-pwm");