@@ -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
453438static 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
467450static struct platform_driver lpc18xx_pwm_driver = {
0 commit comments