This patch adds parameter support for the 'reset' command to specify
the reboot mode (cold vs. warm).

Checking these parameters is implemented in the DM implementation.

Signed-off-by: Simon Goldschmidt <simon.k.r.goldschm...@gmail.com>
---

 cmd/boot.c                         |  4 ++--
 drivers/sysreset/sysreset-uclass.c | 17 ++++++++++++++++-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/cmd/boot.c b/cmd/boot.c
index 9150fce80b..c3f33a9ca3 100644
--- a/cmd/boot.c
+++ b/cmd/boot.c
@@ -56,9 +56,9 @@ U_BOOT_CMD(
 #endif
 
 U_BOOT_CMD(
-       reset, 1, 0,    do_reset,
+       reset, 2, 0,    do_reset,
        "Perform RESET of the CPU",
-       ""
+       "[<cold|warm>] - type of reboot"
 );
 
 #ifdef CONFIG_CMD_POWEROFF
diff --git a/drivers/sysreset/sysreset-uclass.c 
b/drivers/sysreset/sysreset-uclass.c
index ad831c703a..fbda3f44f2 100644
--- a/drivers/sysreset/sysreset-uclass.c
+++ b/drivers/sysreset/sysreset-uclass.c
@@ -111,9 +111,24 @@ void reset_cpu(ulong addr)
 
 int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
+       enum sysreset_t reboot_mode = SYSRESET_COLD;
+
+       if (argc > 1 && argv[1]) {
+               switch (*argv[1]) {
+               case 'w':
+                       reboot_mode = SYSRESET_WARM;
+                       printf("warm ");
+                       break;
+               case 'c':
+                       reboot_mode = SYSRESET_COLD;
+                       printf("cold ");
+                       break;
+               }
+       }
+
        printf("resetting ...\n");
 
-       sysreset_walk_halt(SYSRESET_COLD);
+       sysreset_walk_halt(reboot_mode);
 
        return 0;
 }
-- 
2.20.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to