summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Matcovschi <omatcovschi@google.com>2021-04-13 21:11:56 -0700
committerOleg Matcovschi <omatcovschi@google.com>2021-04-14 17:53:49 +0000
commit05a51400909bf7b0adc07bc649fc4cb4dd4e9290 (patch)
tree6ebb9b0be22fbe67424e7fd17b3110ace1df75ad
parent8ce9a792a486dc69400a0eeeb2d8511d1b0905e9 (diff)
downloadreset-05a51400909bf7b0adc07bc649fc4cb4dd4e9290.tar.gz
power: reset: exynos-reboot: add dm-verity reboot reason
Bug: 181261704 Signed-off-by: Oleg Matcovschi <omatcovschi@google.com> Change-Id: Iada99f780169f9145c56be88decdc9c57c25f5d3
-rw-r--r--exynos-reboot.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/exynos-reboot.c b/exynos-reboot.c
index 158951b..6fe3759 100644
--- a/exynos-reboot.c
+++ b/exynos-reboot.c
@@ -30,7 +30,9 @@
#include <linux/soc/samsung/exynos-smc.h>
#include "../../bms/google_bms.h"
-#define BMS_RSBM_VALID BIT(31)
+#define EXYNOS_PMU_SYSIP_DAT0 (0x0810)
+
+#define BMS_RSBM_VALID BIT(31)
static struct regmap *pmureg;
static u32 warm_reboot_offset, warm_reboot_trigger;
@@ -40,6 +42,17 @@ static u32 shutdown_offset, shutdown_trigger;
static phys_addr_t pmu_alive_base;
static bool rsbm_supported;
+enum pon_reboot_mode {
+ REBOOT_MODE_NORMAL = 0x00,
+ REBOOT_MODE_CHARGE = 0x0A,
+
+ REBOOT_MODE_DMVERITY_CORRUPTED = 0x50,
+
+ REBOOT_MODE_FASTBOOT = 0xFC,
+ REBOOT_MODE_FACTORY = 0xFD,
+ REBOOT_MODE_RECOVERY = 0xFF,
+};
+
static void exynos_power_off(void)
{
u32 poweroff_try = 0;
@@ -98,13 +111,6 @@ static void exynos_power_off(void)
}
}
-#define EXYNOS_PMU_SYSIP_DAT0 (0x0810)
-#define REBOOT_MODE_NORMAL (0x00)
-#define REBOOT_MODE_CHARGE (0x0A)
-#define REBOOT_MODE_FASTBOOT (0xFC)
-#define REBOOT_MODE_FACTORY (0xFD)
-#define REBOOT_MODE_RECOVERY (0xFF)
-
static void exynos_reboot_mode_set(u32 val)
{
int ret;
@@ -142,8 +148,9 @@ static void exynos_reboot_parse(const char *cmd)
exynos_reboot_mode_set(REBOOT_MODE_FASTBOOT);
} else if (!strcmp(cmd, "recovery")) {
exynos_reboot_mode_set(REBOOT_MODE_RECOVERY);
- } else if (!strcmp(cmd, "dm-verity device corrupted") ||
- !strcmp(cmd, "from_fastboot") ||
+ } else if (!strcmp(cmd, "dm-verity device corrupted")) {
+ exynos_reboot_mode_set(REBOOT_MODE_DMVERITY_CORRUPTED);
+ } else if (!strcmp(cmd, "from_fastboot") ||
!strcmp(cmd, "shell") ||
!strcmp(cmd, "userrequested") ||
!strcmp(cmd, "userrequested,fastboot") ||