target: msm8952: Enable RM69090 truly cmd mode panel support

Enable truly rm69090 panel ,configure PMI GPIO
12 as bklt_en gpio on Spyro WDP devices.

Change-Id: I76f9e5403ccd0e6878dc47b516ca36a872898e0d
diff --git a/target/msm8952/oem_panel.c b/target/msm8952/oem_panel.c
index e49252c..e594258 100644
--- a/target/msm8952/oem_panel.c
+++ b/target/msm8952/oem_panel.c
@@ -66,6 +66,7 @@
 #include "include/panel_hx8399c_fhd_pluse_video.h"
 #include "include/panel_hx8399c_hd_plus_video.h"
 #include "include/panel_edo_rm67162_qvga_cmd.h"
+#include "include/panel_truly_rm69090_qvga_cmd.h"
 #include "include/panel_nt35695b_truly_fhd_video.h"
 #include "include/panel_nt35695b_truly_fhd_cmd.h"
 
@@ -96,6 +97,7 @@
 	NT35695B_TRULY_FHD_VIDEO_PANEL,
 	NT35695B_TRULY_FHD_CMD_PANEL,
 	RM67162_QVGA_CMD_PANEL,
+	RM69090_QVGA_CMD_PANEL,
 	UNKNOWN_PANEL
 };
 
@@ -131,6 +133,7 @@
 	{"nt35695b_truly_fhd_video", NT35695B_TRULY_FHD_VIDEO_PANEL},
 	{"nt35695b_truly_fhd_cmd", NT35695B_TRULY_FHD_CMD_PANEL},
 	{"rm67162_qvga_cmd", RM67162_QVGA_CMD_PANEL},
+	{"rm69090_qvga_cmd", RM69090_QVGA_CMD_PANEL},
 };
 
 static uint32_t panel_id;
@@ -849,6 +852,37 @@
 				TIMING_SIZE_12NM);
 		pinfo->mipi.tx_eot_append = true;
 		break;
+	case RM69090_QVGA_CMD_PANEL:
+		panelstruct->paneldata    = &truly_rm69090_qvga_cmd_panel_data;
+		panelstruct->panelres     = &truly_rm69090_qvga_cmd_panel_res;
+		panelstruct->color        = &truly_rm69090_qvga_cmd_color;
+		panelstruct->videopanel   =
+				&truly_rm69090_qvga_cmd_video_panel;
+		panelstruct->commandpanel =
+				&truly_rm69090_qvga_cmd_command_panel;
+		panelstruct->state        = &truly_rm69090_qvga_cmd_state;
+		panelstruct->laneconfig   =
+				&truly_rm69090_qvga_cmd_lane_config;
+		panelstruct->paneltiminginfo
+				= &truly_rm69090_qvga_cmd_timing_info;
+		panelstruct->panelresetseq
+				= &truly_rm69090_qvga_cmd_reset_seq;
+		panelstruct->backlightinfo = &truly_rm69090_qvga_cmd_backlight;
+		pinfo->labibb = NULL;
+		pinfo->mipi.panel_on_cmds
+				= truly_rm69090_qvga_cmd_on_command;
+		pinfo->mipi.num_of_panel_on_cmds
+				= TRULY_RM69090_QVGA_CMD_ON_COMMAND;
+		pinfo->mipi.panel_off_cmds
+				= truly_rm69090_qvga_cmd_off_command;
+		pinfo->mipi.num_of_panel_off_cmds
+				= TRULY_RM69090_QVGA_CMD_OFF_COMMAND;
+		if (phy_db->pll_type == DSI_PLL_TYPE_12NM)
+			memcpy(phy_db->timing,
+				truly_rm69090_qvga_cmd_12nm_timings,
+				TIMING_SIZE_12NM);
+		pinfo->mipi.tx_eot_append = true;
+		break;
 	case NT35695B_TRULY_FHD_VIDEO_PANEL:
 		panelstruct->paneldata    = &nt35695b_truly_fhd_video_panel_data;
 		panelstruct->panelres     = &nt35695b_truly_fhd_video_panel_res;
@@ -1042,9 +1076,13 @@
 		}
 
 		if (platform_is_sdm429() || platform_is_sdm429w()) {
-			if (hw_subtype == HW_PLATFORM_SUBTYPE_429W_PM660) /* Spyro target */
-				panel_id = RM67162_QVGA_CMD_PANEL;
-			else
+			if (hw_subtype == HW_PLATFORM_SUBTYPE_429W_PM660) {
+				/* Spyro target */
+				if (plat_hw_ver_major == 1) /* WDP 2700 */
+					panel_id = RM69090_QVGA_CMD_PANEL;
+				else /* WTP 2700 DVT */
+					panel_id = RM67162_QVGA_CMD_PANEL;
+			} else
 				panel_id = HX8399C_HD_PLUS_VIDEO_PANEL;
 		}
 
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index 43a3382..b74c4a5 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -63,6 +63,8 @@
 #define TRULY_VID_PANEL_STRING "1:dsi:0:qcom,mdss_dsi_truly_720p_video:1:none:cfg:single_dsi"
 #define TRULY_CMD_PANEL_STRING "1:dsi:0:qcom,mdss_dsi_truly_720p_cmd:1:none:cfg:single_dsi"
 
+#define VARIANT_MAJOR_MASK        (0x00ff0000)
+
 /*---------------------------------------------------------------------------*/
 /* GPIO configuration                                                        */
 /*---------------------------------------------------------------------------*/
@@ -484,6 +486,13 @@
 			.out_strength = PM_GPIO_OUT_DRIVE_HIGH,
 			};
 
+			if (((board_target_id() & VARIANT_MAJOR_MASK)) &&
+				platform_is_sdm429w()) {
+				/* enable PM660 GPIO-12 for backlight enable */
+				bkl_en_gpio.pin_id = 12;
+				gpio_param.inv_int_pol = PM_GPIO_INVERT;
+			}
+
 			dprintf(SPEW, "%s: gpio=%d enable=%d\n", __func__,
 				bkl_en_gpio.pin_id, enable);