summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntony Pavlov <antonynpavlov@gmail.com>2013-01-29 15:03:05 +0400
committerSascha Hauer <s.hauer@pengutronix.de>2013-01-30 16:03:51 +0100
commit263e454f7fceb399a55c847b967ea3bd89b46373 (patch)
tree7614c6cd3e26d47829fe85f6789f37b75a21ab31
parent56f99ec44a7253ae5f010be978fd8f205c066625 (diff)
downloadbarebox-263e454f7fceb399a55c847b967ea3bd89b46373.tar.gz
barebox-263e454f7fceb399a55c847b967ea3bd89b46373.tar.xz
commands: reset: add shutdown_barebox() before reset_cpu()
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 <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--commands/reset.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/commands/reset.c b/commands/reset.c
index 835926b270..79885f4afc 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