MLK-19017-2 gpu: imx: add DISPMIX power domain support for LCDIF
authorFancy Fang <chen.fang@nxp.com>
Sun, 1 Jul 2018 06:22:50 +0000 (14:22 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
After the DISPMIX power domain enabled, all the related registers
will drop their values once runtime pm suspend called. So in the
pm runtime resume process, the LCDIF de-reset and some init jobs
need to be done, and these jobs are no longer necessary to be done
during probe stage anymore.

Signed-off-by: Fancy Fang <chen.fang@nxp.com>
(cherry picked from commit f83aaaecaeb54d8b1231be2cb7175ce58682dae7)
(cherry picked from commit aa6a8be1f5e5107d02e58e4091e666a2d8fbfcc6)

drivers/gpu/imx/lcdif/lcdif-common.c

index a680425..3ce84b5 100644 (file)
@@ -599,14 +599,6 @@ static int imx_lcdif_probe(struct platform_device *pdev)
 
        pm_runtime_enable(dev);
 
-       disp_mix_bus_rstn_reset(lcdif->gpr, false);
-       disp_mix_lcdif_clks_enable(lcdif->gpr, true);
-
-       /* Pull LCDIF out of reset */
-       pm_runtime_get_sync(dev);
-       writel(0x0, lcdif->base + LCDIF_CTRL);
-       pm_runtime_put(dev);
-
        dev_dbg(dev, "%s: probe end\n", __func__);
 
        return lcdif_add_client_devices(lcdif);
@@ -651,8 +643,16 @@ static int imx_lcdif_runtime_resume(struct device *dev)
        request_bus_freq(BUS_FREQ_HIGH);
 
        ret = lcdif_enable_clocks(lcdif);
-       if (ret)
+       if (ret) {
                release_bus_freq(BUS_FREQ_HIGH);
+               return ret;
+       }
+
+       disp_mix_bus_rstn_reset(lcdif->gpr, false);
+       disp_mix_lcdif_clks_enable(lcdif->gpr, true);
+
+       /* Pull LCDIF out of reset */
+       writel(0x0, lcdif->base + LCDIF_CTRL);
 
        return ret;
 }