Lines Matching defs:bpc
60 static inline u32 berlin_pwm_readl(struct berlin_pwm_chip *bpc,
63 return readl_relaxed(bpc->base + channel * 0x10 + offset);
66 static inline void berlin_pwm_writel(struct berlin_pwm_chip *bpc,
70 writel_relaxed(value, bpc->base + channel * 0x10 + offset);
94 struct berlin_pwm_chip *bpc = to_berlin_pwm_chip(chip);
99 cycles = clk_get_rate(bpc->clk);
116 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_CONTROL);
121 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_CONTROL);
123 berlin_pwm_writel(bpc, pwm->hwpwm, duty, BERLIN_PWM_DUTY);
124 berlin_pwm_writel(bpc, pwm->hwpwm, period, BERLIN_PWM_TCNT);
133 struct berlin_pwm_chip *bpc = to_berlin_pwm_chip(chip);
136 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_CONTROL);
143 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_CONTROL);
150 struct berlin_pwm_chip *bpc = to_berlin_pwm_chip(chip);
153 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_EN);
155 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_EN);
163 struct berlin_pwm_chip *bpc = to_berlin_pwm_chip(chip);
166 value = berlin_pwm_readl(bpc, pwm->hwpwm, BERLIN_PWM_EN);
168 berlin_pwm_writel(bpc, pwm->hwpwm, value, BERLIN_PWM_EN);
219 struct berlin_pwm_chip *bpc;
222 bpc = devm_kzalloc(&pdev->dev, sizeof(*bpc), GFP_KERNEL);
223 if (!bpc)
226 bpc->base = devm_platform_ioremap_resource(pdev, 0);
227 if (IS_ERR(bpc->base))
228 return PTR_ERR(bpc->base);
230 bpc->clk = devm_clk_get(&pdev->dev, NULL);
231 if (IS_ERR(bpc->clk))
232 return PTR_ERR(bpc->clk);
234 ret = clk_prepare_enable(bpc->clk);
238 bpc->chip.dev = &pdev->dev;
239 bpc->chip.ops = &berlin_pwm_ops;
240 bpc->chip.npwm = 4;
242 ret = pwmchip_add(&bpc->chip);
245 clk_disable_unprepare(bpc->clk);
249 platform_set_drvdata(pdev, bpc);
256 struct berlin_pwm_chip *bpc = platform_get_drvdata(pdev);
258 pwmchip_remove(&bpc->chip);
260 clk_disable_unprepare(bpc->clk);
266 struct berlin_pwm_chip *bpc = dev_get_drvdata(dev);
269 for (i = 0; i < bpc->chip.npwm; i++) {
272 channel = pwm_get_chip_data(&bpc->chip.pwms[i]);
276 channel->enable = berlin_pwm_readl(bpc, i, BERLIN_PWM_ENABLE);
277 channel->ctrl = berlin_pwm_readl(bpc, i, BERLIN_PWM_CONTROL);
278 channel->duty = berlin_pwm_readl(bpc, i, BERLIN_PWM_DUTY);
279 channel->tcnt = berlin_pwm_readl(bpc, i, BERLIN_PWM_TCNT);
282 clk_disable_unprepare(bpc->clk);
289 struct berlin_pwm_chip *bpc = dev_get_drvdata(dev);
293 ret = clk_prepare_enable(bpc->clk);
297 for (i = 0; i < bpc->chip.npwm; i++) {
300 channel = pwm_get_chip_data(&bpc->chip.pwms[i]);
304 berlin_pwm_writel(bpc, i, channel->ctrl, BERLIN_PWM_CONTROL);
305 berlin_pwm_writel(bpc, i, channel->duty, BERLIN_PWM_DUTY);
306 berlin_pwm_writel(bpc, i, channel->tcnt, BERLIN_PWM_TCNT);
307 berlin_pwm_writel(bpc, i, channel->enable, BERLIN_PWM_ENABLE);