Some of controlled by barebox peripheral devices may be
not affected by CPU reset, so we need call shutdown_barebox()
to stop them.

Signed-off-by: Antony Pavlov <[email protected]>
---
 commands/reset.c |   23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/commands/reset.c b/commands/reset.c
index 835926b..79885f4 100644
--- a/commands/reset.c
+++ b/commands/reset.c
@@ -20,17 +20,40 @@
 #include <common.h>
 #include <command.h>
 #include <complete.h>
+#include <getopt.h>
 
 static int cmd_reset(int argc, char *argv[])
 {
+       int opt, shutdown_flag;
+
+       shutdown_flag = 1;
+
+       while ((opt = getopt(argc, argv, "f")) > 0) {
+               switch (opt) {
+               case 'f':
+                       shutdown_flag = 0;
+                       break;
+               }
+       }
+
+       if (shutdown_flag)
+               shutdown_barebox();
+
        reset_cpu(0);
 
        /* Not reached */
        return 1;
 }
 
+BAREBOX_CMD_HELP_START(reset)
+BAREBOX_CMD_HELP_USAGE("reset [-f]\n")
+BAREBOX_CMD_HELP_SHORT("Perform RESET of the CPU.\n")
+BAREBOX_CMD_HELP_OPT("-f",  "force RESET, don't call shutdown\n")
+BAREBOX_CMD_HELP_END
+
 BAREBOX_CMD_START(reset)
        .cmd            = cmd_reset,
        .usage          = "Perform RESET of the CPU",
+       BAREBOX_CMD_HELP(cmd_reset_help)
        BAREBOX_CMD_COMPLETE(empty_complete)
 BAREBOX_CMD_END
-- 
1.7.10.4


_______________________________________________
barebox mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to