Skip to content

Commit 4aed0cc

Browse files
Uwe Kleine-Königthierryreding
authored andcommitted
pwm: lpc18xx-sct: Simplify using devm_clk_get_enabled()
With devm_clk_get_enabled() the call to clk_disable_unprepare() can be dropped from the error path and the remove callback. Signed-off-by: Uwe Kleine-König <[email protected]> Signed-off-by: Thierry Reding <[email protected]>
1 parent 28a1dad commit 4aed0cc

File tree

1 file changed

+8
-25
lines changed

1 file changed

+8
-25
lines changed

drivers/pwm/pwm-lpc18xx-sct.c

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -367,30 +367,21 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev)
367367
if (IS_ERR(lpc18xx_pwm->base))
368368
return PTR_ERR(lpc18xx_pwm->base);
369369

370-
lpc18xx_pwm->pwm_clk = devm_clk_get(&pdev->dev, "pwm");
370+
lpc18xx_pwm->pwm_clk = devm_clk_get_enabled(&pdev->dev, "pwm");
371371
if (IS_ERR(lpc18xx_pwm->pwm_clk))
372372
return dev_err_probe(&pdev->dev, PTR_ERR(lpc18xx_pwm->pwm_clk),
373373
"failed to get pwm clock\n");
374374

375-
ret = clk_prepare_enable(lpc18xx_pwm->pwm_clk);
376-
if (ret < 0)
377-
return dev_err_probe(&pdev->dev, ret,
378-
"could not prepare or enable pwm clock\n");
379-
380375
lpc18xx_pwm->clk_rate = clk_get_rate(lpc18xx_pwm->pwm_clk);
381-
if (!lpc18xx_pwm->clk_rate) {
382-
ret = dev_err_probe(&pdev->dev,
383-
-EINVAL, "pwm clock has no frequency\n");
384-
goto disable_pwmclk;
385-
}
376+
if (!lpc18xx_pwm->clk_rate)
377+
return dev_err_probe(&pdev->dev,
378+
-EINVAL, "pwm clock has no frequency\n");
386379

387380
/*
388381
* If clkrate is too fast, the calculations in .apply() might overflow.
389382
*/
390-
if (lpc18xx_pwm->clk_rate > NSEC_PER_SEC) {
391-
ret = dev_err_probe(&pdev->dev, -EINVAL, "pwm clock to fast\n");
392-
goto disable_pwmclk;
393-
}
383+
if (lpc18xx_pwm->clk_rate > NSEC_PER_SEC)
384+
return dev_err_probe(&pdev->dev, -EINVAL, "pwm clock to fast\n");
394385

395386
mutex_init(&lpc18xx_pwm->res_lock);
396387
mutex_init(&lpc18xx_pwm->period_lock);
@@ -436,18 +427,12 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev)
436427
lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_CTRL, val);
437428

438429
ret = pwmchip_add(&lpc18xx_pwm->chip);
439-
if (ret < 0) {
440-
dev_err_probe(&pdev->dev, ret, "pwmchip_add failed\n");
441-
goto disable_pwmclk;
442-
}
430+
if (ret < 0)
431+
return dev_err_probe(&pdev->dev, ret, "pwmchip_add failed\n");
443432

444433
platform_set_drvdata(pdev, lpc18xx_pwm);
445434

446435
return 0;
447-
448-
disable_pwmclk:
449-
clk_disable_unprepare(lpc18xx_pwm->pwm_clk);
450-
return ret;
451436
}
452437

453438
static void lpc18xx_pwm_remove(struct platform_device *pdev)
@@ -460,8 +445,6 @@ static void lpc18xx_pwm_remove(struct platform_device *pdev)
460445
val = lpc18xx_pwm_readl(lpc18xx_pwm, LPC18XX_PWM_CTRL);
461446
lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_CTRL,
462447
val | LPC18XX_PWM_CTRL_HALT);
463-
464-
clk_disable_unprepare(lpc18xx_pwm->pwm_clk);
465448
}
466449

467450
static struct platform_driver lpc18xx_pwm_driver = {

0 commit comments

Comments
 (0)