platform: Add PM660 support to reboot sequence
Add support to read power off reason from PM660 PON base to
identify force reset reason.
Change-Id: I2a3ceb709ab0b8a575887185053b1c9a208e73d5
Signed-off-by: Umang Agrawal <uagrawal@codeaurora.org>
diff --git a/platform/msm_shared/reboot.c b/platform/msm_shared/reboot.c
index d9a1310..7be94cd 100644
--- a/platform/msm_shared/reboot.c
+++ b/platform/msm_shared/reboot.c
@@ -37,18 +37,33 @@
#include <stdlib.h>
#include <reboot.h>
#include <qtimer.h>
+#include <smem.h>
#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();
+ uint8_t poff_reason1;
+ uint8_t poff_reason2;
+ uint8_t is_cold_boot;
+ uint32_t pmic = target_get_pmic();
+ bool s3_reset;
+
+ if (pmic == PMIC_IS_PM660) {
+ poff_reason1 = pm660_get_pon_poff_reason1();
+ poff_reason2 = pm660_get_pon_poff_reason2();
+ is_cold_boot = pm660_get_is_cold_boot();
+ s3_reset = (poff_reason2 == PM660_STAGE3);
+ } else {
+ poff_reason1 = pm8x41_get_pon_poff_reason1();
+ poff_reason2 = pm8x41_get_pon_poff_reason2();
+ is_cold_boot = pm8x41_get_is_cold_boot();
+ s3_reset = (poff_reason2 == STAGE3);
+ }
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))
+ if (is_cold_boot && (poff_reason1 == KPDPWR_AND_RESIN || s3_reset))
return 1;
else
return 0;