Patch "pwm: rockchip: Enable APB clock during register access while probing" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    pwm: rockchip: Enable APB clock during register access while probing

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     pwm-rockchip-enable-apb-clock-during-register-access.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4b0fb3bffebb2d8e0a7827deb0bfc39928f2c4ba
Author: Simon South <simon@xxxxxxxxxxxxxx>
Date:   Tue Jan 19 11:12:05 2021 -0500

    pwm: rockchip: Enable APB clock during register access while probing
    
    [ Upstream commit d9b657a5cdbd960de35dee7e06473caf44a9016f ]
    
    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 enabled, but did not also
    change the function so it first enables 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 <thierry.reding@xxxxxxxxx>
    Suggested-by: Trent Piepho <tpiepho@xxxxxxxxx>
    Signed-off-by: Simon South <simon@xxxxxxxxxxxxxx>
    Signed-off-by: Thierry Reding <thierry.reding@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/pwm/pwm-rockchip.c b/drivers/pwm/pwm-rockchip.c
index 77c23a2c6d71e..7b9cdefb3daa3 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 prepare 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);
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux