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);
+ }
+ }
+}
+