]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
clk: imx: lpcg-scu: Skip HDMI LPCG clock save/restore
authorPeng Fan <peng.fan@nxp.com>
Sun, 27 Oct 2024 12:00:11 +0000 (20:00 +0800)
committerAbel Vesa <abel.vesa@linaro.org>
Tue, 5 Nov 2024 10:02:23 +0000 (12:02 +0200)
On i.MX8QM, HDMI LPCG clocks operation needs SCU clock "hdmi_ipg_clk"
to be ON. While during noirq suspend phase, "hdmi_ipg_clk" is disabled
by HDMI IRQ STEER driver, so SError will be triggered when accessing
the HDMI LPCG registers.

Skip all HDMI LPCG clocks save/restore to avoid SError during
system suspend/resume, it will NOT introduce additional power consumption
as their parent clock is disabled when suspend.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Link: https://lore.kernel.org/r/20241027-imx-clk-v1-v3-5-89152574d1d7@nxp.com
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
drivers/clk/imx/clk-lpcg-scu.c

index 620afdf8dc03e9564bb074ca879cf778f7fc6419..6376557a3c3d03130ca8168a6cb69eda73c43abe 100644 (file)
@@ -161,6 +161,9 @@ static int __maybe_unused imx_clk_lpcg_scu_suspend(struct device *dev)
 {
        struct clk_lpcg_scu *clk = dev_get_drvdata(dev);
 
+       if (!strncmp("hdmi_lpcg", clk_hw_get_name(&clk->hw), strlen("hdmi_lpcg")))
+               return 0;
+
        clk->state = readl_relaxed(clk->reg);
        dev_dbg(dev, "save lpcg state 0x%x\n", clk->state);
 
@@ -171,6 +174,9 @@ static int __maybe_unused imx_clk_lpcg_scu_resume(struct device *dev)
 {
        struct clk_lpcg_scu *clk = dev_get_drvdata(dev);
 
+       if (!strncmp("hdmi_lpcg", clk_hw_get_name(&clk->hw), strlen("hdmi_lpcg")))
+               return 0;
+
        writel(clk->state, clk->reg);
        lpcg_e10858_writel(0, clk->reg, clk->state);
        dev_dbg(dev, "restore lpcg state 0x%x\n", clk->state);