Lines Matching refs:pwm

41 #include <linux/pwm.h>
68 static void mchp_core_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm,
76 * 0-7 and the upper reg 8-15. Check if the pwm is in the upper reg
79 reg_offset = MCHPCOREPWM_EN(pwm->hwpwm >> 3);
80 shift = pwm->hwpwm & 7;
87 mchp_core_pwm->channel_enabled &= ~BIT(pwm->hwpwm);
88 mchp_core_pwm->channel_enabled |= enable << pwm->hwpwm;
95 if (mchp_core_pwm->sync_update_mask & (1 << pwm->hwpwm))
148 static void mchp_core_pwm_apply_duty(struct pwm_chip *chip, struct pwm_device *pwm,
178 writel_relaxed(posedge, mchp_core_pwm->base + MCHPCOREPWM_POSEDGE(pwm->hwpwm));
179 writel_relaxed(negedge, mchp_core_pwm->base + MCHPCOREPWM_NEGEDGE(pwm->hwpwm));
271 static int mchp_core_pwm_apply_locked(struct pwm_chip *chip, struct pwm_device *pwm,
282 mchp_core_pwm_enable(chip, pwm, false, pwm->state.period);
308 period_locked = mchp_core_pwm->channel_enabled & ~(1 << pwm->hwpwm);
350 mchp_core_pwm_apply_duty(chip, pwm, state, duty_steps, period_steps);
352 mchp_core_pwm_enable(chip, pwm, true, pwm->state.period);
357 static int mchp_core_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
362 mchp_core_pwm_wait_for_sync_update(mchp_core_pwm, pwm->hwpwm);
364 return mchp_core_pwm_apply_locked(chip, pwm, state);
367 static int mchp_core_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
375 mchp_core_pwm_wait_for_sync_update(mchp_core_pwm, pwm->hwpwm);
377 if (mchp_core_pwm->channel_enabled & (1 << pwm->hwpwm))
404 posedge = readb_relaxed(mchp_core_pwm->base + MCHPCOREPWM_POSEDGE(pwm->hwpwm));
405 negedge = readb_relaxed(mchp_core_pwm->base + MCHPCOREPWM_NEGEDGE(pwm->hwpwm));
481 .name = "mchp-core-pwm",