Merge "target: msm8974: Add soc version & chip id check"
diff --git a/target/msm8974/init.c b/target/msm8974/init.c
index 5ae8341..abb1d70 100644
--- a/target/msm8974/init.c
+++ b/target/msm8974/init.c
@@ -77,6 +77,8 @@
 #define SSD_PARTITION_SIZE      8192
 #endif
 
+#define BOARD_SOC_VERSION1(soc_rev) (soc_rev >= 0x10000 && soc_rev < 0x20000)
+
 #if MMC_SDHCI_SUPPORT
 static uint32_t mmc_sdhci_base[] =
 	{ MSM_SDC1_SDHCI_BASE, MSM_SDC2_SDHCI_BASE, MSM_SDC3_SDHCI_BASE, MSM_SDC4_SDHCI_BASE };
@@ -92,6 +94,27 @@
 #endif
 }
 
+/* Check for 8974 chip */
+static int target_is_8974()
+{
+	uint32_t platform = board_platform_id();
+	int ret = 0;
+
+	switch(platform)
+	{
+		case APQ8074:
+		case MSM8274:
+		case MSM8674:
+		case MSM8974:
+			ret = 1;
+			break;
+		default:
+			ret = 0;
+	};
+
+	return ret;
+}
+
 /* Return 1 if vol_up pressed */
 static int target_volume_up()
 {
@@ -192,10 +215,10 @@
 	switch(board_hardware_id())
 	{
 		case HW_PLATFORM_FLUID:
-			if (soc_ver >= BOARD_SOC_VERSION2)
-				config.bus_width = DATA_BUS_WIDTH_8BIT;
-			else
+			if (target_is_8974() && BOARD_SOC_VERSION1(soc_ver))
 				config.bus_width = DATA_BUS_WIDTH_4BIT;
+			else
+				config.bus_width = DATA_BUS_WIDTH_8BIT;
 			break;
 		default:
 			config.bus_width = DATA_BUS_WIDTH_8BIT;
@@ -268,10 +291,10 @@
 	switch(board_hardware_id())
 	{
 		case HW_PLATFORM_FLUID:
-			if (soc_ver >= BOARD_SOC_VERSION2)
-				host->caps.bus_width = MMC_BOOT_BUS_WIDTH_8_BIT;
-			else
+			if (target_is_8974() && BOARD_SOC_VERSION1(soc_ver))
 				host->caps.bus_width = MMC_BOOT_BUS_WIDTH_4_BIT;
+			else
+				host->caps.bus_width = MMC_BOOT_BUS_WIDTH_8_BIT;
 			break;
 		default:
 			host->caps.bus_width = MMC_BOOT_BUS_WIDTH_8_BIT;
@@ -451,10 +474,10 @@
 
 	soc_ver = board_soc_version();
 
-	if (soc_ver >= BOARD_SOC_VERSION2)
-		restart_reason_addr = RESTART_REASON_ADDR_V2;
-	else
+	if (target_is_8974() && BOARD_SOC_VERSION1(soc_ver))
 		restart_reason_addr = RESTART_REASON_ADDR;
+	else
+		restart_reason_addr = RESTART_REASON_ADDR_V2;
 
 	/* Read reboot reason and scrub it */
 	restart_reason = readl(restart_reason_addr);
@@ -470,10 +493,10 @@
 	soc_ver = board_soc_version();
 
 	/* Write the reboot reason */
-	if (soc_ver >= BOARD_SOC_VERSION2)
-		writel(reboot_reason, RESTART_REASON_ADDR_V2);
-	else
+	if (target_is_8974() && BOARD_SOC_VERSION1(soc_ver))
 		writel(reboot_reason, RESTART_REASON_ADDR);
+	else
+		writel(reboot_reason, RESTART_REASON_ADDR_V2);
 
 	/* Configure PMIC for warm reset */
 	if (pmic_ver == PMIC_VERSION_V2)