target: msm8952: Add display support for MSM8952 Polaris target
Enable BYD1200P display panel for MSM8952 Polaris
targets.
Change-Id: Ia815ab0ef27905c8e39379748c49480d08568e29
diff --git a/target/msm8952/oem_panel.c b/target/msm8952/oem_panel.c
index 30a56e9..5b2d59d 100644
--- a/target/msm8952/oem_panel.c
+++ b/target/msm8952/oem_panel.c
@@ -54,6 +54,7 @@
#include "include/panel_nt35597_wqxga_dsc_video.h"
#include "include/panel_nt35597_wqxga_dsc_cmd.h"
#include "include/panel_hx8394d_720p_video.h"
+#include "include/panel_byd_1200p_video.h"
/*---------------------------------------------------------------------------*/
/* static panel selection variable */
@@ -69,6 +70,7 @@
NT35597_WQXGA_DSC_VIDEO_PANEL,
NT35597_WQXGA_DSC_CMD_PANEL,
HX8394D_720P_VIDEO_PANEL,
+ BYD_1200P_VIDEO_PANEL,
UNKNOWN_PANEL
};
@@ -91,6 +93,7 @@
{"nt35597_wqxga_dsc_video", NT35597_WQXGA_DSC_VIDEO_PANEL},
{"nt35597_wqxga_dsc_cmd", NT35597_WQXGA_DSC_CMD_PANEL},
{"hx8394d_720p_video", HX8394D_720P_VIDEO_PANEL},
+ {"byd_1200p_video", BYD_1200P_VIDEO_PANEL},
};
static uint32_t panel_id;
@@ -431,6 +434,33 @@
hx8394d_720p_video_timings, TIMING_SIZE);
pinfo->mipi.signature = HX8394D_720P_VIDEO_SIGNATURE;
break;
+ case BYD_1200P_VIDEO_PANEL:
+ panelstruct->paneldata = &byd_1200p_video_panel_data;
+ panelstruct->paneldata->panel_with_enable_gpio = 1;
+ panelstruct->panelres = &byd_1200p_video_panel_res;
+ panelstruct->color = &byd_1200p_video_color;
+ panelstruct->videopanel = &byd_1200p_video_video_panel;
+ panelstruct->commandpanel = &byd_1200p_video_command_panel;
+ panelstruct->state = &byd_1200p_video_state;
+ panelstruct->laneconfig = &byd_1200p_video_lane_config;
+ panelstruct->paneltiminginfo
+ = &byd_1200p_video_timing_info;
+ panelstruct->panelresetseq
+ = &byd_1200p_video_panel_reset_seq;
+ panelstruct->backlightinfo = &byd_1200p_video_backlight;
+ pinfo->mipi.panel_on_cmds
+ = byd_1200p_video_on_command;
+ pinfo->mipi.num_of_panel_on_cmds
+ = BYD_1200P_VIDEO_ON_COMMAND;
+ pinfo->mipi.panel_off_cmds
+ = byd_1200p_video_off_command;
+ pinfo->mipi.num_of_panel_off_cmds
+ = BYD_1200P_VIDEO_OFF_COMMAND;
+ memcpy(phy_db->timing,
+ byd_1200p_video_timings, TIMING_SIZE);
+ pinfo->mipi.signature = BYD_1200P_VIDEO_SIGNATURE;
+ phy_db->regulator_mode = DSI_PHY_REGULATOR_LDO_MODE;
+ break;
case UNKNOWN_PANEL:
default:
memset(panelstruct, 0, sizeof(struct panel_struct));
@@ -461,6 +491,7 @@
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;
uint32_t target_id, plat_hw_ver_major;
@@ -496,6 +527,11 @@
panel_id = TRULY_1080P_VIDEO_PANEL;
break;
case HW_PLATFORM_QRD:
+ if (hw_subtype == HW_PLATFORM_SUBTYPE_POLARIS) {
+ panel_id = BYD_1200P_VIDEO_PANEL;
+ break;
+ }
+
target_id = board_target_id();
plat_hw_ver_major = ((target_id >> 16) & 0xFF);
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index 0598833..f3c3c32 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -354,10 +354,15 @@
struct msm_panel_info *pinfo)
{
int ret = NO_ERROR;
+ uint32_t hw_id = board_hardware_id();
+ uint32_t hw_subtype = board_hardware_subtype();
if (platform_is_msm8956()) {
reset_gpio.pin_id = 25;
bkl_gpio.pin_id = 66;
+ } else if ((hw_id == HW_PLATFORM_QRD) &&
+ (hw_subtype == HW_PLATFORM_SUBTYPE_POLARIS)) {
+ enable_gpio.pin_id = 19;
}
if (enable) {