Merge "platform: msm_shared: Configure USB2PHY settings for 8953" into lk.lnx.1.0-dev.1.0
diff --git a/app/aboot/mdtp.c b/app/aboot/mdtp.c
index a38092e..e1e9568 100644
--- a/app/aboot/mdtp.c
+++ b/app/aboot/mdtp.c
@@ -410,7 +410,7 @@
 	uint32_t pin_length = 0;
 	char entered_pin[MDTP_PIN_LEN+1] = {0};
 	uint32_t i;
-	char pin_mismatch = 0;
+	int pin_mismatch = -1;
 
 	if (mdtp_cfg->enable_local_pin_authentication)
 	{
@@ -434,12 +434,14 @@
 		// (with INVALID_PIN_DELAY_MSECONDS after each failed attempt)
 		while (1)
 		{
+			pin_mismatch = pin_length;
 			get_pin_from_user(entered_pin, pin_length);
 
 			// Go over the entire PIN in any case, to prevent side-channel attacks
 			for (i=0; i<pin_length; i++)
 			{
-				pin_mismatch |= mdtp_cfg->mdtp_pin.mdtp_pin[i] ^ entered_pin[i];
+				// If current digit match, reduce 1 from pin_mismatch
+				pin_mismatch -= (((mdtp_cfg->mdtp_pin.mdtp_pin[i] ^ entered_pin[i]) == 0) ? 1 : 0);
 			}
 
 			if (0 == pin_mismatch)
@@ -455,8 +457,6 @@
 				// for INVALID_PIN_DELAY_MSECONDS), and allow the user to try again
 				dprintf(CRITICAL, "mdtp: display_recovery_ui: ERROR, invalid PIN\n");
 				display_invalid_pin_msg();
-
-				pin_mismatch = 0;
 			}
 		}
 	}
diff --git a/include/platform.h b/include/platform.h
index f3f970b..dd23381 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -66,7 +66,7 @@
 int platform_is_msm8909();
 int platform_is_msm8992();
 int platform_is_msm8937();
-int platform_is_msmgold();
+int platform_is_msm8917();
 uint32_t platform_get_apcs_ipc_base();
 int platform_is_msm8952();
 int platform_is_msm8953();
diff --git a/lib/libfdt/fdt.c b/lib/libfdt/fdt.c
index c43b83e..15e66e4 100644
--- a/lib/libfdt/fdt.c
+++ b/lib/libfdt/fdt.c
@@ -70,19 +70,6 @@
 	} else {
 		return -FDT_ERR_BADMAGIC;
 	}
-
-	if (fdt_off_dt_struct(fdt) > (UINT_MAX - fdt_size_dt_struct(fdt)))
-		return FDT_ERR_BADOFFSET;
-
-	if (fdt_off_dt_strings(fdt) > (UINT_MAX -  fdt_size_dt_strings(fdt)))
-		return FDT_ERR_BADOFFSET;
-
-	if ((fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt)) > fdt_totalsize(fdt))
-		return FDT_ERR_BADOFFSET;
-
-	if ((fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)) > fdt_totalsize(fdt))
-		return FDT_ERR_BADOFFSET;
-
 	return 0;
 }
 
diff --git a/platform/msm8952/msm8952-clock.c b/platform/msm8952/msm8952-clock.c
index ea142d7..d6c029f 100644
--- a/platform/msm8952/msm8952-clock.c
+++ b/platform/msm8952/msm8952-clock.c
@@ -650,7 +650,7 @@
 			msm8976_v_1_1_sdcc_clock_modify();
 	}
 
-	if (platform_is_msm8937() || platform_is_msmgold())
+	if (platform_is_msm8937() || platform_is_msm8917())
 		msm8937_clock_override();
 
 	clk_init(msm_clocks_8952, ARRAY_SIZE(msm_clocks_8952));
diff --git a/platform/msm8952/platform.c b/platform/msm8952/platform.c
index 1851c22..251bbb9 100644
--- a/platform/msm8952/platform.c
+++ b/platform/msm8952/platform.c
@@ -177,17 +177,17 @@
 	return 256;
 }
 
-int platform_is_msmgold()
+int platform_is_msm8917()
 {
 	uint32_t platform = board_platform_id();
 	uint32_t ret = 0;
 
 	switch(platform)
 	{
-		case MSMGOLD:
-		case MSMGOLD2:
-		case MSMGOLD3:
-		case APQGOLD:
+		case MSM8917:
+		case MSM8217:
+		case MSM8617:
+		case APQ8017:
 			ret = 1;
 			break;
 		default:
@@ -255,7 +255,7 @@
 
 uint32_t platform_get_tz_app_add()
 {
-	if(platform_is_msm8937())
+	if(platform_is_msm8937() || platform_is_msm8917())
 		return APP_REGION_ADDR_8937;
 	else
 		return APP_REGION_ADDR_8952;
@@ -263,7 +263,7 @@
 
 uint32_t platform_get_tz_app_size()
 {
-	if(platform_is_msm8937())
+	if(platform_is_msm8937() || platform_is_msm8917())
 		return APP_REGION_SIZE_8937;
 	else
 		return APP_REGION_SIZE_8952;
@@ -271,7 +271,7 @@
 
 uint32_t platform_get_apcs_ipc_base()
 {
-	if(platform_is_msmgold())
+	if(platform_is_msm8917())
 		return APCS_ALIAS1_IPC_INTERRUPT_1;
 	else
 		return APCS_ALIAS0_IPC_INTERRUPT_2;
diff --git a/platform/msm_shared/dev_tree.c b/platform/msm_shared/dev_tree.c
index 5c3d16a..40c24a4 100755
--- a/platform/msm_shared/dev_tree.c
+++ b/platform/msm_shared/dev_tree.c
@@ -60,6 +60,32 @@
  */
 extern int check_aboot_addr_range_overlap(uint32_t start, uint32_t size);
 
+int fdt_check_header_ext(const void *fdt)
+{
+	uintptr_t fdt_start, fdt_end;
+	fdt_start = (uintptr_t)fdt;
+	if(fdt_start + fdt_totalsize(fdt) < fdt_start)
+	{
+		dprintf(CRITICAL,"Integer over in fdt header %s\t%d",__func__,__LINE__);
+		return FDT_ERR_BADOFFSET;
+	}
+	fdt_end = fdt_start + fdt_totalsize(fdt);
+
+	if (((uint64_t)fdt_start + (uint64_t)fdt_off_dt_struct(fdt) + (uint64_t)fdt_size_dt_struct(fdt)) > UINT_MAX)
+		return FDT_ERR_BADOFFSET;
+
+	if ((fdt_start + fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt)) > fdt_end)
+		return FDT_ERR_BADOFFSET;
+
+	if (((uint64_t)fdt_start + (uint64_t)fdt_off_dt_strings(fdt) + (uint64_t)fdt_size_dt_strings(fdt)) > UINT_MAX)
+		return FDT_ERR_BADOFFSET;
+
+	if ((fdt_start + fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt)) > fdt_end)
+		return FDT_ERR_BADOFFSET;
+
+	return 0;
+}
+
 /* Returns soc version if platform id and hardware id matches
    otherwise return 0xFFFFFFFF */
 #define INVALID_SOC_REV_ID 0XFFFFFFFF
@@ -454,6 +480,7 @@
 		 * and operate on it separately */
 		memcpy(&dtb_hdr, dtb, sizeof(struct fdt_header));
 		if (fdt_check_header((const void *)&dtb_hdr) != 0 ||
+		    fdt_check_header_ext((const void *)&dtb_hdr) != 0 ||
 		    ((uintptr_t)dtb + (uintptr_t)fdt_totalsize((const void *)&dtb_hdr) < (uintptr_t)dtb) ||
 			((uintptr_t)dtb + (uintptr_t)fdt_totalsize((const void *)&dtb_hdr) > (uintptr_t)kernel_end))
 			break;
@@ -1262,7 +1289,7 @@
 	uint32_t offset;
 
 	/* Check the device tree header */
-	ret = fdt_check_header(fdt);
+	ret = fdt_check_header(fdt) || fdt_check_header_ext(fdt);
 	if (ret)
 	{
 		dprintf(CRITICAL, "Invalid device tree header \n");
diff --git a/platform/msm_shared/include/mdp5.h b/platform/msm_shared/include/mdp5.h
index 05cd121..2a72772 100644
--- a/platform/msm_shared/include/mdp5.h
+++ b/platform/msm_shared/include/mdp5.h
@@ -95,7 +95,7 @@
 #define MDSS_MDP_HW_REV_112    MDSS_MDP_REV(1, 12, 0) /* 8952 v1.0 */
 #define MDSS_MDP_HW_REV_114    MDSS_MDP_REV(1, 14, 0) /* 8937 v1.0 */
 #define MDSS_MDP_HW_REV_116    MDSS_MDP_REV(1, 16, 0) /* msm8953 */
-#define MDSS_MDP_HW_REV_115    MDSS_MDP_REV(1, 15, 0) /* msmgold v1.0 */
+#define MDSS_MDP_HW_REV_115    MDSS_MDP_REV(1, 15, 0) /* msm8917 v1.0 */
 #define MDSS_MDP_HW_REV_200    MDSS_MDP_REV(2, 0, 0) /* 8092 v1.0 */
 
 #define MDSS_MAX_LINE_BUF_WIDTH 2048
diff --git a/platform/msm_shared/smem.h b/platform/msm_shared/smem.h
index c4e9699..d2e67d8 100644
--- a/platform/msm_shared/smem.h
+++ b/platform/msm_shared/smem.h
@@ -448,12 +448,12 @@
 	MSM8937 = 294,
 	APQ8037 = 295,
 	MSM8996L = 302,
-	MSMGOLD = 303,
+	MSM8917  = 303,
 	APQ8053 = 304,
 	MSM8996SG = 305,
-	APQGOLD = 307,
-	MSMGOLD2 = 308,
-	MSMGOLD3 = 309,
+	APQ8017 = 307,
+	MSM8217 = 308,
+	MSM8617 = 309,
 	MSM8996AU = 310,
 	APQ8096AU = 311,
 	APQ8096SG = 312,
diff --git a/target/init.c b/target/init.c
index 728402d..ba2e608 100644
--- a/target/init.c
+++ b/target/init.c
@@ -270,10 +270,10 @@
 			break;
 		case MSM8937:
 		case APQ8037:
-		case MSMGOLD:
-		case MSMGOLD2:
-		case MSMGOLD3:
-		case APQGOLD:
+		case MSM8917:
+		case MSM8217:
+		case MSM8617:
+		case APQ8017:
 		case MSM8953:
 		case APQ8053:
 			config->vib_type = VIB_LRA_TYPE;
diff --git a/target/msm8952/init.c b/target/msm8952/init.c
index 43e1b2e..9eedac9 100644
--- a/target/msm8952/init.c
+++ b/target/msm8952/init.c
@@ -185,7 +185,7 @@
 
 	if(platform_is_msm8956())
 		vol_up_gpio = TLMM_VOL_UP_BTN_GPIO_8956;
-	else if(platform_is_msm8937() || platform_is_msmgold())
+	else if(platform_is_msm8937() || platform_is_msm8917())
 		vol_up_gpio = TLMM_VOL_UP_BTN_GPIO_8937;
 	else
 		vol_up_gpio = TLMM_VOL_UP_BTN_GPIO;
@@ -263,7 +263,7 @@
 
 	spmi_init(PMIC_ARB_CHANNEL_NUM, PMIC_ARB_OWNER_ID);
 
-	if(platform_is_msm8937() || platform_is_msmgold())
+	if(platform_is_msm8937() || platform_is_msm8917())
 	{
 		uint8_t pmi_rev = 0;
 		uint32_t pmi_type = 0;
@@ -375,16 +375,16 @@
 	case MSM8956:
 	case MSM8976:
 	case MSM8937:
-	case MSMGOLD:
-	case MSMGOLD2:
-	case MSMGOLD3:
+	case MSM8917:
+	case MSM8217:
+	case MSM8617:
 		board->baseband = BASEBAND_MSM;
 		break;
 	case APQ8052:
 	case APQ8056:
 	case APQ8076:
 	case APQ8037:
-	case APQGOLD:
+	case APQ8017:
 		board->baseband = BASEBAND_APQ;
 		break;
 	default:
diff --git a/target/msm8952/mdtp_defs.c b/target/msm8952/mdtp_defs.c
index a1ef897..4e15ea8 100644
--- a/target/msm8952/mdtp_defs.c
+++ b/target/msm8952/mdtp_defs.c
@@ -58,7 +58,7 @@
         target_efuse->address = MDTP_EFUSE_ADDRESS_MSM8952;
         target_efuse->start = MDTP_EFUSE_START_MSM8952;
     }
-    else if (platform_is_msm8937() || platform_is_msmgold())
+    else if (platform_is_msm8937() || platform_is_msm8917())
     {
         target_efuse->address = MDTP_EFUSE_ADDRESS_MSM8937;
         target_efuse->start = MDTP_EFUSE_START_MSM8937;
diff --git a/target/msm8952/oem_panel.c b/target/msm8952/oem_panel.c
index 3da5af1..ffc7daa 100755
--- a/target/msm8952/oem_panel.c
+++ b/target/msm8952/oem_panel.c
@@ -738,7 +738,7 @@
 	case HW_PLATFORM_MTP:
 		if (platform_is_msm8956())
 			panel_id = NT35597_WQXGA_DUALDSI_VIDEO_PANEL;
-		else if (platform_is_msmgold())
+        else if (platform_is_msm8917())
 			panel_id = TRULY_720P_VIDEO_PANEL;
 		else
 			panel_id = TRULY_1080P_VIDEO_PANEL;
@@ -747,7 +747,7 @@
 	case HW_PLATFORM_RCM:
 		if (platform_is_msm8956())
 			panel_id = NT35597_WQXGA_DUALDSI_VIDEO_PANEL;
-		else if (platform_is_msmgold())
+        else if (platform_is_msm8917())
 			panel_id = TRULY_720P_VIDEO_PANEL;
 		else
 			panel_id = TRULY_1080P_VIDEO_PANEL;
@@ -793,7 +793,7 @@
 					return PANEL_TYPE_UNKNOWN;
 			}
 			auto_pan_loop++;
-		} else if (platform_is_msmgold()) {
+        } else if (platform_is_msm8917()) {
 			panel_id = HX8394F_720P_VIDEO_PANEL;
 		}
 
diff --git a/target/msm8952/target_display.c b/target/msm8952/target_display.c
index 1e5b796..6749bf8 100644
--- a/target/msm8952/target_display.c
+++ b/target/msm8952/target_display.c
@@ -311,7 +311,7 @@
 	pll_data->vco_delay = VCO_DELAY_USEC;
 
 	/* SSC parameters */
-	if (platform_is_msm8937() || platform_is_msmgold()) {
+	if (platform_is_msm8937() || platform_is_msm8917()) {
 		pll_data->ssc_en = true;
 		pll_data->is_center_spread = false;
 		pll_data->ssc_freq = 30000;
@@ -372,7 +372,7 @@
 		reset_gpio.pin_id = 60;
 		bkl_gpio.pin_id = 98;
 		enable_gpio.pin_id = 99;
-	} else if (platform_is_msmgold()) {
+	} else if (platform_is_msm8917()) {
 		reset_gpio.pin_id = 60;
 		bkl_gpio.pin_id = 98;
 		pinfo->mipi.use_enable_gpio = 0;
@@ -515,7 +515,7 @@
 int target_display_get_base_offset(uint32_t base)
 {
 	if(platform_is_msm8956() || platform_is_msm8937() ||
-			platform_is_msmgold()) {
+			platform_is_msm8917()) {
 		if (base == MIPI_DSI0_BASE)
 			return DSI0_BASE_ADJUST;
 		else if (base == DSI0_PHY_BASE)