diff --git a/dev/gcdb/display/include/panel_edo_rm67162_qvga_cmd.h b/dev/gcdb/display/include/panel_edo_rm67162_qvga_cmd.h
index d91a1b7..eaa4563 100644
--- a/dev/gcdb/display/include/panel_edo_rm67162_qvga_cmd.h
+++ b/dev/gcdb/display/include/panel_edo_rm67162_qvga_cmd.h
@@ -38,7 +38,7 @@
 /*---------------------------------------------------------------------------*/
 static struct panel_config edo_rm67162_qvga_cmd_panel_data = {
 	"qcom,mdss_dsi_edo_rm67162_qvga_cmd", "dsi:0:", "qcom,mdss-dsi-panel",
-	10, 1, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+	10, 1, "DISPLAY_1", 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL
 };
 
 /*---------------------------------------------------------------------------*/
@@ -90,7 +90,7 @@
 
 static char edo_rm67162_qvga_cmd_on_cmd6[] = {
 	0x02, 0x00, 0x29, 0xC0,
-	0x51, 0x00, 0xFF, 0xFF,
+	0x51, 0xFF, 0xFF, 0xFF,
 };
 
 static char edo_rm67162_qvga_cmd_on_cmd7[] = {
@@ -172,7 +172,7 @@
 /* Lane configuration                                                        */
 /*---------------------------------------------------------------------------*/
 static struct lane_configuration edo_rm67162_qvga_cmd_lane_config = {
-	1, 0, 1, 0, 0, 0
+	1, 0, 1, 0, 0, 0, 0
 };
 
 /*---------------------------------------------------------------------------*/
@@ -183,7 +183,7 @@
 };
 
 static struct panel_timing edo_rm67162_qvga_cmd_timing_info = {
-	0, 4, 0x20, 0x2c
+	0, 4, 0x09, 0x2c
 };
 
 /*---------------------------------------------------------------------------*/
@@ -197,7 +197,7 @@
 /* Backlight setting                                                         */
 /*---------------------------------------------------------------------------*/
 static struct backlight edo_rm67162_qvga_cmd_backlight = {
-	1, 1, 4095, 100, 1, "PMIC_8941"
+	2, 1, 255, 100, 2, "BL_CTL_DCS"
 };
 
 #endif /*_PANEL_EDO_RM67162_QVGA_CMD_H_*/
diff --git a/include/km_main.h b/include/km_main.h
index 544dc55..117c24e 100644
--- a/include/km_main.h
+++ b/include/km_main.h
@@ -72,6 +72,7 @@
     KEYMASTER_MILESTONE_CALL				= (KEYMASTER_UTILS_CMD_ID + 4UL),
     KEYMASTER_SECURE_WRITE_PROTECT			= (KEYMASTER_UTILS_CMD_ID + 6UL),
     KEYMASTER_SET_VBH					= (KEYMASTER_UTILS_CMD_ID + 17UL),
+    KEYMASTER_GET_DATE_SUPPORT				= (KEYMASTER_UTILS_CMD_ID + 21UL),
 
     KEYMASTER_LAST_CMD_ENTRY				= (int)0xFFFFFFFFULL
 } keymaster_cmd_t;
@@ -279,4 +280,12 @@
 	int status;
 } __attribute__ ((packed)) km_set_vbh_rsp_t;
 
+typedef struct {
+	uint32_t cmd_id;
+} __attribute__ ((packed)) km_get_date_support_req;
+
+typedef struct {
+	int32_t status;
+} __attribute__ ((packed)) km_get_date_support_rsp;
+
 #endif /* KM_MAIN_H */
diff --git a/platform/msm_shared/avb/VerifiedBoot.c b/platform/msm_shared/avb/VerifiedBoot.c
index 642747d..7a06655 100644
--- a/platform/msm_shared/avb/VerifiedBoot.c
+++ b/platform/msm_shared/avb/VerifiedBoot.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -48,6 +48,7 @@
 #define MAX_PART_NAME_SIZE		10
 #define MAX_NUM_REQ_PARTITION	8
 #define BOOT_HEADER_VERSION_ZERO	0
+#define MAX_PROPERTY_SIZE        10
 
 char *avb_verify_partition_name[] = {
 	"boot",
@@ -359,6 +360,43 @@
 	}
 }
 
+static UINT32 ParseBootSecurityLevel (const CHAR8 *BootSecurityLevel,
+                                      size_t BootSecurityLevelStrSize)
+{
+	UINT32 PatchLevelDate = 0;
+	UINT32 PatchLevelMonth = 0;
+	UINT32 PatchLevelYear = 0;
+	UINT32 SeparatorCount = 0;
+	UINT32 Count = 0;
+
+	/*Parse the value of security patch as per YYYY-MM-DD format*/
+	while (Count < BootSecurityLevelStrSize) {
+		if (BootSecurityLevel[Count] == '-') {
+			SeparatorCount++;
+		}
+		else if (SeparatorCount == 2) {
+			PatchLevelDate *= 10;
+			PatchLevelDate += (BootSecurityLevel[Count] - '0');
+		}
+		else if (SeparatorCount == 1) {
+			PatchLevelMonth *= 10;
+			PatchLevelMonth += (BootSecurityLevel[Count] - '0');
+		}
+		else if (SeparatorCount == 0) {
+			PatchLevelYear *= 10;
+			PatchLevelYear += (BootSecurityLevel[Count] - '0');
+		}
+		else {
+			return -1;
+		}
+		Count++;
+	}
+
+	PatchLevelDate = PatchLevelDate << 11;
+	PatchLevelYear = (PatchLevelYear - 2000) << 4;
+	return (PatchLevelDate | PatchLevelYear | PatchLevelMonth);
+}
+
 static VOID ComputeVbMetaDigest (AvbSlotVerifyData* SlotData, CHAR8* Digest) {
 	size_t Index;
 	AvbSHA256Ctx Ctx;
@@ -397,6 +435,9 @@
 	AvbHashtreeErrorMode VerityFlags = AVB_HASHTREE_ERROR_MODE_RESTART_AND_INVALIDATE;
 	device_info DevInfo_vb;
 	CHAR8 Digest[AVB_SHA256_DIGEST_SIZE] = {0};
+	const CHAR8 *BootSecurityLevelStr = NULL;
+	size_t BootSecurityLevelStrSize = 0;
+	INT32 BootSecurityLevel = 0;
 
 	HeaderVersion = Info->header_version;
 	Info->boot_state = RED;
@@ -568,7 +609,28 @@
 	GUARD_OUT(AppendVBCommonCmdLine(Info));
 	GUARD_OUT(Appendvbcmdline(Info, SlotData->cmdline));
 	DevInfo_vb.is_unlocked = !is_device_locked();
-	set_os_version(ADD_SALT_BUFF_OFFSET(Info->images[0].image_buffer));
+
+	/* Send date value in security patch only when KM TA supports it and the
+	*  property is available in vbmeta data, send the old value in other cases
+	*/
+	BootSecurityLevelStr = avb_property_lookup (
+						SlotData->vbmeta_images[0].vbmeta_data,
+						SlotData->vbmeta_images[0].vbmeta_size,
+						"com.android.build.boot.security_patch",
+						0, &BootSecurityLevelStrSize);
+
+	if (BootSecurityLevelStr != NULL &&
+		BootSecurityLevelStrSize == MAX_PROPERTY_SIZE) {
+		BootSecurityLevel = ParseBootSecurityLevel (BootSecurityLevelStr,
+								BootSecurityLevelStrSize);
+		if (BootSecurityLevel < 0) {
+			dprintf (CRITICAL, "System security patch level format invalid\n");
+			Status = EFI_INVALID_PARAMETER;
+			goto out;
+		}
+	}
+
+	set_os_version_with_date(ADD_SALT_BUFF_OFFSET(Info->images[0].image_buffer), BootSecurityLevel);
 	if(!send_rot_command((uint32_t)DevInfo_vb.is_unlocked))
 		return EFI_LOAD_ERROR;
 
diff --git a/platform/msm_shared/boot_verifier.c b/platform/msm_shared/boot_verifier.c
index 4bc0995..caee469 100644
--- a/platform/msm_shared/boot_verifier.c
+++ b/platform/msm_shared/boot_verifier.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014-2016, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2014-2016, 2019 The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -779,6 +779,25 @@
 	return oem_keystore;
 }
 
+void set_os_version_with_date(unsigned char* img_addr, uint32_t system_security_level)
+{
+	boot_img_hdr *img_hdr = NULL;
+	bool supported;
+	int ret = get_date_support (&supported);
+
+	/* Extract the os version and patch level */
+	if (img_addr) {
+		img_hdr = (boot_img_hdr *)img_addr;
+		boot_state_info.system_version = (img_hdr->os_version & 0xFFFFF800) >> 11;
+		if(!ret && supported && system_security_level)
+			boot_state_info.system_security_level = system_security_level;
+		else
+			boot_state_info.system_security_level = (img_hdr->os_version & 0x7FF);
+	} else {
+		dprintf(CRITICAL, "Image address should not be NULL\n");
+	}
+}
+
 #if OSVERSION_IN_BOOTIMAGE
 void set_os_version(unsigned char* img_addr)
 {
@@ -825,3 +844,26 @@
 	}
 	return ret;
 }
+
+int get_date_support (bool *supported)
+{
+	int status = 0;
+	km_get_date_support_req date_support_req = {0};
+	km_get_date_support_rsp date_support_rsp = {0};
+	int app_handle = get_secapp_handle();
+
+	date_support_req.cmd_id = KEYMASTER_GET_DATE_SUPPORT;
+	status = qseecom_send_command (app_handle, (void *)&date_support_req, sizeof (date_support_req), (void *)&date_support_rsp, sizeof (date_support_rsp));
+	if (status != 0 || date_support_rsp.status != 0 ) {
+		dprintf(CRITICAL, "QSEEcom command to get date support returned error, status: %d\n",date_support_rsp.status);
+
+		if (status == 0 && date_support_rsp.status == KM_ERROR_INVALID_TAG) {
+			dprintf(INFO, "Date in patch level NOT supported in keymaster\n");
+		}
+		*supported = false;
+		return status;
+	}
+
+	*supported = true;
+	return status;
+}
diff --git a/platform/msm_shared/include/boot_verifier.h b/platform/msm_shared/include/boot_verifier.h
index 5525a7a..6d2b2db 100644
--- a/platform/msm_shared/include/boot_verifier.h
+++ b/platform/msm_shared/include/boot_verifier.h
@@ -178,6 +178,7 @@
 bool send_rot_command(uint32_t is_unlocked);
 /* function to set the os version and patch level. */
 void set_os_version(unsigned char* img_addr);
+void set_os_version_with_date(unsigned char* img_addr, uint32_t system_security_level);
 unsigned char* get_boot_fingerprint(unsigned int* buf_size);
 bool boot_verify_compare_sha256(unsigned char *image_ptr,
 		unsigned int image_size, unsigned char *signature_ptr, RSA *rsa);
@@ -185,4 +186,7 @@
 uint32_t read_der_message_length(unsigned char* input, unsigned sz);
 /* Function to set verified boot hash in keymaster */
 int set_verified_boot_hash (const char *vbh, size_t vbh_size);
+/* Function to check date support in keymaster */
+int get_date_support (bool *supported);
+
 #endif
diff --git a/platform/msm_shared/include/regulator.h b/platform/msm_shared/include/regulator.h
index 9759354..fa68fff 100644
--- a/platform/msm_shared/include/regulator.h
+++ b/platform/msm_shared/include/regulator.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2014-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2014-2017,2019 The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -71,7 +71,9 @@
 #define REG_LDO6	BIT(5)
 #define REG_LDO11	BIT(10)
 #define REG_LDO12	BIT(11)
+#define REG_LDO13	BIT(12)
 #define REG_LDO14	BIT(13)
+#define REG_LDO15	BIT(14)
 #define REG_LDO17	BIT(16)
 #define REG_LDO18	BIT(17)
 #define REG_LDO28	BIT(27)
diff --git a/target/msm8952/oem_panel.c b/target/msm8952/oem_panel.c
index 27f7eec..55619e7 100644
--- a/target/msm8952/oem_panel.c
+++ b/target/msm8952/oem_panel.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2016, 2018 The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2016, 2018-2019 The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -65,6 +65,7 @@
 #include "include/panel_lead_fl10802_fwvga_video.h"
 #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_nt35695b_truly_fhd_video.h"
 #include "include/panel_nt35695b_truly_fhd_cmd.h"
 
@@ -94,6 +95,7 @@
 	HX8399C_HD_PLUS_VIDEO_PANEL,
 	NT35695B_TRULY_FHD_VIDEO_PANEL,
 	NT35695B_TRULY_FHD_CMD_PANEL,
+	RM67162_QVGA_CMD_PANEL,
 	UNKNOWN_PANEL
 };
 
@@ -128,6 +130,7 @@
 	{"hx8399c_hd_plus_video", HX8399C_HD_PLUS_VIDEO_PANEL},
 	{"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},
 };
 
 static uint32_t panel_id;
@@ -815,6 +818,37 @@
 		pinfo->mipi.signature    = HX8399C_HD_PLUS_VIDEO_SIGNATURE;
 		pinfo->mipi.tx_eot_append = true;
 		break;
+	case RM67162_QVGA_CMD_PANEL:
+		panelstruct->paneldata    = &edo_rm67162_qvga_cmd_panel_data;
+		panelstruct->panelres     = &edo_rm67162_qvga_cmd_panel_res;
+		panelstruct->color        = &edo_rm67162_qvga_cmd_color;
+		panelstruct->videopanel   =
+				&edo_rm67162_qvga_cmd_video_panel;
+		panelstruct->commandpanel =
+				&edo_rm67162_qvga_cmd_command_panel;
+		panelstruct->state        = &edo_rm67162_qvga_cmd_state;
+		panelstruct->laneconfig   =
+				&edo_rm67162_qvga_cmd_lane_config;
+		panelstruct->paneltiminginfo
+				= &edo_rm67162_qvga_cmd_timing_info;
+		panelstruct->panelresetseq
+				= &edo_rm67162_qvga_cmd_reset_seq;
+		panelstruct->backlightinfo = &edo_rm67162_qvga_cmd_backlight;
+		pinfo->labibb = NULL;
+		pinfo->mipi.panel_on_cmds
+				= edo_rm67162_qvga_cmd_on_command;
+		pinfo->mipi.num_of_panel_on_cmds
+				= EDO_RM67162_QVGA_CMD_ON_COMMAND;
+		pinfo->mipi.panel_off_cmds
+				= edo_rm67162_qvga_cmd_off_command;
+		pinfo->mipi.num_of_panel_off_cmds
+				= EDO_RM67162_QVGA_CMD_OFF_COMMAND;
+		if (phy_db->pll_type == DSI_PLL_TYPE_12NM)
+			memcpy(phy_db->timing,
+				edo_rm67162_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;
@@ -1008,7 +1042,10 @@
 		}
 
 		if (platform_is_sdm429()) {
-			panel_id = HX8399C_HD_PLUS_VIDEO_PANEL;
+			if (hw_subtype == HW_PLATFORM_SUBTYPE_429W_PM660) /* Spyro target */
+				panel_id = RM67162_QVGA_CMD_PANEL;
+			else
+				panel_id = HX8399C_HD_PLUS_VIDEO_PANEL;
 		}
 
 		/* QRD EVT1 uses OTM1906C, and EVT2 uses HX8394F */
diff --git a/target/msm8952/regulator.c b/target/msm8952/regulator.c
index ee08d30..ecb2ba3 100644
--- a/target/msm8952/regulator.c
+++ b/target/msm8952/regulator.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015, 2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015, 2018-2019, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions are
@@ -32,6 +32,7 @@
 #include <bits.h>
 #include <debug.h>
 #include <platform.h>
+#include <board.h>
 
 
 static uint32_t ldo1[][11]=
@@ -101,6 +102,56 @@
 	},
 };
 
+static uint32_t ldo6_pm660[][11]=
+{
+	{
+		LDOA_RES_TYPE, 6,
+		KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
+		KEY_MICRO_VOLT, 4, 0,
+		KEY_CURRENT, 4, 0,
+	},
+
+	{
+		LDOA_RES_TYPE, 6,
+		KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
+		KEY_MICRO_VOLT, 4, 800000,
+		KEY_CURRENT, 4, 150,
+	},
+};
+
+static uint32_t ldo13_pm660[][11]=
+{
+	{
+		LDOA_RES_TYPE, 13,
+		KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
+		KEY_MICRO_VOLT, 4, 0,
+		KEY_CURRENT, 4, 0,
+	},
+
+	{
+		LDOA_RES_TYPE, 13,
+		KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
+		KEY_MICRO_VOLT, 4, 1800000,
+		KEY_CURRENT, 4, 40,
+	},
+};
+
+static uint32_t ldo15_pm660[][11]=
+{
+	{
+		LDOA_RES_TYPE, 15,
+		KEY_SOFTWARE_ENABLE, 4, GENERIC_DISABLE,
+		KEY_MICRO_VOLT, 4, 0,
+		KEY_CURRENT, 4, 0,
+	},
+
+	{
+		LDOA_RES_TYPE, 15,
+		KEY_SOFTWARE_ENABLE, 4, GENERIC_ENABLE,
+		KEY_MICRO_VOLT, 4, 2800000,
+		KEY_CURRENT, 4, 40,
+	},
+};
 
 static uint32_t ldo17[][11]=
 {
@@ -121,6 +172,8 @@
 
 void regulator_enable(uint32_t enable)
 {
+	uint32_t hw_subtype = board_hardware_subtype();
+
 	if (platform_is_msm8956()) {
 		if (enable & REG_LDO1)
 			rpm_send_data(&ldo1[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
@@ -134,11 +187,26 @@
 			rpm_send_data(&ldo2[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
 	}
 
+	if (platform_is_sdm429() && hw_subtype
+			== HW_PLATFORM_SUBTYPE_429W_PM660) {
+		if (enable & REG_LDO13)
+			rpm_send_data(&ldo13_pm660[GENERIC_ENABLE][0],
+				36, RPM_REQUEST_TYPE);
+		if (enable & REG_LDO15)
+			rpm_send_data(&ldo15_pm660[GENERIC_ENABLE][0],
+				36, RPM_REQUEST_TYPE);
+	}
+
 	if (enable & REG_LDO17)
 		rpm_send_data(&ldo17[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
 
-	if (enable & REG_LDO6)
-		rpm_send_data(&ldo6[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
+	if (enable & REG_LDO6) {
+		if (platform_is_sdm429() && hw_subtype
+				== HW_PLATFORM_SUBTYPE_429W_PM660)
+			rpm_send_data(&ldo6_pm660[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
+		else
+			rpm_send_data(&ldo6[GENERIC_ENABLE][0], 36, RPM_REQUEST_TYPE);
+	}
 }
 
 void regulator_disable(uint32_t enable)
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index 38cf975..7d74abe 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -452,6 +452,12 @@
 		pinfo->mipi.use_enable_gpio = 1;
 	} else if (platform_is_sdm439() || platform_is_sdm429()) {
 		reset_gpio.pin_id = 60;
+		if (platform_is_sdm429() && hw_subtype
+			== HW_PLATFORM_SUBTYPE_429W_PM660) {
+			reset_gpio.pin_id = 60;
+			pinfo->mipi.use_enable_gpio = 1;
+			enable_gpio.pin_id = 69;
+		}
 	} else if ((hw_id == HW_PLATFORM_QRD) &&
 		   (hw_subtype == HW_PLATFORM_SUBTYPE_POLARIS)) {
 		enable_gpio.pin_id = 19;
@@ -650,6 +656,7 @@
 	int rc = 0;
 	uint32_t ldo_num = REG_LDO6 | REG_LDO17;
 	uint32_t pmic_type = target_get_pmic();
+	uint32_t hw_subtype = board_hardware_subtype();
 
 	if (platform_is_msm8956())
 		ldo_num |= REG_LDO1;
@@ -658,6 +665,10 @@
 	else
 		ldo_num |= REG_LDO2;
 
+	if (platform_is_sdm429() && hw_subtype
+		== HW_PLATFORM_SUBTYPE_429W_PM660)
+		ldo_num |= REG_LDO13 | REG_LDO15;
+
 	if (enable) {
 		regulator_enable(ldo_num);
 		mdelay(10);
@@ -683,6 +694,10 @@
 		 * Do not disable them.
 		 */
 		regulator_disable(REG_LDO17);
+
+		if (platform_is_sdm429() && hw_subtype
+			== HW_PLATFORM_SUBTYPE_429W_PM660)
+			regulator_disable(REG_LDO13 | REG_LDO15);
 	}
 
 	return NO_ERROR;
