Lines Matching refs:pwm_chip
36 struct pwm_chip chip;
66 static inline struct hibvt_pwm_chip *to_hibvt_pwm_chip(struct pwm_chip *chip)
83 static void hibvt_pwm_enable(struct pwm_chip *chip, struct pwm_device *pwm)
91 static void hibvt_pwm_disable(struct pwm_chip *chip, struct pwm_device *pwm)
99 static void hibvt_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm,
117 static void hibvt_pwm_set_polarity(struct pwm_chip *chip,
131 static int hibvt_pwm_get_state(struct pwm_chip *chip, struct pwm_device *pwm,
154 static int hibvt_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
195 struct hibvt_pwm_chip *pwm_chip;
198 pwm_chip = devm_kzalloc(&pdev->dev, sizeof(*pwm_chip), GFP_KERNEL);
199 if (pwm_chip == NULL)
202 pwm_chip->clk = devm_clk_get(&pdev->dev, NULL);
203 if (IS_ERR(pwm_chip->clk)) {
205 PTR_ERR(pwm_chip->clk));
206 return PTR_ERR(pwm_chip->clk);
209 pwm_chip->chip.ops = &hibvt_pwm_ops;
210 pwm_chip->chip.dev = &pdev->dev;
211 pwm_chip->chip.npwm = soc->num_pwms;
212 pwm_chip->soc = soc;
214 pwm_chip->base = devm_platform_ioremap_resource(pdev, 0);
215 if (IS_ERR(pwm_chip->base))
216 return PTR_ERR(pwm_chip->base);
218 ret = clk_prepare_enable(pwm_chip->clk);
222 pwm_chip->rstc = devm_reset_control_get_exclusive(&pdev->dev, NULL);
223 if (IS_ERR(pwm_chip->rstc)) {
224 clk_disable_unprepare(pwm_chip->clk);
225 return PTR_ERR(pwm_chip->rstc);
228 reset_control_assert(pwm_chip->rstc);
230 reset_control_deassert(pwm_chip->rstc);
232 ret = pwmchip_add(&pwm_chip->chip);
234 clk_disable_unprepare(pwm_chip->clk);
238 for (i = 0; i < pwm_chip->chip.npwm; i++) {
239 hibvt_pwm_set_bits(pwm_chip->base, PWM_CTRL_ADDR(i),
243 platform_set_drvdata(pdev, pwm_chip);
250 struct hibvt_pwm_chip *pwm_chip;
252 pwm_chip = platform_get_drvdata(pdev);
254 pwmchip_remove(&pwm_chip->chip);
256 reset_control_assert(pwm_chip->rstc);
258 reset_control_deassert(pwm_chip->rstc);
260 clk_disable_unprepare(pwm_chip->clk);