diff options
author | Oleg Matcovschi <omatcovschi@google.com> | 2021-04-14 19:08:40 -0700 |
---|---|---|
committer | Oleg Matcovschi <omatcovschi@google.com> | 2021-04-23 15:25:36 -0700 |
commit | 7a0f414772742d8e47342502557fba21a8edcc2d (patch) | |
tree | 7f2801aa41e03794f7f7161459463864b16949c6 | |
parent | 05a51400909bf7b0adc07bc649fc4cb4dd4e9290 (diff) | |
download | reset-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.c | 50 |
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); } } |