Lines Matching full:imx

98 static int pwm_imx27_clk_prepare_enable(struct pwm_imx27_chip *imx)  in pwm_imx27_clk_prepare_enable()  argument
102 ret = clk_prepare_enable(imx->clk_ipg); in pwm_imx27_clk_prepare_enable()
106 ret = clk_prepare_enable(imx->clk_per); in pwm_imx27_clk_prepare_enable()
108 clk_disable_unprepare(imx->clk_ipg); in pwm_imx27_clk_prepare_enable()
115 static void pwm_imx27_clk_disable_unprepare(struct pwm_imx27_chip *imx) in pwm_imx27_clk_disable_unprepare() argument
117 clk_disable_unprepare(imx->clk_per); in pwm_imx27_clk_disable_unprepare()
118 clk_disable_unprepare(imx->clk_ipg); in pwm_imx27_clk_disable_unprepare()
124 struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip); in pwm_imx27_get_state() local
129 ret = pwm_imx27_clk_prepare_enable(imx); in pwm_imx27_get_state()
133 val = readl(imx->mmio_base + MX3_PWMCR); in pwm_imx27_get_state()
152 pwm_clk = clk_get_rate(imx->clk_per); in pwm_imx27_get_state()
153 val = readl(imx->mmio_base + MX3_PWMPR); in pwm_imx27_get_state()
165 val = readl(imx->mmio_base + MX3_PWMSAR); in pwm_imx27_get_state()
167 val = imx->duty_cycle; in pwm_imx27_get_state()
172 pwm_imx27_clk_disable_unprepare(imx); in pwm_imx27_get_state()
179 struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip); in pwm_imx27_sw_reset() local
184 writel(MX3_PWMCR_SWR, imx->mmio_base + MX3_PWMCR); in pwm_imx27_sw_reset()
187 cr = readl(imx->mmio_base + MX3_PWMCR); in pwm_imx27_sw_reset()
198 struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip); in pwm_imx27_wait_fifo_slot() local
204 sr = readl(imx->mmio_base + MX3_PWMSR); in pwm_imx27_wait_fifo_slot()
211 sr = readl(imx->mmio_base + MX3_PWMSR); in pwm_imx27_wait_fifo_slot()
221 struct pwm_imx27_chip *imx = to_pwm_imx27_chip(chip); in pwm_imx27_apply() local
230 clkrate = clk_get_rate(imx->clk_per); in pwm_imx27_apply()
245 * according to imx pwm RM, the real period value should be PERIOD in pwm_imx27_apply()
260 ret = pwm_imx27_clk_prepare_enable(imx); in pwm_imx27_apply()
267 writel(duty_cycles, imx->mmio_base + MX3_PWMSAR); in pwm_imx27_apply()
268 writel(period_cycles, imx->mmio_base + MX3_PWMPR); in pwm_imx27_apply()
274 imx->duty_cycle = duty_cycles; in pwm_imx27_apply()
288 writel(cr, imx->mmio_base + MX3_PWMCR); in pwm_imx27_apply()
291 pwm_imx27_clk_disable_unprepare(imx); in pwm_imx27_apply()
309 struct pwm_imx27_chip *imx; in pwm_imx27_probe() local
313 imx = devm_kzalloc(&pdev->dev, sizeof(*imx), GFP_KERNEL); in pwm_imx27_probe()
314 if (imx == NULL) in pwm_imx27_probe()
317 imx->clk_ipg = devm_clk_get(&pdev->dev, "ipg"); in pwm_imx27_probe()
318 if (IS_ERR(imx->clk_ipg)) in pwm_imx27_probe()
319 return dev_err_probe(&pdev->dev, PTR_ERR(imx->clk_ipg), in pwm_imx27_probe()
322 imx->clk_per = devm_clk_get(&pdev->dev, "per"); in pwm_imx27_probe()
323 if (IS_ERR(imx->clk_per)) in pwm_imx27_probe()
324 return dev_err_probe(&pdev->dev, PTR_ERR(imx->clk_per), in pwm_imx27_probe()
327 imx->chip.ops = &pwm_imx27_ops; in pwm_imx27_probe()
328 imx->chip.dev = &pdev->dev; in pwm_imx27_probe()
329 imx->chip.npwm = 1; in pwm_imx27_probe()
331 imx->mmio_base = devm_platform_ioremap_resource(pdev, 0); in pwm_imx27_probe()
332 if (IS_ERR(imx->mmio_base)) in pwm_imx27_probe()
333 return PTR_ERR(imx->mmio_base); in pwm_imx27_probe()
335 ret = pwm_imx27_clk_prepare_enable(imx); in pwm_imx27_probe()
340 pwmcr = readl(imx->mmio_base + MX3_PWMCR); in pwm_imx27_probe()
342 pwm_imx27_clk_disable_unprepare(imx); in pwm_imx27_probe()
344 return devm_pwmchip_add(&pdev->dev, &imx->chip); in pwm_imx27_probe()