target: display: add panel type

Add eDP panel type support in GCDB in addition to DSI type.
All future targets will use eDP panel support from GCDB.

CRs-Fixed: 661151
Change-Id: I63e9a1d8c88efed46c7be92eac03c26aa5bd1840
diff --git a/target/apq8084/oem_panel.c b/target/apq8084/oem_panel.c
index 4ec74a4..c90f990 100644
--- a/target/apq8084/oem_panel.c
+++ b/target/apq8084/oem_panel.c
@@ -51,7 +51,8 @@
 JDI_1080P_VIDEO_PANEL,
 JDI_QHD_DUALDSI_VIDEO_PANEL,
 JDI_QHD_DUALDSI_CMD_PANEL,
-UNKNOWN_PANEL
+EDP_OEM_PANEL,
+UNKNOWN_PANEL,
 };
 
 /*
@@ -62,6 +63,7 @@
 	{"jdi_1080p_video", JDI_1080P_VIDEO_PANEL},
 	{"jdi_qhd_dualdsi_video", JDI_QHD_DUALDSI_VIDEO_PANEL},
 	{"jdi_qhd_dualdsi_cmd", JDI_QHD_DUALDSI_CMD_PANEL},
+	{"edp", EDP_OEM_PANEL},
 };
 
 static uint32_t panel_id;
@@ -91,14 +93,15 @@
 	return NO_ERROR;
 }
 
-static bool init_panel_data(struct panel_struct *panelstruct,
+static int init_panel_data(struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
-	bool ret = true;
+	int pan_type;
 
 	switch (panel_id) {
 	case JDI_1080P_VIDEO_PANEL:
+		pan_type = PANEL_TYPE_DSI;
 		panelstruct->paneldata    = &jdi_1080p_video_panel_data;
 		panelstruct->panelres     = &jdi_1080p_video_panel_res;
 		panelstruct->color        = &jdi_1080p_video_color;
@@ -119,6 +122,7 @@
 			jdi_1080p_video_timings, TIMING_SIZE);
 		break;
 	case JDI_QHD_DUALDSI_VIDEO_PANEL:
+		pan_type = PANEL_TYPE_DSI;
 		panelstruct->paneldata    = &jdi_qhd_dualdsi_video_panel_data;
 		panelstruct->panelres     = &jdi_qhd_dualdsi_video_panel_res;
 		panelstruct->color        = &jdi_qhd_dualdsi_video_color;
@@ -139,6 +143,7 @@
 			jdi_qhd_dualdsi_video_timings, TIMING_SIZE);
 		break;
 	case JDI_QHD_DUALDSI_CMD_PANEL:
+		pan_type = PANEL_TYPE_DSI;
 		panelstruct->paneldata    = &jdi_qhd_dualdsi_cmd_panel_data;
 		panelstruct->panelres     = &jdi_qhd_dualdsi_cmd_panel_res;
 		panelstruct->color        = &jdi_qhd_dualdsi_cmd_color;
@@ -158,15 +163,20 @@
 		memcpy(phy_db->timing,
 			jdi_qhd_dualdsi_cmd_timings, TIMING_SIZE);
 		break;
+	case EDP_OEM_PANEL:
+		pan_type = PANEL_TYPE_EDP;
+		/* edp panel init base on edid */
+		break;
 	default:
 	case UNKNOWN_PANEL:
-		ret = false;
+		pan_type = PANEL_TYPE_UNKNOWN;
 		break;
 	}
-	return ret;
+
+	return pan_type;
 }
 
-bool oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
+int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
@@ -202,7 +212,7 @@
 	default:
 		dprintf(CRITICAL, "Display not enabled for %d HW type\n"
 					, hw_id);
-		return false;
+		return PANEL_TYPE_UNKNOWN;
 	}
 
 panel_init:
diff --git a/target/msm8226/oem_panel.c b/target/msm8226/oem_panel.c
index 9b6edbd..e4aacdb 100755
--- a/target/msm8226/oem_panel.c
+++ b/target/msm8226/oem_panel.c
@@ -129,10 +129,12 @@
 	return NO_ERROR;
 }
 
-static void init_panel_data(struct panel_struct *panelstruct,
+static int init_panel_data(struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
+	int pan_type = PANEL_TYPE_DSI;
+
 	switch (panel_id) {
 	case TOSHIBA_720P_VIDEO_PANEL:
 		panelstruct->paneldata    = &toshiba_720p_video_panel_data;
@@ -323,8 +325,11 @@
                 pinfo->mipi.num_of_panel_cmds = 0;
                 memset(phy_db->timing, 0, TIMING_SIZE);
                 pinfo->mipi.signature = 0;
+		pan_type = PANEL_TYPE_UNKNOWN;
                 break;
 	}
+
+	return pan_type;
 }
 
 uint32_t oem_panel_max_auto_detect_panels()
@@ -335,7 +340,7 @@
 
 static uint32_t auto_pan_loop = 0;
 
-bool oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
+int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
@@ -343,7 +348,6 @@
 	uint32_t target_id = board_target_id();
 	uint32_t nt35590_panel_id = NT35590_720P_VIDEO_PANEL;
 	uint32_t hw_subtype = board_hardware_subtype();
-	bool ret = true;
 	int32_t panel_override_id;
 
 	if (panel_name) {
@@ -383,16 +387,15 @@
 						break;
 					default:
 						panel_id = UNKNOWN_PANEL;
-						ret = false;
 						dprintf(CRITICAL, "Unknown panel\n");
-						return ret;
+						return PANEL_TYPE_UNKNOWN;
 				}
 				auto_pan_loop++;
 			}
 			else {
 				dprintf(CRITICAL, "Not supported device, target_id=%x\n"
 									, target_id);
-				return false;
+				return PANEL_TYPE_UNKNOWN;
 			}
 		}
 		break;
@@ -409,11 +412,9 @@
 	default:
 		dprintf(CRITICAL, "Display not enabled for %d HW type\n"
 								, hw_id);
-		return false;
+		return PANEL_TYPE_UNKNOWN;
 	}
 
 panel_init:
-	init_panel_data(panelstruct, pinfo, phy_db);
-
-	return ret;
+	return init_panel_data(panelstruct, pinfo, phy_db);
 }
diff --git a/target/msm8610/oem_panel.c b/target/msm8610/oem_panel.c
index 48dec44..0ca8f4d 100644
--- a/target/msm8610/oem_panel.c
+++ b/target/msm8610/oem_panel.c
@@ -93,10 +93,12 @@
 	return NO_ERROR;
 }
 
-static bool init_panel_data(struct panel_struct *panelstruct,
+static int init_panel_data(struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
+	int pan_type = PANEL_TYPE_DSI;
+
 	switch (panel_id) {
 	case TRULY_WVGA_CMD_PANEL:
 		panelstruct->paneldata    = &truly_wvga_cmd_panel_data;
@@ -225,12 +227,12 @@
 		memset(phy_db->timing, 0, TIMING_SIZE);
 		pinfo->mipi.signature = 0;
 		dprintf(CRITICAL, "Unknown Panel");
-		return false;
+		return PANEL_TYPE_UNKNOWN;
 	default:
 		dprintf(CRITICAL, "Panel ID not detected %d\n", panel_id);
-		return false;
+		return PANEL_TYPE_UNKNOWN;
 	}
-	return true;
+	return pan_type;
 }
 
 uint32_t oem_panel_max_auto_detect_panels()
@@ -239,7 +241,7 @@
 			DISPLAY_MAX_PANEL_DETECTION : 0;
 }
 
-bool oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
+int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
@@ -268,7 +270,7 @@
 			default:
 				dprintf(CRITICAL, "QRD Display not enabled for %d type\n",
 							platform_subtype);
-				return false;
+				return PANEL_TYPE_UNKNOWN;
 		}
 		break;
 	case HW_PLATFORM_MTP:
@@ -283,7 +285,7 @@
 		break;
 	default:
 		dprintf(CRITICAL, "Display not enabled for %d HW type\n", hw_id);
-		return false;
+		return PANEL_TYPE_UNKNOWN;
 	}
 
 	return init_panel_data(panelstruct, pinfo, phy_db);
diff --git a/target/msm8916/oem_panel.c b/target/msm8916/oem_panel.c
index b5f2e01..6f9ac7c 100644
--- a/target/msm8916/oem_panel.c
+++ b/target/msm8916/oem_panel.c
@@ -108,11 +108,11 @@
 	return NO_ERROR;
 }
 
-static bool init_panel_data(struct panel_struct *panelstruct,
+static int init_panel_data(struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
-	bool ret = true;
+	int pan_type = PANEL_TYPE_DSI;
 
 	switch (panel_id) {
 	case JDI_1080P_VIDEO_PANEL:
@@ -244,10 +244,10 @@
 		memset(pinfo->mipi.panel_cmds, 0, sizeof(struct mipi_dsi_cmd));
 		pinfo->mipi.num_of_panel_cmds = 0;
 		memset(phy_db->timing, 0, TIMING_SIZE);
-		ret = false;
+		pan_type = PANEL_TYPE_UNKNOWN;
 		break;
 	}
-	return ret;
+	return pan_type;
 }
 
 uint32_t oem_panel_max_auto_detect_panels()
@@ -256,14 +256,13 @@
                         DISPLAY_MAX_PANEL_DETECTION : 0;
 }
 
-bool oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
+int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
 	uint32_t hw_id = board_hardware_id();
 	uint32_t hw_subtype = board_hardware_subtype();
 	int32_t panel_override_id;
-	bool ret = true;
 	uint32_t target_id, plat_hw_ver_major;
 
 	if (panel_name) {
@@ -298,9 +297,8 @@
 			break;
 		default:
 			panel_id = UNKNOWN_PANEL;
-			ret = false;
 			dprintf(CRITICAL, "Unknown panel\n");
-			return ret;
+			return PANEL_TYPE_UNKNOWN;
 		}
 		auto_pan_loop++;
 		break;
@@ -322,13 +320,13 @@
 		default:
 			dprintf(CRITICAL, "Invalid subtype id %d for QRD HW\n",
 				hw_subtype);
-			return false;
+			return PANEL_TYPE_UNKNOWN;
 		}
 		break;
 	default:
 		dprintf(CRITICAL, "Display not enabled for %d HW type\n",
 			hw_id);
-		return false;
+		return PANEL_TYPE_UNKNOWN;
 	}
 
 panel_init:
diff --git a/target/msm8974/oem_panel.c b/target/msm8974/oem_panel.c
index 8ff54d5..45bcdef 100755
--- a/target/msm8974/oem_panel.c
+++ b/target/msm8974/oem_panel.c
@@ -99,10 +99,12 @@
 	return NO_ERROR;
 }
 
-static void init_panel_data(struct panel_struct *panelstruct,
+static int init_panel_data(struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
+	int pan_type = PANEL_TYPE_DSI;
+
 	switch (panel_id) {
 	case TOSHIBA_720P_VIDEO_PANEL:
 		panelstruct->paneldata    = &toshiba_720p_video_panel_data;
@@ -233,8 +235,11 @@
 		pinfo->mipi.num_of_panel_cmds = 0;
 		memset(phy_db->timing, 0, TIMING_SIZE);
 		pinfo->mipi.signature = 0;
+		pan_type = PANEL_TYPE_UNKNOWN;
 		break;
 	}
+
+	return pan_type;
 }
 
 uint32_t oem_panel_max_auto_detect_panels()
@@ -245,13 +250,12 @@
 
 static uint32_t auto_pan_loop = 0;
 
-bool oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
+int oem_panel_select(const char *panel_name, struct panel_struct *panelstruct,
 			struct msm_panel_info *pinfo,
 			struct mdss_dsi_phy_ctrl *phy_db)
 {
 	uint32_t hw_id = board_hardware_id();
 	uint32_t target_id = board_target_id();
-	bool ret = true;
 	int32_t panel_override_id;
 
 	if (panel_name) {
@@ -287,7 +291,6 @@
 			break;
 		default:
 			panel_id = UNKNOWN_PANEL;
-			ret = false;
 			break;
 		}
 		auto_pan_loop++;
@@ -298,11 +301,9 @@
 	default:
 		dprintf(CRITICAL, "Display not enabled for %d HW type\n"
 					, hw_id);
-		return false;
+		return PANEL_TYPE_UNKNOWN;
 	}
 
 panel_init:
-	init_panel_data(panelstruct, pinfo, phy_db);
-
-	return ret;
+	return init_panel_data(panelstruct, pinfo, phy_db);
 }
diff --git a/target/target_display.c b/target/target_display.c
index 0d69434..bac8a52 100644
--- a/target/target_display.c
+++ b/target/target_display.c
@@ -62,3 +62,28 @@
 {
 	return 0;
 }
+
+__WEAK void target_edp_panel_init(struct msm_panel_info *pinfo)
+{
+	return;
+}
+
+__WEAK int target_edp_panel_clock(uint8_t enable, struct msm_panel_info *pinfo)
+{
+	return 0;
+}
+
+__WEAK int target_edp_panel_enable(void)
+{
+	return 0;
+}
+
+__WEAK int target_edp_panel_disable(void)
+{
+	return 0;
+}
+
+__WEAK int target_edp_bl_ctrl(int enable)
+{
+	return 0;
+}