]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
clk: imx: scu: Do not enable runtime PM for CPU clks
authorNitin Garg <nitin.garg@nxp.com>
Fri, 4 Jun 2021 09:09:43 +0000 (17:09 +0800)
committerAbel Vesa <abel.vesa@nxp.com>
Mon, 14 Jun 2021 09:34:51 +0000 (12:34 +0300)
Since CPU clocks are managed by CPUFREQ and ATF, do not enable
runtime PM otherwise rpm gets out of status as cpufreq
also manages clock states.

Signed-off-by: Nitin Garg <nitin.garg@nxp.com>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Reviewed-by: Abel Vesa <abel.vesa@nxp.com>
Signed-off-by: Abel Vesa <abel.vesa@nxp.com>
drivers/clk/imx/clk-scu.c

index 597cd27543709fbee5b7bde9267373d90523469f..083da31dc3ead77a824091f033fbb2fe1f18a4f0 100644 (file)
@@ -521,16 +521,19 @@ static int imx_clk_scu_probe(struct platform_device *pdev)
        struct clk_hw *hw;
        int ret;
 
-       pm_runtime_set_suspended(dev);
-       pm_runtime_set_autosuspend_delay(dev, 50);
-       pm_runtime_use_autosuspend(&pdev->dev);
-       pm_runtime_enable(dev);
-
-       ret = pm_runtime_get_sync(dev);
-       if (ret) {
-               pm_genpd_remove_device(dev);
-               pm_runtime_disable(dev);
-               return ret;
+       if (!((clk->rsrc == IMX_SC_R_A35) || (clk->rsrc == IMX_SC_R_A53) ||
+           (clk->rsrc == IMX_SC_R_A72))) {
+               pm_runtime_set_suspended(dev);
+               pm_runtime_set_autosuspend_delay(dev, 50);
+               pm_runtime_use_autosuspend(&pdev->dev);
+               pm_runtime_enable(dev);
+
+               ret = pm_runtime_get_sync(dev);
+               if (ret) {
+                       pm_genpd_remove_device(dev);
+                       pm_runtime_disable(dev);
+                       return ret;
+               }
        }
 
        hw = __imx_clk_scu(dev, clk->name, clk->parents, clk->num_parents,
@@ -543,8 +546,11 @@ static int imx_clk_scu_probe(struct platform_device *pdev)
        clk->hw = hw;
        list_add_tail(&clk->node, &imx_scu_clks[clk->rsrc]);
 
-       pm_runtime_mark_last_busy(&pdev->dev);
-       pm_runtime_put_autosuspend(&pdev->dev);
+       if (!((clk->rsrc == IMX_SC_R_A35) || (clk->rsrc == IMX_SC_R_A53) ||
+           (clk->rsrc == IMX_SC_R_A72))) {
+               pm_runtime_mark_last_busy(&pdev->dev);
+               pm_runtime_put_autosuspend(&pdev->dev);
+       }
 
        dev_dbg(dev, "register SCU clock rsrc:%d type:%d\n", clk->rsrc,
                clk->clk_type);