From: Denis Mukhin <[email protected]> Some prototype boards default to a non-cold reset type, e.g. warm reset.
Add `reset -c` so users can excplicitly request a cold reset when needed. Signed-off-by: Denis Mukhin <[email protected]> --- Changes since v2: - n/a Changes since v1: - corrected args parsing in do_reset() - updated commit message - fixup reset command description --- cmd/boot.c | 3 ++- drivers/sysreset/sysreset-uclass.c | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/cmd/boot.c b/cmd/boot.c index 29cdf4a9a81a..2cef907e291e 100644 --- a/cmd/boot.c +++ b/cmd/boot.c @@ -59,13 +59,14 @@ U_BOOT_CMD( U_BOOT_CMD( reset, 2, 0, do_reset, "Perform RESET of the CPU", - "- cold boot without level specifier\n" + "- reset without level specifier\n" #if IS_ENABLED(CONFIG_SYSRESET_CMD_RESET_ARGS) // All options handled by sysreset drivers via their sysreset_ops.request_arg callback #ifdef CONFIG_SYSRESET_QCOM_PSCI "reset -edl - Boot to Emergency DownLoad mode\n" #endif #endif + "reset -c - cold reset if implemented\n" "reset -w - warm reset if implemented" ); diff --git a/drivers/sysreset/sysreset-uclass.c b/drivers/sysreset/sysreset-uclass.c index d2fddb470bf1..df68b5c3f9eb 100644 --- a/drivers/sysreset/sysreset-uclass.c +++ b/drivers/sysreset/sysreset-uclass.c @@ -174,8 +174,17 @@ int do_reset(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) if (argc > 2) return CMD_RET_USAGE; - if (argc == 2 && argv[1][0] == '-' && argv[1][1] == 'w') { - reset_type = SYSRESET_WARM; + if (argc == 2 && argv[1][0] == '-') { + switch (argv[1][1]) { + case 'c': + reset_type = SYSRESET_COLD; + break; + case 'w': + reset_type = SYSRESET_WARM; + break; + default: + return CMD_RET_USAGE; + } } printf("resetting ...\n"); -- 2.54.0

