summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Matcovschi <omatcovschi@google.com>2021-04-14 19:08:40 -0700
committerOleg Matcovschi <omatcovschi@google.com>2021-04-23 15:25:36 -0700
commit7a0f414772742d8e47342502557fba21a8edcc2d (patch)
tree7f2801aa41e03794f7f7161459463864b16949c6
parent05a51400909bf7b0adc07bc649fc4cb4dd4e9290 (diff)
downloadreset-7a0f414772742d8e47342502557fba21a8edcc2d.tar.gz
power: reset: exynos-reboot: Add shutdown-thermal, rescue, fastboot
Signed-off-by: Oleg Matcovschi <omatcovschi@google.com> Change-Id: Iae43052229c92e47c6021ddf650c7cea8298477f
-rw-r--r--exynos-reboot.c50
1 files changed, 30 insertions, 20 deletions
diff --git a/exynos-reboot.c b/exynos-reboot.c
index 6fe3759..ed13f98 100644
--- a/exynos-reboot.c
+++ b/exynos-reboot.c
@@ -47,8 +47,11 @@ enum pon_reboot_mode {
REBOOT_MODE_CHARGE = 0x0A,
REBOOT_MODE_DMVERITY_CORRUPTED = 0x50,
+ REBOOT_MODE_SHUTDOWN_THERMAL = 0x51,
- REBOOT_MODE_FASTBOOT = 0xFC,
+ REBOOT_MODE_RESCUE = 0xF9,
+ REBOOT_MODE_FASTBOOT = 0xFA,
+ REBOOT_MODE_BOOTLOADER = 0xFC,
REBOOT_MODE_FACTORY = 0xFD,
REBOOT_MODE_RECOVERY = 0xFF,
};
@@ -137,28 +140,35 @@ static void exynos_reboot_mode_set(u32 val)
static void exynos_reboot_parse(const char *cmd)
{
if (cmd) {
+ u32 value = U32_MAX;
+
pr_info("Reboot command: '%s'\n", cmd);
- if (!strcmp(cmd, "charge")) {
- exynos_reboot_mode_set(REBOOT_MODE_CHARGE);
- } else if (!strcmp(cmd, "bootloader") ||
- !strcmp(cmd, "fastboot") ||
- !strcmp(cmd, "bl") ||
- !strcmp(cmd, "fb")) {
- 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")) {
- exynos_reboot_mode_set(REBOOT_MODE_DMVERITY_CORRUPTED);
- } else if (!strcmp(cmd, "from_fastboot") ||
- !strcmp(cmd, "shell") ||
- !strcmp(cmd, "userrequested") ||
- !strcmp(cmd, "userrequested,fastboot") ||
- !strcmp(cmd, "userrequested,recovery")) {
- /* Known reboot command */
- } else {
+ if (!strcmp(cmd, "charge"))
+ value = REBOOT_MODE_CHARGE;
+ else if (!strcmp(cmd, "bootloader"))
+ value = REBOOT_MODE_BOOTLOADER;
+ else if (!strcmp(cmd, "fastboot") ||
+ !strcmp(cmd, "userrequested,fastboot"))
+ value = REBOOT_MODE_FASTBOOT;
+ else if (!strcmp(cmd, "recovery") ||
+ !strcmp(cmd, "userrequested,recovery"))
+ value = REBOOT_MODE_RECOVERY;
+ else if (!strcmp(cmd, "dm-verity device corrupted"))
+ value = REBOOT_MODE_DMVERITY_CORRUPTED;
+ else if (!strcmp(cmd, "rescue"))
+ value = REBOOT_MODE_RESCUE;
+ else if (!strcmp(cmd, "shutdown-thermal"))
+ value = REBOOT_MODE_SHUTDOWN_THERMAL;
+ else if (!strcmp(cmd, "from_fastboot") ||
+ !strcmp(cmd, "shell") ||
+ !strcmp(cmd, "userrequested"))
+ value = REBOOT_MODE_NORMAL;
+ else
pr_err("Unknown reboot command: '%s'\n", cmd);
- }
+
+ if (value != U32_MAX)
+ exynos_reboot_mode_set(value);
}
}