summaryrefslogtreecommitdiff
path: root/common/system.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/system.c')
-rw-r--r--common/system.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/common/system.c b/common/system.c
index fa7eccabd5..72a3244fb0 100644
--- a/common/system.c
+++ b/common/system.c
@@ -213,6 +213,10 @@ void system_encode_save_flags(int reset_flags, uint32_t *save_flags)
if (reset_flags & SYSTEM_RESET_LEAVE_AP_OFF)
*save_flags |= EC_RESET_FLAG_AP_OFF;
+ /* Add in stay in RO flag into saved flags. */
+ if (reset_flags & SYSTEM_RESET_STAY_IN_RO)
+ *save_flags |= EC_RESET_FLAG_STAY_IN_RO;
+
/* Save reset flag */
if (reset_flags & (SYSTEM_RESET_HARD | SYSTEM_RESET_WAIT_EXT))
*save_flags |= EC_RESET_FLAG_HARD;
@@ -1213,6 +1217,9 @@ static int command_reboot(int argc, char **argv)
flags &= ~SYSTEM_RESET_HARD;
} else if (!strcasecmp(argv[i], "ap-off")) {
flags |= SYSTEM_RESET_LEAVE_AP_OFF;
+ } else if (!strcasecmp(argv[i], "ap-off-in-ro")) {
+ flags |= (SYSTEM_RESET_LEAVE_AP_OFF |
+ SYSTEM_RESET_STAY_IN_RO);
} else if (!strcasecmp(argv[i], "cancel")) {
reboot_at_shutdown = EC_REBOOT_CANCEL;
return EC_SUCCESS;
@@ -1235,9 +1242,10 @@ static int command_reboot(int argc, char **argv)
system_reset(flags);
return EC_SUCCESS;
}
-DECLARE_CONSOLE_COMMAND(reboot, command_reboot,
- "[hard|soft] [preserve] [ap-off] [wait-ext] [cancel]",
- "Reboot the EC");
+DECLARE_CONSOLE_COMMAND(
+ reboot, command_reboot,
+ "[hard|soft] [preserve] [ap-off] [wait-ext] [cancel] [ap-off-in-ro]",
+ "Reboot the EC");
#ifdef CONFIG_CMD_SYSLOCK
static int command_system_lock(int argc, char **argv)