Merge "project: msm8952: Add support to have reboot reason in PON register"
diff --git a/project/msm8952.mk b/project/msm8952.mk
index 817499e..d40dfa1 100644
--- a/project/msm8952.mk
+++ b/project/msm8952.mk
@@ -119,3 +119,7 @@
 
 #enable battery voltage check
 DEFINES += CHECK_BAT_VOLTAGE=1
+
+#Use PON register for reboot reason
+ENABLE_REBOOT_MODULE := 1
+DEFINES += USE_PON_REBOOT_REG=1
diff --git a/target/msm8952/init.c b/target/msm8952/init.c
index 6773dfa..add808a 100644
--- a/target/msm8952/init.c
+++ b/target/msm8952/init.c
@@ -279,28 +279,6 @@
 		keys_post_event(KEY_VOLUMEUP, 1);
 }
 
-/* Configure PMIC and Drop PS_HOLD for shutdown */
-void shutdown_device()
-{
-	dprintf(CRITICAL, "Going down for shutdown.\n");
-
-	/* Configure PMIC for shutdown */
-	if (target_get_pmic() == PMIC_IS_PMI632)
-		pmi632_reset_configure(PON_PSHOLD_SHUTDOWN);
-	else
-		pm8x41_reset_configure(PON_PSHOLD_SHUTDOWN);
-
-	/* Drop PS_HOLD for MSM */
-	writel(0x00, MPM2_MPM_PS_HOLD);
-
-	mdelay(5000);
-
-	dprintf(CRITICAL, "shutdown failed\n");
-
-	ASSERT(0);
-}
-
-
 void target_init(void)
 {
 	dprintf(INFO, "target_init()\n");
@@ -447,32 +425,6 @@
 	return board_baseband();
 }
 
-unsigned check_reboot_mode(void)
-{
-	uint32_t restart_reason = 0;
-
-	/* Read reboot reason and scrub it */
-	restart_reason = readl(RESTART_REASON_ADDR);
-	writel(0x00, RESTART_REASON_ADDR);
-
-	return restart_reason;
-}
-
-unsigned check_hard_reboot_mode(void)
-{
-	uint8_t hard_restart_reason = 0;
-	uint8_t value = 0;
-
-	/* Read reboot reason and scrub it
-	  * Bit-5, bit-6 and bit-7 of SOFT_RB_SPARE for hard reset reason
-	  */
-	value = pm8x41_reg_read(PON_SOFT_RB_SPARE);
-	hard_restart_reason = value >> 5;
-	pm8x41_reg_write(PON_SOFT_RB_SPARE, value & 0x1f);
-
-	return hard_restart_reason;
-}
-
 int set_download_mode(enum reboot_reason mode)
 {
 	int ret = 0;
@@ -488,69 +440,6 @@
 	return _emmc_recovery_init();
 }
 
-void reboot_device(unsigned reboot_reason)
-{
-	uint8_t reset_type = 0;
-	uint32_t ret = 0;
-
-	/* Set cookie for dload mode */
-	if(set_download_mode(reboot_reason)) {
-		dprintf(CRITICAL, "HALT: set_download_mode not supported\n");
-		return;
-	}
-
-	writel(reboot_reason, RESTART_REASON_ADDR);
-
-	/* For Reboot-bootloader and Dload cases do a warm reset
-	 * For Reboot cases do a hard reset
-	 */
-	if((reboot_reason == FASTBOOT_MODE) || (reboot_reason == NORMAL_DLOAD) ||
-		(reboot_reason == EMERGENCY_DLOAD) || (reboot_reason == RECOVERY_MODE))
-		reset_type = PON_PSHOLD_WARM_RESET;
-	else
-		reset_type = PON_PSHOLD_HARD_RESET;
-
-	if (target_get_pmic() == PMIC_IS_PMI632)
-	{
-		pmi632_reset_configure(reset_type);
-	}
-	else
-	{
-		if(target_is_pmi_enabled())
-			pm8994_reset_configure(reset_type);
-		else
-			pm8x41_reset_configure(reset_type);
-	}
-
-	ret = scm_halt_pmic_arbiter();
-	if (ret)
-		dprintf(CRITICAL , "Failed to halt pmic arbiter: %d\n", ret);
-
-	/* Drop PS_HOLD for MSM */
-	writel(0x00, MPM2_MPM_PS_HOLD);
-
-	mdelay(5000);
-
-	dprintf(CRITICAL, "Rebooting failed\n");
-}
-
-#if USER_FORCE_RESET_SUPPORT
-/* Return 1 if it is a force resin triggered by user. */
-uint32_t is_user_force_reset(void)
-{
-	uint8_t poff_reason1 = pm8x41_get_pon_poff_reason1();
-	uint8_t poff_reason2 = pm8x41_get_pon_poff_reason2();
-
-	dprintf(SPEW, "poff_reason1: %d\n", poff_reason1);
-	dprintf(SPEW, "poff_reason2: %d\n", poff_reason2);
-	if (pm8x41_get_is_cold_boot() && (poff_reason1 == KPDPWR_AND_RESIN ||
-							poff_reason2 == STAGE3))
-		return 1;
-	else
-		return 0;
-}
-#endif
-
 unsigned target_pause_for_battery_charge(void)
 {
 	uint32_t pmic = target_get_pmic();
@@ -842,3 +731,20 @@
 		return PMIC_IS_UNKNOWN;
 	}
 }
+
+void pmic_reset_configure(uint8_t reset_type)
+{
+	uint32_t pmi_type;
+
+	pmi_type = target_get_pmic();
+	if (pmi_type == PMIC_IS_PMI632) {
+		pmi632_reset_configure(reset_type);
+	} else {
+		if(target_is_pmi_enabled()) {
+			pm8994_reset_configure(reset_type);
+		} else {
+			pm8x41_reset_configure(reset_type);
+		}
+	}
+}
+