Lines Matching refs: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_update_bits(jz->map, TCU_REG_TCSRc(pwm->hwpwm),
96 regmap_write(jz->map, TCU_REG_TESR, BIT(pwm->hwpwm));
101 static void jz4740_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
109 regmap_write(jz->map, TCU_REG_TDHRc(pwm->hwpwm), 0xffff);
110 regmap_write(jz->map, TCU_REG_TDFRc(pwm->hwpwm), 0x0);
117 regmap_update_bits(jz->map, TCU_REG_TCSRc(pwm->hwpwm),
121 regmap_write(jz->map, TCU_REG_TECR, BIT(pwm->hwpwm));
124 static int jz4740_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
127 struct jz4740_pwm_chip *jz4740 = to_jz4740(pwm->chip);
129 struct clk *clk = pwm_get_chip_data(pwm);
170 jz4740_pwm_disable(chip, pwm);
179 regmap_write(jz4740->map, TCU_REG_TCNTc(pwm->hwpwm), 0);
182 regmap_write(jz4740->map, TCU_REG_TDHRc(pwm->hwpwm), duty);
185 regmap_write(jz4740->map, TCU_REG_TDFRc(pwm->hwpwm), period);
188 regmap_update_bits(jz4740->map, TCU_REG_TCSRc(pwm->hwpwm),
205 regmap_update_bits(jz4740->map, TCU_REG_TCSRc(pwm->hwpwm),
208 regmap_update_bits(jz4740->map, TCU_REG_TCSRc(pwm->hwpwm),
213 jz4740_pwm_enable(chip, pwm);
274 { .compatible = "ingenic,jz4740-pwm", .data = &jz4740_soc_info },
275 { .compatible = "ingenic,jz4725b-pwm", .data = &jz4725b_soc_info },
283 .name = "jz4740-pwm",
293 MODULE_ALIAS("platform:jz4740-pwm");