Lines Matching defs:pwm

20 #include <linux/pwm.h>
44 "ingenic,pwm-channels-mask",
50 static int jz4740_pwm_request(struct pwm_chip *chip, struct pwm_device *pwm)
57 if (!jz4740_pwm_can_use_chn(jz, pwm->hwpwm))
60 snprintf(name, sizeof(name), "timer%u", pwm->hwpwm);
74 pwm_set_chip_data(pwm, clk);
79 static void jz4740_pwm_free(struct pwm_chip *chip, struct pwm_device *pwm)
81 struct clk *clk = pwm_get_chip_data(pwm);
87 static int jz4740_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
92 regmap_set_bits(jz->map, TCU_REG_TCSRc(pwm->hwpwm), TCU_TCSR_PWM_EN);
95 regmap_write(jz->map, TCU_REG_TESR, BIT(pwm->hwpwm));
100 static void jz4740_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
108 regmap_write(jz->map, TCU_REG_TDHRc(pwm->hwpwm), 0xffff);
109 regmap_write(jz->map, TCU_REG_TDFRc(pwm->hwpwm), 0x0);
116 regmap_clear_bits(jz->map, TCU_REG_TCSRc(pwm->hwpwm), TCU_TCSR_PWM_EN);
119 regmap_write(jz->map, TCU_REG_TECR, BIT(pwm->hwpwm));
122 static int jz4740_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
125 struct jz4740_pwm_chip *jz4740 = to_jz4740(pwm->chip);
127 struct clk *clk = pwm_get_chip_data(pwm);
168 jz4740_pwm_disable(chip, pwm);
177 regmap_write(jz4740->map, TCU_REG_TCNTc(pwm->hwpwm), 0);
180 regmap_write(jz4740->map, TCU_REG_TDHRc(pwm->hwpwm), duty);
183 regmap_write(jz4740->map, TCU_REG_TDFRc(pwm->hwpwm), period);
186 regmap_set_bits(jz4740->map, TCU_REG_TCSRc(pwm->hwpwm),
203 regmap_update_bits(jz4740->map, TCU_REG_TCSRc(pwm->hwpwm),
206 regmap_update_bits(jz4740->map, TCU_REG_TCSRc(pwm->hwpwm),
211 jz4740_pwm_enable(chip, pwm);
263 { .compatible = "ingenic,jz4740-pwm", .data = &jz4740_soc_info },
264 { .compatible = "ingenic,jz4725b-pwm", .data = &jz4725b_soc_info },
265 { .compatible = "ingenic,x1000-pwm", .data = &x1000_soc_info },
272 .name = "jz4740-pwm",
281 MODULE_ALIAS("platform:jz4740-pwm");