+ David and Steven, Hi Steven, please help to review this patch set. Thanks - Kever Simon South 于2020年12月24日周四 上午12:01写道: > Commit 457f74abbed0 ("pwm: rockchip: Keep enabled PWMs running while > probing") modified rockchip_pwm_probe() to access a PWM device's registers > directly to check whether or not the device is running, but did not also > change the function to first enable the device's APB clock to be certain > the device can respond. This risks hanging the kernel on systems with PWM > devices that use more than a single clock. > > Avoid this by enabling the device's APB clock before accessing its > registers (and disabling the clock when register access is complete). > > Fixes: 457f74abbed0 ("pwm: rockchip: Keep enabled PWMs running while > probing") > Reported-by: Thierry Reding > Suggested-by: Trent Piepho > Signed-off-by: Simon South > --- > drivers/pwm/pwm-rockchip.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/pwm/pwm-rockchip.c b/drivers/pwm/pwm-rockchip.c > index 77c23a2c6d71..d2058138ce1e 100644 > --- a/drivers/pwm/pwm-rockchip.c > +++ b/drivers/pwm/pwm-rockchip.c > @@ -332,9 +332,9 @@ static int rockchip_pwm_probe(struct platform_device > *pdev) > return ret; > } > > - ret = clk_prepare(pc->pclk); > + ret = clk_prepare_enable(pc->pclk); > if (ret) { > - dev_err(&pdev->dev, "Can't prepare APB clk: %d\n", ret); > + dev_err(&pdev->dev, "Can't enable APB clk: %d\n", ret); > goto err_clk; > } > > @@ -364,10 +364,12 @@ static int rockchip_pwm_probe(struct platform_device > *pdev) > if ((ctrl & enable_conf) != enable_conf) > clk_disable(pc->clk); > > + clk_disable(pc->pclk); > + > return 0; > > err_pclk: > - clk_unprepare(pc->pclk); > + clk_disable_unprepare(pc->pclk); > err_clk: > clk_disable_unprepare(pc->clk); > > -- > 2.29.2 > > > _______________________________________________ > Linux-rockchip mailing list > Linux-rockchip@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-rockchip > > > >