MLK-22576 imx8: video: Set clock parent for DC0 display channel
authorYe Li <ye.li@nxp.com>
Mon, 9 Sep 2019 08:54:47 +0000 (01:54 -0700)
committerYe Li <ye.li@nxp.com>
Wed, 11 Sep 2019 03:31:10 +0000 (20:31 -0700)
When enable u-boot splash screen and set kernel dtb with -hdmi.dtb on
imx8qm, the kernel reboot (partition reboot) will hang in u-boot if HDMI
cable is plugged in.
The root cause is kernel set the clock source of DC0 display0 channel to
bypass clock, when doing reboot this clock setting may not be cleared. So
u-boot has wrong clock source and cause lpcg stop bit always set.

Fix the issue by adding the clock parent setting and not depend on default
parent value.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
(cherry picked from commit 104c4b5cdc83fb671c6474708bdd00c2dfb01113)
(cherry picked from commit 8a287c629018e6bf647c3c617fca3e6c94a3d2a4)

arch/arm/mach-imx/imx8/video_common.c

index 6157f80..e30dd2a 100644 (file)
@@ -391,6 +391,18 @@ int display_controller_setup(sc_pm_clock_rate_t pixel_clock)
                return -EIO;
        }
 
+       err = sc_pm_set_clock_parent(-1, dc_rsrc, SC_PM_CLK_MISC0, 2);
+       if (err != SC_ERR_NONE) {
+               printf("DISP0 set clock parent failed! (error = %d)\n", err);
+               return -EIO;
+       }
+
+       err = sc_pm_set_clock_parent(-1, dc_rsrc, SC_PM_CLK_MISC1, 3);
+       if (err != SC_ERR_NONE) {
+               printf("DISP0 set clock parent failed! (error = %d)\n", err);
+               return -EIO;
+       }
+
        err = sc_pm_set_clock_rate(-1, dc_rsrc, SC_PM_CLK_MISC0, &pixel_clock);
        if (err != SC_ERR_NONE) {
                printf("DISP0 set clock rate failed! (error = %d)\n", err);