Merge "mdm9615: Add FOTA cookie check"
diff --git a/app/aboot/aboot.c b/app/aboot/aboot.c
index 467bf2c..c67ce40 100644
--- a/app/aboot/aboot.c
+++ b/app/aboot/aboot.c
@@ -414,6 +414,9 @@
 			set_tamper_fuse_cmd();
 		#endif
 		}
+	#if USE_PCOM_SECBOOT
+		set_tamper_flag(device.is_tampered);
+	#endif
 	}
 	else
 	{
@@ -1244,6 +1247,9 @@
 			#ifdef TZ_TAMPER_FUSE
 				set_tamper_fuse_cmd();
 			#endif
+			#if USE_PCOM_SECBOOT
+				set_tamper_flag(device.is_tampered);
+			#endif
 			}
 		}
 		boot_linux_from_mmc();
diff --git a/platform/msm8960/acpuclock.c b/platform/msm8960/acpuclock.c
index cebc8d1..6c24aef 100644
--- a/platform/msm8960/acpuclock.c
+++ b/platform/msm8960/acpuclock.c
@@ -208,10 +208,10 @@
 void ce_clock_init(void)
 {
 	/* Enable HCLK for CE */
-	clk_get_set_enable("ce_pclk", 0, 1);
+	clk_get_set_enable("ce1_pclk", 0, 1);
 
 	/* Enable core clk for CE */
-	clk_get_set_enable("ce_clk", 0, 1);
+	clk_get_set_enable("ce1_clk", 0, 1);
 }
 
 /* Async Reset CE1 */
diff --git a/platform/msm8960/gpio.c b/platform/msm8960/gpio.c
index 783d4c1..82d99bd 100644
--- a/platform/msm8960/gpio.c
+++ b/platform/msm8960/gpio.c
@@ -63,7 +63,24 @@
 /* Configure gpio for uart - based on gsbi id */
 void gpio_config_uart_dm(uint8_t id)
 {
-	if(board_platform_id() == APQ8064)
+	if(board_platform_id() == MPQ8064)
+	{
+		switch (id) {
+
+		case GSBI_ID_5:
+			/* configure rx gpio */
+			gpio_tlmm_config(52, 1, GPIO_INPUT, GPIO_NO_PULL,
+							 GPIO_8MA, GPIO_DISABLE);
+			/* configure tx gpio */
+			gpio_tlmm_config(51, 1, GPIO_OUTPUT, GPIO_NO_PULL,
+							 GPIO_8MA, GPIO_DISABLE);
+			break;
+
+		default:
+			ASSERT(0);
+		}
+	}
+	else if(board_platform_id() == APQ8064)
 	{
 		switch (id) {
 
diff --git a/platform/msm_shared/include/board.h b/platform/msm_shared/include/board.h
index 1eef91e..59e19e3 100644
--- a/platform/msm_shared/include/board.h
+++ b/platform/msm_shared/include/board.h
@@ -53,6 +53,7 @@
 #define LINUX_MACHTYPE_8064_CDP     3948
 #define LINUX_MACHTYPE_8064_MTP     3949
 #define LINUX_MACHTYPE_8064_LIQUID  3951
+#define LINUX_MACHTYPE_8064_MPQ_CDP 3993
 #define LINUX_MACHTYPE_8064_HRD     3994
 #define LINUX_MACHTYPE_8064_DTV     3995
 
diff --git a/platform/msm_shared/mmc.c b/platform/msm_shared/mmc.c
index b1fc977..124cb9f 100644
--- a/platform/msm_shared/mmc.c
+++ b/platform/msm_shared/mmc.c
@@ -2797,7 +2797,7 @@
 	}
 
 	/* Sending CMD36 */
-	mmc_ret = mmc_boot_send_erase_group_end(&mmc_card, data_end - 1);
+	mmc_ret = mmc_boot_send_erase_group_end(&mmc_card, data_end);
 	if (mmc_ret != MMC_BOOT_E_SUCCESS) {
 		dprintf(CRITICAL, "Error %d: Failure sending erase group end "
 			"command to the card (RCA:%x)\n", mmc_ret,
@@ -2805,18 +2805,16 @@
 		return mmc_ret;
 	}
 
-	for (unsigned long long i = 0; i < loop_count; i++) {
-		/* Sending CMD38 */
-		mmc_ret = mmc_boot_send_erase(&mmc_card);
-		if (mmc_ret != MMC_BOOT_E_SUCCESS) {
-			dprintf(CRITICAL,
-				"Error %d: Failure sending erase command "
-				"to the card (RCA:%x)\n", mmc_ret,
-				mmc_card.rca);
-			return mmc_ret;
+	/* Sending CMD38 */
+	mmc_ret = mmc_boot_send_erase(&mmc_card);
+	if (mmc_ret != MMC_BOOT_E_SUCCESS) {
+		dprintf(CRITICAL,
+			"Error %d: Failure sending erase command "
+			"to the card (RCA:%x)\n", mmc_ret, mmc_card.rca);
+		return mmc_ret;
 
-		}
 	}
+
 	dprintf(CRITICAL, "ERASE SUCCESSFULLY COMPLETED\n");
 	return MMC_BOOT_E_SUCCESS;
 }
diff --git a/platform/msm_shared/smem.h b/platform/msm_shared/smem.h
index 8e58653..269ae9f 100644
--- a/platform/msm_shared/smem.h
+++ b/platform/msm_shared/smem.h
@@ -226,6 +226,8 @@
 
 	SMEM_FIRST_VALID_TYPE = SMEM_SPINLOCK_ARRAY,
 	SMEM_LAST_VALID_TYPE = SMEM_BOOT_INFO_FOR_APPS,
+
+	SMEM_MAX_SIZE = SMEM_BOOT_INFO_FOR_APPS + 1,
 } smem_mem_type_t;
 
 /* Note: buf MUST be 4byte aligned, and max_len MUST be a multiple of 4. */
@@ -272,7 +274,7 @@
 	struct smem_proc_comm proc_comm[4];
 	unsigned version_info[32];
 	struct smem_heap_info heap_info;
-	struct smem_alloc_info alloc_info[SMEM_LAST_VALID_TYPE];
+	struct smem_alloc_info alloc_info[SMEM_MAX_SIZE];
 };
 
 struct smem_ram_ptn {
diff --git a/target/msm7627a/init.c b/target/msm7627a/init.c
index e40542b..f207d4a 100644
--- a/target/msm7627a/init.c
+++ b/target/msm7627a/init.c
@@ -281,9 +281,9 @@
 					|| (target_msm_id >= MSM7225AA
 					&& target_msm_id <= ESM7225AA))
 					hw_platform = MSM7X25A_SURF;
-			else
-				hw_platform = MSM7X27A_SURF;
-			break;
+				else
+					hw_platform = MSM7X27A_SURF;
+				break;
 			case 0x2:
 				if (target_msm_id == MSM7225A
 					|| target_msm_id == MSM7625A
@@ -291,32 +291,32 @@
 					|| (target_msm_id >= MSM7225AA
 					&& target_msm_id <= ESM7225AA))
 					hw_platform = MSM7X25A_FFA;
-			else
-				hw_platform = MSM7X27A_FFA;
-			break;
-		case 0xB:
-			if(target_is_emmc_boot())
-				hw_platform = MSM7X27A_QRD1;
-			else
+				else
+					hw_platform = MSM7X27A_FFA;
+				break;
+			case 0xB:
+				if(target_is_emmc_boot())
+					hw_platform = MSM7X27A_QRD1;
+				else
+					hw_platform = MSM7X27A_QRD3;
+				break;
+			case 0xC:
+				hw_platform = MSM7X27A_EVB;
+				break;
+			case 0xF:
 				hw_platform = MSM7X27A_QRD3;
-			break;
-		case 0xC:
-			hw_platform = MSM7X27A_EVB;
-			break;
-		case 0xF:
-			hw_platform = MSM7X27A_QRD3;
-			break;
-		default:
-			if (target_msm_id == MSM7225A
-			    || target_msm_id == MSM7625A
-			    || target_msm_id == ESM7225A
-			    || (target_msm_id >= MSM7225AA
-				&& target_msm_id <= ESM7225AA))
-				hw_platform = MSM7X25A_SURF;
-			else
-				hw_platform = MSM7X27A_SURF;
-		};
-	}
+				break;
+			default:
+				if (target_msm_id == MSM7225A
+				    || target_msm_id == MSM7625A
+				    || target_msm_id == ESM7225A
+				    || (target_msm_id >= MSM7225AA
+					&& target_msm_id <= ESM7225AA))
+					hw_platform = MSM7X25A_SURF;
+				else
+					hw_platform = MSM7X27A_SURF;
+			};
+		}
 		/* Set msm ID for target variants based on values read from smem */
 		switch (target_msm_id) {
 		case MSM7225A:
diff --git a/target/msm8960/init.c b/target/msm8960/init.c
index 4a5d84f..7488800 100644
--- a/target/msm8960/init.c
+++ b/target/msm8960/init.c
@@ -123,8 +123,8 @@
 	if ((platform_id == MSM8960) || (platform_id == MSM8660A)
 	    || (platform_id == MSM8260A) || (platform_id == APQ8060A)
 	    || (platform_id == MSM8230) || (platform_id == MSM8630)
-	    || (platform_id == MSM8930) || (platform_id == APQ8030)
-	    || (platform_id == MSM8227) || (platform_id == MSM8627)) {
+	    || (platform_id == APQ8030) || (platform_id == MSM8227)
+	    || (platform_id == MSM8627)) {
 		panel_backlight_on();
 		display_init();
 		dprintf(SPEW, "Diplay initialized\n");
@@ -277,6 +277,10 @@
 		uart_dm_init(7, 0x16600000, 0x16640000);
 		break;
 
+	case LINUX_MACHTYPE_8064_MPQ_CDP:
+		uart_dm_init(5, 0x1A200000, 0x1A240000);
+		break;
+
 	case LINUX_MACHTYPE_8627_CDP:
 	case LINUX_MACHTYPE_8627_MTP: