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;
