Merge "msm: display: Clean DSI state on continuous splash disabled cases" into msm-3.0
diff --git a/arch/arm/mach-msm/board-8960-display.c b/arch/arm/mach-msm/board-8960-display.c
index 4b887e8..8c41e8c 100644
--- a/arch/arm/mach-msm/board-8960-display.c
+++ b/arch/arm/mach-msm/board-8960-display.c
@@ -480,6 +480,7 @@
return 0;
}
+static char mipi_dsi_splash_is_enabled(void);
static int mipi_dsi_panel_power(int on)
{
int ret;
@@ -497,6 +498,7 @@
static struct mipi_dsi_platform_data mipi_dsi_pdata = {
.vsync_gpio = MDP_VSYNC_GPIO,
.dsi_power_save = mipi_dsi_panel_power,
+ .splash_is_enabled = mipi_dsi_splash_is_enabled,
};
#ifdef CONFIG_MSM_BUS_SCALING
@@ -619,6 +621,11 @@
#endif
}
+static char mipi_dsi_splash_is_enabled(void)
+{
+ return mdp_pdata.cont_splash_enabled;
+}
+
static struct platform_device mipi_dsi_renesas_panel_device = {
.name = "mipi_renesas",
.id = 0,
@@ -1058,12 +1065,21 @@
void __init msm8960_set_display_params(char *prim_panel, char *ext_panel)
{
+ int disable_splash = 0;
if (strnlen(prim_panel, PANEL_NAME_MAX_LEN)) {
strlcpy(msm_fb_pdata.prim_panel_name, prim_panel,
PANEL_NAME_MAX_LEN);
pr_debug("msm_fb_pdata.prim_panel_name %s\n",
msm_fb_pdata.prim_panel_name);
+ if (strncmp((char *)msm_fb_pdata.prim_panel_name,
+ MIPI_VIDEO_TOSHIBA_WSVGA_PANEL_NAME,
+ strnlen(MIPI_VIDEO_TOSHIBA_WSVGA_PANEL_NAME,
+ PANEL_NAME_MAX_LEN))) {
+ /* Disable splash for panels other than Toshiba WSVGA */
+ disable_splash = 1;
+ }
+
if (!strncmp((char *)msm_fb_pdata.prim_panel_name,
HDMI_PANEL_NAME, strnlen(HDMI_PANEL_NAME,
PANEL_NAME_MAX_LEN))) {
@@ -1086,6 +1102,6 @@
msm_fb_pdata.ext_panel_name);
}
- if (hdmi_is_primary)
+ if (disable_splash)
mdp_pdata.cont_splash_enabled = 0;
}
diff --git a/arch/arm/mach-msm/include/mach/board.h b/arch/arm/mach-msm/include/mach/board.h
index 0524c79..f39336d 100644
--- a/arch/arm/mach-msm/include/mach/board.h
+++ b/arch/arm/mach-msm/include/mach/board.h
@@ -423,6 +423,7 @@
int (*dsi_power_save)(int on);
int (*dsi_client_reset)(void);
int (*get_lane_config)(void);
+ char (*splash_is_enabled)(void);
int target_type;
};
diff --git a/drivers/video/msm/mipi_dsi.c b/drivers/video/msm/mipi_dsi.c
index b8169d9..baad0a8 100644
--- a/drivers/video/msm/mipi_dsi.c
+++ b/drivers/video/msm/mipi_dsi.c
@@ -432,6 +432,14 @@
if (mipi_dsi_clk_init(pdev))
return -EPERM;
+ if (mipi_dsi_pdata->splash_is_enabled &&
+ !mipi_dsi_pdata->splash_is_enabled()) {
+ mipi_dsi_ahb_ctrl(1);
+ MIPI_OUTP(MIPI_DSI_BASE + 0x118, 0);
+ MIPI_OUTP(MIPI_DSI_BASE + 0x0, 0);
+ MIPI_OUTP(MIPI_DSI_BASE + 0x200, 0);
+ mipi_dsi_ahb_ctrl(0);
+ }
mipi_dsi_resource_initialized = 1;
return 0;