Merge "target: disable continuous splash screen when display init fails"
diff --git a/dev/gcdb/display/gcdb_display.c b/dev/gcdb/display/gcdb_display.c
index 4a15406..785c2a9 100755
--- a/dev/gcdb/display/gcdb_display.c
+++ b/dev/gcdb/display/gcdb_display.c
@@ -168,7 +168,7 @@
char *default_str;
int panel_mode = SPLIT_DISPLAY_FLAG | DUAL_PIPE_FLAG;
- if(panelstruct.paneldata)
+ if(panelstruct.paneldata && target_cont_splash_screen())
{
dsi_id = panelstruct.paneldata->panel_controller;
panel_node = panelstruct.paneldata->panel_node_id;
diff --git a/target/apq8084/init.c b/target/apq8084/init.c
index ac195da..5515bb5 100644
--- a/target/apq8084/init.c
+++ b/target/apq8084/init.c
@@ -262,23 +262,35 @@
}
}
+static uint8_t splash_override;
/* Returns 1 if target supports continuous splash screen. */
int target_cont_splash_screen()
{
- switch(board_hardware_id())
- {
- case HW_PLATFORM_SURF:
- case HW_PLATFORM_MTP:
- case HW_PLATFORM_FLUID:
- case HW_PLATFORM_LIQUID:
- dprintf(SPEW, "Target_cont_splash=1\n");
- return 1;
- default:
- dprintf(SPEW, "Target_cont_splash=0\n");
- return 0;
+ uint8_t splash_screen = 0;
+ if(!splash_override) {
+ switch(board_hardware_id())
+ {
+ case HW_PLATFORM_SURF:
+ case HW_PLATFORM_MTP:
+ case HW_PLATFORM_FLUID:
+ case HW_PLATFORM_LIQUID:
+ dprintf(SPEW, "Target_cont_splash=1\n");
+ splash_screen = 1;
+ break;
+ default:
+ dprintf(SPEW, "Target_cont_splash=0\n");
+ splash_screen = 0;
+ }
}
+ return splash_screen;
}
+void target_force_cont_splash_disable(uint8_t override)
+{
+ splash_override = override;
+}
+
+
unsigned target_baseband()
{
return board_baseband();
diff --git a/target/apq8084/target_display.c b/target/apq8084/target_display.c
index fd6f766..8af6d1b 100755
--- a/target/apq8084/target_display.c
+++ b/target/apq8084/target_display.c
@@ -247,6 +247,7 @@
uint32_t ret = 0;
ret = gcdb_display_init(panel_name, MDP_REV_50, MIPI_FB_ADDR);
if (ret) {
+ target_force_cont_splash_disable(true);
msm_display_off();
}
}
diff --git a/target/msm8226/target_display.c b/target/msm8226/target_display.c
index a6475d8..d36ac56 100755
--- a/target/msm8226/target_display.c
+++ b/target/msm8226/target_display.c
@@ -392,13 +392,13 @@
uint32_t ret = 0;
do {
+ target_force_cont_splash_disable(false);
ret = gcdb_display_init(panel_name, MDP_REV_50, MIPI_FB_ADDR);
if (!ret || ret == ERR_NOT_SUPPORTED) {
break;
} else {
target_force_cont_splash_disable(true);
msm_display_off();
- target_force_cont_splash_disable(false);
}
} while (++panel_loop <= oem_panel_max_auto_detect_panels());
diff --git a/target/msm8610/init.c b/target/msm8610/init.c
index 5132aed..f64acc2 100644
--- a/target/msm8610/init.c
+++ b/target/msm8610/init.c
@@ -344,23 +344,31 @@
dprintf(CRITICAL, "Rebooting failed\n");
}
+static uint8_t splash_override;
+
int target_cont_splash_screen()
{
- int ret = 0;
-
- switch(board_hardware_id())
- {
- case HW_PLATFORM_QRD:
- case HW_PLATFORM_MTP:
- case HW_PLATFORM_SURF:
- dprintf(SPEW, "Target_cont_splash=1\n");
- ret = 1;
- break;
- default:
- dprintf(SPEW, "Target_cont_splash=0\n");
- ret = 0;
+ uint8_t splash_screen = 0;
+ if(!splash_override) {
+ switch(board_hardware_id())
+ {
+ case HW_PLATFORM_QRD:
+ case HW_PLATFORM_MTP:
+ case HW_PLATFORM_SURF:
+ dprintf(SPEW, "Target_cont_splash=1\n");
+ splash_screen = 1;
+ break;
+ default:
+ dprintf(SPEW, "Target_cont_splash=0\n");
+ splash_screen = 0;
+ }
}
- return ret;
+ return splash_screen;
+}
+
+void target_force_cont_splash_disable(uint8_t override)
+{
+ splash_override = override;
}
unsigned target_pause_for_battery_charge(void)
diff --git a/target/msm8610/target_display.c b/target/msm8610/target_display.c
index 4b963b8..b815501 100755
--- a/target/msm8610/target_display.c
+++ b/target/msm8610/target_display.c
@@ -164,7 +164,14 @@
void target_display_init(const char *panel_name)
{
- gcdb_display_init(panel_name, MDP_REV_304, MIPI_FB_ADDR);
+ uint32_t ret = 0;
+
+ ret = gcdb_display_init(panel_name, MDP_REV_304, MIPI_FB_ADDR);
+ if(ret) {
+ /* Panel signature did not match, turn off the display */
+ target_force_cont_splash_disable(true);
+ msm_display_off();
+ }
}
void target_display_shutdown(void)
diff --git a/target/msm8974/target_display.c b/target/msm8974/target_display.c
index c89c483..56a03c1 100755
--- a/target/msm8974/target_display.c
+++ b/target/msm8974/target_display.c
@@ -384,6 +384,7 @@
break;
default:
do {
+ target_force_cont_splash_disable(false);
ret = gcdb_display_init(panel_name, MDP_REV_50,
MIPI_FB_ADDR);
if (!ret || ret == ERR_NOT_SUPPORTED) {
@@ -391,7 +392,6 @@
} else {
target_force_cont_splash_disable(true);
msm_display_off();
- target_force_cont_splash_disable(false);
}
} while (++panel_loop <= oem_panel_max_auto_detect_panels());
break;