Lines Matching refs:imgchip

80 static inline void img_pwm_writel(struct img_pwm_chip *imgchip,  in img_pwm_writel()  argument
83 writel(val, imgchip->base + reg); in img_pwm_writel()
86 static inline u32 img_pwm_readl(struct img_pwm_chip *imgchip, u32 reg) in img_pwm_readl() argument
88 return readl(imgchip->base + reg); in img_pwm_readl()
96 struct img_pwm_chip *imgchip = to_img_pwm_chip(chip); in img_pwm_config() local
97 unsigned int max_timebase = imgchip->data->max_timebase; in img_pwm_config()
100 if (period_ns < imgchip->min_period_ns || in img_pwm_config()
101 period_ns > imgchip->max_period_ns) { in img_pwm_config()
106 input_clk_hz = clk_get_rate(imgchip->pwm_clk); in img_pwm_config()
134 val = img_pwm_readl(imgchip, PWM_CTRL_CFG); in img_pwm_config()
138 img_pwm_writel(imgchip, PWM_CTRL_CFG, val); in img_pwm_config()
142 img_pwm_writel(imgchip, PWM_CH_CFG(pwm->hwpwm), val); in img_pwm_config()
153 struct img_pwm_chip *imgchip = to_img_pwm_chip(chip); in img_pwm_enable() local
160 val = img_pwm_readl(imgchip, PWM_CTRL_CFG); in img_pwm_enable()
162 img_pwm_writel(imgchip, PWM_CTRL_CFG, val); in img_pwm_enable()
164 regmap_clear_bits(imgchip->periph_regs, PERIP_PWM_PDM_CONTROL, in img_pwm_enable()
174 struct img_pwm_chip *imgchip = to_img_pwm_chip(chip); in img_pwm_disable() local
176 val = img_pwm_readl(imgchip, PWM_CTRL_CFG); in img_pwm_disable()
178 img_pwm_writel(imgchip, PWM_CTRL_CFG, val); in img_pwm_disable()
229 struct img_pwm_chip *imgchip = dev_get_drvdata(dev); in img_pwm_runtime_suspend() local
231 clk_disable_unprepare(imgchip->pwm_clk); in img_pwm_runtime_suspend()
232 clk_disable_unprepare(imgchip->sys_clk); in img_pwm_runtime_suspend()
239 struct img_pwm_chip *imgchip = dev_get_drvdata(dev); in img_pwm_runtime_resume() local
242 ret = clk_prepare_enable(imgchip->sys_clk); in img_pwm_runtime_resume()
248 ret = clk_prepare_enable(imgchip->pwm_clk); in img_pwm_runtime_resume()
251 clk_disable_unprepare(imgchip->sys_clk); in img_pwm_runtime_resume()
263 struct img_pwm_chip *imgchip; in img_pwm_probe() local
266 imgchip = devm_kzalloc(&pdev->dev, sizeof(*imgchip), GFP_KERNEL); in img_pwm_probe()
267 if (!imgchip) in img_pwm_probe()
270 imgchip->dev = &pdev->dev; in img_pwm_probe()
272 imgchip->base = devm_platform_ioremap_resource(pdev, 0); in img_pwm_probe()
273 if (IS_ERR(imgchip->base)) in img_pwm_probe()
274 return PTR_ERR(imgchip->base); in img_pwm_probe()
279 imgchip->data = of_dev_id->data; in img_pwm_probe()
281 imgchip->periph_regs = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, in img_pwm_probe()
283 if (IS_ERR(imgchip->periph_regs)) in img_pwm_probe()
284 return PTR_ERR(imgchip->periph_regs); in img_pwm_probe()
286 imgchip->sys_clk = devm_clk_get(&pdev->dev, "sys"); in img_pwm_probe()
287 if (IS_ERR(imgchip->sys_clk)) { in img_pwm_probe()
289 return PTR_ERR(imgchip->sys_clk); in img_pwm_probe()
292 imgchip->pwm_clk = devm_clk_get(&pdev->dev, "pwm"); in img_pwm_probe()
293 if (IS_ERR(imgchip->pwm_clk)) { in img_pwm_probe()
295 return PTR_ERR(imgchip->pwm_clk); in img_pwm_probe()
298 platform_set_drvdata(pdev, imgchip); in img_pwm_probe()
309 clk_rate = clk_get_rate(imgchip->pwm_clk); in img_pwm_probe()
317 val = (u64)NSEC_PER_SEC * 512 * imgchip->data->max_timebase; in img_pwm_probe()
319 imgchip->max_period_ns = val; in img_pwm_probe()
323 imgchip->min_period_ns = val; in img_pwm_probe()
325 imgchip->chip.dev = &pdev->dev; in img_pwm_probe()
326 imgchip->chip.ops = &img_pwm_ops; in img_pwm_probe()
327 imgchip->chip.npwm = IMG_PWM_NPWM; in img_pwm_probe()
329 ret = pwmchip_add(&imgchip->chip); in img_pwm_probe()
348 struct img_pwm_chip *imgchip = platform_get_drvdata(pdev); in img_pwm_remove() local
354 pwmchip_remove(&imgchip->chip); in img_pwm_remove()
360 struct img_pwm_chip *imgchip = dev_get_drvdata(dev); in img_pwm_suspend() local
369 for (i = 0; i < imgchip->chip.npwm; i++) in img_pwm_suspend()
370 imgchip->suspend_ch_cfg[i] = img_pwm_readl(imgchip, in img_pwm_suspend()
373 imgchip->suspend_ctrl_cfg = img_pwm_readl(imgchip, PWM_CTRL_CFG); in img_pwm_suspend()
382 struct img_pwm_chip *imgchip = dev_get_drvdata(dev); in img_pwm_resume() local
390 for (i = 0; i < imgchip->chip.npwm; i++) in img_pwm_resume()
391 img_pwm_writel(imgchip, PWM_CH_CFG(i), in img_pwm_resume()
392 imgchip->suspend_ch_cfg[i]); in img_pwm_resume()
394 img_pwm_writel(imgchip, PWM_CTRL_CFG, imgchip->suspend_ctrl_cfg); in img_pwm_resume()
396 for (i = 0; i < imgchip->chip.npwm; i++) in img_pwm_resume()
397 if (imgchip->suspend_ctrl_cfg & BIT(i)) in img_pwm_resume()
398 regmap_clear_bits(imgchip->periph_regs, in img_pwm_resume()