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;
+}