Lines Matching refs:kp
79 static void kona_pwmc_apply_settings(struct kona_pwmc *kp, unsigned int chan) in kona_pwmc_apply_settings() argument
81 unsigned int value = readl(kp->base + PWM_CONTROL_OFFSET); in kona_pwmc_apply_settings()
86 writel(value, kp->base + PWM_CONTROL_OFFSET); in kona_pwmc_apply_settings()
91 writel(value, kp->base + PWM_CONTROL_OFFSET); in kona_pwmc_apply_settings()
97 struct kona_pwmc *kp = to_kona_pwmc(chip); in kona_pwmc_config() local
113 rate = clk_get_rate(kp->clk); in kona_pwmc_config()
138 value = readl(kp->base + PRESCALE_OFFSET); in kona_pwmc_config()
141 writel(value, kp->base + PRESCALE_OFFSET); in kona_pwmc_config()
143 writel(pc, kp->base + PERIOD_COUNT_OFFSET(chan)); in kona_pwmc_config()
145 writel(dc, kp->base + DUTY_CYCLE_HIGH_OFFSET(chan)); in kona_pwmc_config()
147 kona_pwmc_apply_settings(kp, chan); in kona_pwmc_config()
156 struct kona_pwmc *kp = to_kona_pwmc(chip); in kona_pwmc_set_polarity() local
161 ret = clk_prepare_enable(kp->clk); in kona_pwmc_set_polarity()
167 value = readl(kp->base + PWM_CONTROL_OFFSET); in kona_pwmc_set_polarity()
174 writel(value, kp->base + PWM_CONTROL_OFFSET); in kona_pwmc_set_polarity()
176 kona_pwmc_apply_settings(kp, chan); in kona_pwmc_set_polarity()
181 clk_disable_unprepare(kp->clk); in kona_pwmc_set_polarity()
188 struct kona_pwmc *kp = to_kona_pwmc(chip); in kona_pwmc_enable() local
191 ret = clk_prepare_enable(kp->clk); in kona_pwmc_enable()
199 clk_disable_unprepare(kp->clk); in kona_pwmc_enable()
208 struct kona_pwmc *kp = to_kona_pwmc(chip); in kona_pwmc_disable() local
212 writel(0, kp->base + DUTY_CYCLE_HIGH_OFFSET(chan)); in kona_pwmc_disable()
213 kona_pwmc_apply_settings(kp, chan); in kona_pwmc_disable()
218 clk_disable_unprepare(kp->clk); in kona_pwmc_disable()
231 struct kona_pwmc *kp; in kona_pwmc_probe() local
237 kp = devm_kzalloc(&pdev->dev, sizeof(*kp), GFP_KERNEL); in kona_pwmc_probe()
238 if (kp == NULL) in kona_pwmc_probe()
241 platform_set_drvdata(pdev, kp); in kona_pwmc_probe()
243 kp->chip.dev = &pdev->dev; in kona_pwmc_probe()
244 kp->chip.ops = &kona_pwm_ops; in kona_pwmc_probe()
245 kp->chip.base = -1; in kona_pwmc_probe()
246 kp->chip.npwm = 6; in kona_pwmc_probe()
247 kp->chip.of_xlate = of_pwm_xlate_with_flags; in kona_pwmc_probe()
248 kp->chip.of_pwm_n_cells = 3; in kona_pwmc_probe()
249 kp->chip.can_sleep = true; in kona_pwmc_probe()
252 kp->base = devm_ioremap_resource(&pdev->dev, res); in kona_pwmc_probe()
253 if (IS_ERR(kp->base)) in kona_pwmc_probe()
254 return PTR_ERR(kp->base); in kona_pwmc_probe()
256 kp->clk = devm_clk_get(&pdev->dev, NULL); in kona_pwmc_probe()
257 if (IS_ERR(kp->clk)) { in kona_pwmc_probe()
259 PTR_ERR(kp->clk)); in kona_pwmc_probe()
260 return PTR_ERR(kp->clk); in kona_pwmc_probe()
263 ret = clk_prepare_enable(kp->clk); in kona_pwmc_probe()
270 for (chan = 0; chan < kp->chip.npwm; chan++) { in kona_pwmc_probe()
276 writel(value, kp->base + PWM_CONTROL_OFFSET); in kona_pwmc_probe()
278 clk_disable_unprepare(kp->clk); in kona_pwmc_probe()
280 ret = pwmchip_add(&kp->chip); in kona_pwmc_probe()
289 struct kona_pwmc *kp = platform_get_drvdata(pdev); in kona_pwmc_remove() local
292 for (chan = 0; chan < kp->chip.npwm; chan++) in kona_pwmc_remove()
293 if (test_bit(PWMF_ENABLED, &kp->chip.pwms[chan].flags)) in kona_pwmc_remove()
294 clk_disable_unprepare(kp->clk); in kona_pwmc_remove()
296 return pwmchip_remove(&kp->chip); in kona_pwmc_remove()