]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
cmd: bdinfo: Optionally use getopt and implement bdinfo -a
authorMarek Vasut <marek.vasut+renesas@mailbox.org>
Sat, 7 Oct 2023 21:40:58 +0000 (23:40 +0200)
committerTom Rini <trini@konsulko.com>
Sat, 9 Dec 2023 13:42:29 +0000 (08:42 -0500)
Add optional support for getopt() and in case this is enabled via
GETOPT configuration option, implement support for 'bdinfo -a'.
The 'bdinfo -a' behaves exactly like bdinfo and prints 'all' the
bdinfo information. This is implemented in preparation for other
more fine-grained options.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
cmd/bdinfo.c

index 1fe13ca13a0ae18e3fb0bc69bc080045d2665af5..2c0d5e9c01bcffa36c26ebcf9055ac29aab0668d 100644 (file)
@@ -10,6 +10,7 @@
 #include <command.h>
 #include <dm.h>
 #include <env.h>
+#include <getopt.h>
 #include <lmb.h>
 #include <mapmem.h>
 #include <net.h>
@@ -133,10 +134,8 @@ static void print_serial(struct udevice *dev)
        bdinfo_print_num_l(" clock", info.clock);
 }
 
-int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+static int bdinfo_print_all(struct bd_info *bd)
 {
-       struct bd_info *bd = gd->bd;
-
 #ifdef DEBUG
        bdinfo_print_num_l("bd address", (ulong)bd);
 #endif
@@ -184,8 +183,30 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
        return 0;
 }
 
+int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+{
+       struct bd_info *bd = gd->bd;
+       struct getopt_state gs;
+       int opt;
+
+       if (!CONFIG_IS_ENABLED(GETOPT) || argc == 1)
+               return bdinfo_print_all(bd);
+
+       getopt_init_state(&gs);
+       while ((opt = getopt(&gs, argc, argv, "a")) > 0) {
+               switch (opt) {
+               case 'a':
+                       return bdinfo_print_all(bd);
+               default:
+                       return CMD_RET_USAGE;
+               }
+       }
+
+       return CMD_RET_USAGE;
+}
+
 U_BOOT_CMD(
-       bdinfo, 1,      1,      do_bdinfo,
+       bdinfo, 2,      1,      do_bdinfo,
        "print Board Info structure",
        ""
 );