From 4c2035208345be43daeb92bd381c11acfc99802d Mon Sep 17 00:00:00 2001
From: Zhao Xuewen <zhaoxuewen@huawei.com>
Date: Thu, 22 Oct 2015 22:23:00 +0800
Subject: [PATCH] msm: mdss: fix ambient mode screen freeze issue

When enter ambient mode,mipi will change from normal to stop.
panel will switch to video mode due to the floating signal
sometimes,then screen will freeze.

Enable ULPS,when enter ambient mode,mipi will change to ULPS and
then to stop,this will indicate the panel to enter idle mode safely.

When enable ULPS,the screen image will shift due to mipi footswitch
off.Keep MIPI footswitch on to avoid this issue.

BUG:25089287
Change-Id: Iee25ebabd2eee22d0c7edd686ccaada24e3633ec
Signed-off-by: l00212897 <gang.li@huawei.com>
---
 .../dsi-panel-auo-rm69080-hvga-video.dtsi                 | 1 +
 .../dsi-panel-edo-rm67160-hvga-video.dtsi                 | 1 +
 drivers/video/msm/mdss/msm_mdss_io_8974.c                 | 8 ++++++++
 3 files changed, 10 insertions(+)

diff --git a/arch/arm/boot/dts/apq8026-sturgeon/dsi-panel-auo-rm69080-hvga-video.dtsi b/arch/arm/boot/dts/apq8026-sturgeon/dsi-panel-auo-rm69080-hvga-video.dtsi
index aec075d7c6d4..e90cbbfd801f 100644
--- a/arch/arm/boot/dts/apq8026-sturgeon/dsi-panel-auo-rm69080-hvga-video.dtsi
+++ b/arch/arm/boot/dts/apq8026-sturgeon/dsi-panel-auo-rm69080-hvga-video.dtsi
@@ -42,6 +42,7 @@
 		qcom,mdss-dsi-underflow-color = <0xff>;
 		qcom,mdss-dsi-border-color = <0>;
 		qcom,mdss-dsi-panel-orientation = "vflip";
+		qcom,ulps-enabled;
 		qcom,mdss-dsi-on-command = [15 01 00 00 01 00 02 00 00
 			15 01 00 00 00 00 02 FE 07
 			15 01 00 00 00 00 02 07 4F
diff --git a/arch/arm/boot/dts/apq8026-sturgeon/dsi-panel-edo-rm67160-hvga-video.dtsi b/arch/arm/boot/dts/apq8026-sturgeon/dsi-panel-edo-rm67160-hvga-video.dtsi
index 28fba640732c..be190efe9348 100644
--- a/arch/arm/boot/dts/apq8026-sturgeon/dsi-panel-edo-rm67160-hvga-video.dtsi
+++ b/arch/arm/boot/dts/apq8026-sturgeon/dsi-panel-edo-rm67160-hvga-video.dtsi
@@ -42,6 +42,7 @@
 		qcom,mdss-dsi-underflow-color = <0xff>;
 		qcom,mdss-dsi-border-color = <0>;
 		qcom,mdss-dsi-panel-orientation = "vflip";
+		qcom,ulps-enabled;
 		qcom,mdss-dsi-on-command = [15 01 00 00 01 00 02 00 00
 			15 01 00 00 00 00 02 FE 04
 			15 01 00 00 00 00 02 00 DC
diff --git a/drivers/video/msm/mdss/msm_mdss_io_8974.c b/drivers/video/msm/mdss/msm_mdss_io_8974.c
index d936cf4e9688..825ed7bf2543 100644
--- a/drivers/video/msm/mdss/msm_mdss_io_8974.c
+++ b/drivers/video/msm/mdss/msm_mdss_io_8974.c
@@ -1147,6 +1147,11 @@ static int mdss_dsi_core_power_ctrl(struct mdss_dsi_ctrl_pdata *ctrl,
 			pr_debug("%s: leaving mdss gdsc on\n", __func__);
 		} else {
 			pr_debug("%s: Disable MDP FS\n", __func__);
+			/*
+			 * temp workaround to keep MDP FS enable to avoid image
+			 * shift after exit idle mode
+			 */
+#if 0
 			rc = msm_dss_enable_vreg(
 				ctrl->power_data[DSI_CORE_PM].vreg_config,
 				ctrl->power_data[DSI_CORE_PM].num_vreg, 0);
@@ -1158,6 +1163,9 @@ static int mdss_dsi_core_power_ctrl(struct mdss_dsi_ctrl_pdata *ctrl,
 			} else {
 				ctrl->core_power = false;
 			}
+#else
+			ctrl->core_power = false;
+#endif
 		}
 
 		/*
-- 
GitLab