pwm: lpc18xx-sct: Free resources only after pwmchip_remove()
Before pwmchip_remove() returns the PWM is expected to be functional. So remove the pwmchip before disabling the clock. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Acked-by: Vladimir Zapolskiy <vz@mleia.com> Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
committed by
Thierry Reding
parent
819e82460a
commit
d58a484e7c
@@ -441,13 +441,15 @@ static int lpc18xx_pwm_remove(struct platform_device *pdev)
|
|||||||
struct lpc18xx_pwm_chip *lpc18xx_pwm = platform_get_drvdata(pdev);
|
struct lpc18xx_pwm_chip *lpc18xx_pwm = platform_get_drvdata(pdev);
|
||||||
u32 val;
|
u32 val;
|
||||||
|
|
||||||
|
pwmchip_remove(&lpc18xx_pwm->chip);
|
||||||
|
|
||||||
val = lpc18xx_pwm_readl(lpc18xx_pwm, LPC18XX_PWM_CTRL);
|
val = lpc18xx_pwm_readl(lpc18xx_pwm, LPC18XX_PWM_CTRL);
|
||||||
lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_CTRL,
|
lpc18xx_pwm_writel(lpc18xx_pwm, LPC18XX_PWM_CTRL,
|
||||||
val | LPC18XX_PWM_CTRL_HALT);
|
val | LPC18XX_PWM_CTRL_HALT);
|
||||||
|
|
||||||
clk_disable_unprepare(lpc18xx_pwm->pwm_clk);
|
clk_disable_unprepare(lpc18xx_pwm->pwm_clk);
|
||||||
|
|
||||||
return pwmchip_remove(&lpc18xx_pwm->chip);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct platform_driver lpc18xx_pwm_driver = {
|
static struct platform_driver lpc18xx_pwm_driver = {
|
||||||
|
|||||||
Reference in New Issue
Block a user