Merge "target: msm8952: turn off vibrator before jump to kernel" into lk.lnx.1.0-dev.1.0
diff --git a/dev/gcdb/display/include/panel_r69006_1080p_cmd.h b/dev/gcdb/display/include/panel_r69006_1080p_cmd.h
index 01c8d17..06f6a36 100755
--- a/dev/gcdb/display/include/panel_r69006_1080p_cmd.h
+++ b/dev/gcdb/display/include/panel_r69006_1080p_cmd.h
@@ -357,6 +357,14 @@
 	0x6E, 0x3F, 0x36, 0x00, 0x5A, 0x4F, 0x38, 0x41, 0x54, 0x03, 0x04, 0x00
 };
 
+static const uint32_t r69006_1080p_14nm_cmd_timings[] = {
+	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+	0x24, 0x1b, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+};
+
 static struct panel_timing r69006_1080p_cmd_timing_info = {
 	0, 4, 0x20, 0x2c
 };
diff --git a/dev/gcdb/display/include/panel_r69006_1080p_video.h b/dev/gcdb/display/include/panel_r69006_1080p_video.h
index 82be298..d2beedb 100755
--- a/dev/gcdb/display/include/panel_r69006_1080p_video.h
+++ b/dev/gcdb/display/include/panel_r69006_1080p_video.h
@@ -296,6 +296,14 @@
 	0x7d, 0x25, 0x1d, 0x00, 0x37, 0x33, 0x22, 0x27, 0x1e, 0x03, 0x04, 0x00
 };
 
+static const uint32_t r69006_1080p_14nm_video_timings[] = {
+	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+	0x24, 0x1f, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+	0x24, 0x1b, 0x08, 0x09, 0x05, 0x03, 0x04, 0xa0,
+};
+
 static struct panel_timing r69006_1080p_video_timing_info = {
 	0, 4, 0x20, 0x2c
 };
diff --git a/target/msmtitanium/oem_panel.c b/target/msmtitanium/oem_panel.c
index 2f38db6..1d5ebb1 100644
--- a/target/msmtitanium/oem_panel.c
+++ b/target/msmtitanium/oem_panel.c
@@ -47,6 +47,9 @@
 /*---------------------------------------------------------------------------*/
 #include "include/panel_truly_1080p_video.h"
 #include "include/panel_truly_1080p_cmd.h"
+#include "include/panel_r69006_1080p_video.h"
+#include "include/panel_r69006_1080p_cmd.h"
+
 
 /*---------------------------------------------------------------------------*/
 /* static panel selection variable                                           */
@@ -54,6 +57,8 @@
 enum {
 	TRULY_1080P_VIDEO_PANEL,
 	TRULY_1080P_CMD_PANEL,
+	R69006_1080P_VIDEO_PANEL,
+	R69006_1080P_CMD_PANEL,
 	UNKNOWN_PANEL
 };
 
@@ -64,6 +69,8 @@
 static struct panel_list supp_panels[] = {
 	{"truly_1080p_video", TRULY_1080P_VIDEO_PANEL},
 	{"truly_1080p_cmd", TRULY_1080P_CMD_PANEL},
+	{"r69006_1080p_video", R69006_1080P_VIDEO_PANEL},
+	{"r69006_1080p_cmd", R69006_1080P_CMD_PANEL},
 };
 
 static uint32_t panel_id;
@@ -79,6 +86,9 @@
 	if (panel_id == TRULY_1080P_CMD_PANEL ||
 			panel_id == TRULY_1080P_VIDEO_PANEL)
 		mdelay(TRULY_1080P_PANEL_ON_DELAY);
+	else if (panel_id == R69006_1080P_CMD_PANEL) {
+		mdelay(R69006_1080P_CMD_PANEL_ON_DELAY);
+	}
 
 	return NO_ERROR;
 }
@@ -153,6 +163,62 @@
 			MAX_TIMING_CONFIG * sizeof(uint32_t));
 		pinfo->mipi.signature 	= TRULY_1080P_CMD_SIGNATURE;
 		break;
+	case R69006_1080P_VIDEO_PANEL:
+		panelstruct->paneldata    = &r69006_1080p_video_panel_data;
+		panelstruct->panelres     = &r69006_1080p_video_panel_res;
+		panelstruct->color        = &r69006_1080p_video_color;
+		panelstruct->videopanel   = &r69006_1080p_video_video_panel;
+		panelstruct->commandpanel = &r69006_1080p_video_command_panel;
+		panelstruct->state        = &r69006_1080p_video_state;
+		panelstruct->laneconfig   = &r69006_1080p_video_lane_config;
+		panelstruct->paneltiminginfo
+			= &r69006_1080p_video_timing_info;
+		panelstruct->panelresetseq
+			= &r69006_1080p_video_reset_seq;
+		panelstruct->backlightinfo = &r69006_1080p_video_backlight;
+		pinfo->labibb = &r69006_1080p_video_labibb;
+		pinfo->mipi.panel_on_cmds
+			= r69006_1080p_video_on_command;
+		pinfo->mipi.num_of_panel_on_cmds
+			= R69006_1080P_VIDEO_ON_COMMAND;
+		pinfo->mipi.panel_off_cmds
+			= r69006_1080p_video_off_command;
+		pinfo->mipi.num_of_panel_off_cmds
+			= R69006_1080P_VIDEO_OFF_COMMAND;
+		memcpy(phy_db->timing,
+			r69006_1080p_14nm_video_timings,
+			MAX_TIMING_CONFIG * sizeof(uint32_t));
+		pinfo->mipi.signature = R69006_1080P_VIDEO_SIGNATURE;
+		break;
+	case R69006_1080P_CMD_PANEL:
+		panelstruct->paneldata    = &r69006_1080p_cmd_panel_data;
+		panelstruct->panelres     = &r69006_1080p_cmd_panel_res;
+		panelstruct->color        = &r69006_1080p_cmd_color;
+		panelstruct->videopanel   = &r69006_1080p_cmd_video_panel;
+		panelstruct->commandpanel = &r69006_1080p_cmd_command_panel;
+		panelstruct->state        = &r69006_1080p_cmd_state;
+		panelstruct->laneconfig   = &r69006_1080p_cmd_lane_config;
+		panelstruct->paneltiminginfo
+			= &r69006_1080p_cmd_timing_info;
+		panelstruct->panelresetseq
+			= &r69006_1080p_cmd_reset_seq;
+		panelstruct->backlightinfo = &r69006_1080p_cmd_backlight;
+		pinfo->labibb = &r69006_1080p_cmd_labibb;
+		pinfo->mipi.panel_on_cmds
+			= r69006_1080p_cmd_on_command;
+		pinfo->mipi.num_of_panel_on_cmds
+			= R69006_1080P_CMD_ON_COMMAND;
+		pinfo->mipi.panel_off_cmds
+			= r69006_1080p_cmd_off_command;
+		pinfo->mipi.num_of_panel_off_cmds
+			= R69006_1080P_CMD_OFF_COMMAND;
+		memcpy(phy_db->timing,
+			r69006_1080p_14nm_cmd_timings,
+			MAX_TIMING_CONFIG * sizeof(uint32_t));
+		pinfo->mipi.signature = R69006_1080P_CMD_SIGNATURE;
+		pinfo->mipi.tx_eot_append = true;
+		pinfo->mipi.rx_eot_ignore = true;
+		break;
 	case UNKNOWN_PANEL:
 	default:
 		memset(panelstruct, 0, sizeof(struct panel_struct));
@@ -208,6 +274,9 @@
 	case HW_PLATFORM_RCM:
 		panel_id = TRULY_1080P_VIDEO_PANEL;
 		break;
+	case HW_PLATFORM_QRD:
+		panel_id = R69006_1080P_CMD_PANEL;
+		break;
 	default:
 		dprintf(CRITICAL, "Display not enabled for %d HW type\n",
 			hw_id);