@@ -367,30 +367,21 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev)
367
367
if (IS_ERR (lpc18xx_pwm -> base ))
368
368
return PTR_ERR (lpc18xx_pwm -> base );
369
369
370
- lpc18xx_pwm -> pwm_clk = devm_clk_get (& pdev -> dev , "pwm" );
370
+ lpc18xx_pwm -> pwm_clk = devm_clk_get_enabled (& pdev -> dev , "pwm" );
371
371
if (IS_ERR (lpc18xx_pwm -> pwm_clk ))
372
372
return dev_err_probe (& pdev -> dev , PTR_ERR (lpc18xx_pwm -> pwm_clk ),
373
373
"failed to get pwm clock\n" );
374
374
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
-
380
375
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" );
386
379
387
380
/*
388
381
* If clkrate is too fast, the calculations in .apply() might overflow.
389
382
*/
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" );
394
385
395
386
mutex_init (& lpc18xx_pwm -> res_lock );
396
387
mutex_init (& lpc18xx_pwm -> period_lock );
@@ -436,18 +427,12 @@ static int lpc18xx_pwm_probe(struct platform_device *pdev)
436
427
lpc18xx_pwm_writel (lpc18xx_pwm , LPC18XX_PWM_CTRL , val );
437
428
438
429
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" );
443
432
444
433
platform_set_drvdata (pdev , lpc18xx_pwm );
445
434
446
435
return 0 ;
447
-
448
- disable_pwmclk :
449
- clk_disable_unprepare (lpc18xx_pwm -> pwm_clk );
450
- return ret ;
451
436
}
452
437
453
438
static void lpc18xx_pwm_remove (struct platform_device * pdev )
@@ -460,8 +445,6 @@ static void lpc18xx_pwm_remove(struct platform_device *pdev)
460
445
val = lpc18xx_pwm_readl (lpc18xx_pwm , LPC18XX_PWM_CTRL );
461
446
lpc18xx_pwm_writel (lpc18xx_pwm , LPC18XX_PWM_CTRL ,
462
447
val | LPC18XX_PWM_CTRL_HALT );
463
-
464
- clk_disable_unprepare (lpc18xx_pwm -> pwm_clk );
465
448
}
466
449
467
450
static struct platform_driver lpc18xx_pwm_driver = {
0 commit comments