MLK-14630 video: mipi_dsi_northwest: refine suspend logic
authorFancy Fang <chen.fang@nxp.com>
Thu, 6 Apr 2017 06:09:44 +0000 (14:09 +0800)
committerNitin Garg <nitin.garg@nxp.com>
Mon, 19 Mar 2018 20:21:52 +0000 (15:21 -0500)
Move the 'lcd_inited' flag status modification from
'mipi_dsi_disable' to 'mipi_dsi_suspend' to make sure
this flag to be set to 0 during system suspend.

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

drivers/video/fbdev/mxc/mipi_dsi_northwest.c

index 9b4efe7..9ce0480 100644 (file)
@@ -772,13 +772,6 @@ static void mipi_dsi_disable(struct mxc_dispdrv_handle *disp,
        if (!mipi_dsi->encoder)
                mipi_display_enter_sleep(mipi_dsi->disp_mipi);
 
-       if (fbi->state == FBINFO_STATE_SUSPENDED) {
-               writel(0x1, mipi_dsi->mmio_base + DPHY_PD_PLL);
-               writel(0x1, mipi_dsi->mmio_base + DPHY_PD_DPHY);
-
-               mipi_dsi->lcd_inited = 0;
-       }
-
        clk_disable_unprepare(mipi_dsi->esc_clk);
 
        reset_dsi_domains(mipi_dsi, 1);
@@ -1041,6 +1034,19 @@ static int mipi_dsi_runtime_resume(struct device *dev)
 
 static int mipi_dsi_suspend(struct device *dev)
 {
+       struct platform_device *pdev = to_platform_device(dev);
+       struct mipi_dsi_info *mipi_dsi = dev_get_drvdata(&pdev->dev);
+
+       if (unlikely(mipi_dsi->lcd_inited)) {
+               clk_prepare_enable(mipi_dsi->esc_clk);
+
+               writel(0x1, mipi_dsi->mmio_base + DPHY_PD_PLL);
+               writel(0x1, mipi_dsi->mmio_base + DPHY_PD_DPHY);
+
+               clk_disable_unprepare(mipi_dsi->esc_clk);
+               mipi_dsi->lcd_inited = 0;
+       }
+
        pinctrl_pm_select_sleep_state(dev);
 
        return 0;