]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - include/command.h
Merge git://git.denx.de/u-boot-dm
[people/ms/u-boot.git] / include / command.h
index 0524c0beb091051343c3384fc7131f7431c7160c..08f04867ddf6846fe3354b6cbb2503c41b076fa3 100644 (file)
@@ -144,6 +144,24 @@ int cmd_process(int flag, int argc, char * const argv[],
                               int *repeatable, unsigned long *ticks);
 
 void fixup_cmdtable(cmd_tbl_t *cmdtp, int size);
+
+/**
+ * board_run_command() - Fallback function to execute a command
+ *
+ * When no command line features are enabled in U-Boot, this function is
+ * called to execute a command. Typically the function can look at the
+ * command and perform a few very specific tasks, such as booting the
+ * system in a particular way.
+ *
+ * This function is only used when CONFIG_CMDLINE is not enabled.
+ *
+ * In normal situations this function should not return, since U-Boot will
+ * simply hang.
+ *
+ * @cmdline:   Command line string to execute
+ * @return 0 if OK, 1 for error
+ */
+int board_run_command(const char *cmdline);
 #endif /* __ASSEMBLY__ */
 
 /*
@@ -164,21 +182,44 @@ void fixup_cmdtable(cmd_tbl_t *cmdtp, int size);
 # define _CMD_HELP(x)
 #endif
 
+#ifdef CONFIG_CMDLINE
 #define U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,         \
                                _usage, _help, _comp)                   \
                { #_name, _maxargs, _rep, _cmd, _usage,                 \
                        _CMD_HELP(_help) _CMD_COMPLETE(_comp) }
 
-#define U_BOOT_CMD_MKENT(_name, _maxargs, _rep, _cmd, _usage, _help)   \
-       U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,          \
-                                       _usage, _help, NULL)
-
 #define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, _comp) \
        ll_entry_declare(cmd_tbl_t, _name, cmd) =                       \
                U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,  \
                                                _usage, _help, _comp);
 
+#else
+#define U_BOOT_SUBCMD_START(name)      static cmd_tbl_t name[] = {};
+#define U_BOOT_SUBCMD_END
+
+#define _CMD_REMOVE(_name, _cmd)                                       \
+       int __remove_ ## _name(void)                                    \
+       {                                                               \
+               if (0)                                                  \
+                       _cmd(NULL, 0, 0, NULL);                         \
+               return 0;                                               \
+       }
+#define U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, \
+                                 _help, _comp)                         \
+               { #_name, _maxargs, _rep, 0 ? _cmd : NULL, _usage,      \
+                       _CMD_HELP(_help) _CMD_COMPLETE(_comp) }
+
+#define U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help,        \
+                           _comp)                              \
+       _CMD_REMOVE(sub_ ## _name, _cmd)
+
+#endif /* CONFIG_CMDLINE */
+
 #define U_BOOT_CMD(_name, _maxargs, _rep, _cmd, _usage, _help)         \
        U_BOOT_CMD_COMPLETE(_name, _maxargs, _rep, _cmd, _usage, _help, NULL)
 
+#define U_BOOT_CMD_MKENT(_name, _maxargs, _rep, _cmd, _usage, _help)   \
+       U_BOOT_CMD_MKENT_COMPLETE(_name, _maxargs, _rep, _cmd,          \
+                                       _usage, _help, NULL)
+
 #endif /* __COMMAND_H */