Lines Matching refs:pc

87 static inline u32 pwm_readl(struct tegra_pwm_chip *pc, unsigned int offset)
89 return readl(pc->regs + (offset << 4));
92 static inline void pwm_writel(struct tegra_pwm_chip *pc, unsigned int offset, u32 value)
94 writel(value, pc->regs + (offset << 4));
100 struct tegra_pwm_chip *pc = to_tegra_pwm_chip(chip);
119 if (period_ns < pc->min_period_ns)
135 if (pc->soc->num_channels == 1) {
150 if (required_clk_rate > clk_round_rate(pc->clk, required_clk_rate))
161 err = dev_pm_opp_set_rate(pc->dev, required_clk_rate);
166 pc->clk_rate = clk_get_rate(pc->clk);
170 rate = mul_u64_u64_div_u64(pc->clk_rate, period_ns,
197 err = pm_runtime_resume_and_get(pc->dev);
203 pwm_writel(pc, pwm->hwpwm, val);
209 pm_runtime_put(pc->dev);
216 struct tegra_pwm_chip *pc = to_tegra_pwm_chip(chip);
220 rc = pm_runtime_resume_and_get(pc->dev);
224 val = pwm_readl(pc, pwm->hwpwm);
226 pwm_writel(pc, pwm->hwpwm, val);
233 struct tegra_pwm_chip *pc = to_tegra_pwm_chip(chip);
236 val = pwm_readl(pc, pwm->hwpwm);
238 pwm_writel(pc, pwm->hwpwm, val);
240 pm_runtime_put_sync(pc->dev);
276 struct tegra_pwm_chip *pc;
279 pc = devm_kzalloc(&pdev->dev, sizeof(*pc), GFP_KERNEL);
280 if (!pc)
283 pc->soc = of_device_get_match_data(&pdev->dev);
284 pc->dev = &pdev->dev;
286 pc->regs = devm_platform_ioremap_resource(pdev, 0);
287 if (IS_ERR(pc->regs))
288 return PTR_ERR(pc->regs);
290 platform_set_drvdata(pdev, pc);
292 pc->clk = devm_clk_get(&pdev->dev, NULL);
293 if (IS_ERR(pc->clk))
294 return PTR_ERR(pc->clk);
306 ret = dev_pm_opp_set_rate(pc->dev, pc->soc->max_frequency);
317 pc->clk_rate = clk_get_rate(pc->clk);
320 pc->min_period_ns =
321 (NSEC_PER_SEC / (pc->soc->max_frequency >> PWM_DUTY_WIDTH)) + 1;
323 pc->rst = devm_reset_control_get_exclusive(&pdev->dev, "pwm");
324 if (IS_ERR(pc->rst)) {
325 ret = PTR_ERR(pc->rst);
330 reset_control_deassert(pc->rst);
332 pc->chip.dev = &pdev->dev;
333 pc->chip.ops = &tegra_pwm_ops;
334 pc->chip.npwm = pc->soc->num_channels;
336 ret = pwmchip_add(&pc->chip);
339 reset_control_assert(pc->rst);
354 struct tegra_pwm_chip *pc = platform_get_drvdata(pdev);
356 pwmchip_remove(&pc->chip);
358 reset_control_assert(pc->rst);
365 struct tegra_pwm_chip *pc = dev_get_drvdata(dev);
368 clk_disable_unprepare(pc->clk);
372 clk_prepare_enable(pc->clk);
381 struct tegra_pwm_chip *pc = dev_get_drvdata(dev);
388 err = clk_prepare_enable(pc->clk);