extension: Refactor to allow non-command usage
authorSimon Glass <sjg@chromium.org>
Tue, 17 Jan 2023 17:48:12 +0000 (10:48 -0700)
committerTom Rini <trini@konsulko.com>
Mon, 23 Jan 2023 23:11:41 +0000 (18:11 -0500)
The current extension code is designed to be used from commands. We want
to add a boot driver which uses it. To help with this, split the code into
the command processing and a function which actually does the scan.

Really the extension code should be in common/ or use driver model, but
this is a start.

Signed-off-by: Simon Glass <sjg@chromium.org>
cmd/extension_board.c

index f94abd6..f7685d4 100644 (file)
@@ -80,8 +80,7 @@ static int do_extension_list(struct cmd_tbl *cmdtp, int flag,
        return CMD_RET_SUCCESS;
 }
 
-static int do_extension_scan(struct cmd_tbl *cmdtp, int flag,
-                            int argc, char *const argv[])
+static int extension_scan(bool show)
 {
        struct extension *extension, *next;
        int extension_num;
@@ -91,12 +90,23 @@ static int do_extension_scan(struct cmd_tbl *cmdtp, int flag,
                free(extension);
        }
        extension_num = extension_board_scan(&extension_list);
+       if (show && extension_num >= 0)
+               printf("Found %d extension board(s).\n", extension_num);
+
+       /* either the number of extensions, or -ve for error */
+       return extension_num;
+}
+
 
+static int do_extension_scan(struct cmd_tbl *cmdtp, int flag,
+                            int argc, char *const argv[])
+{
+       int extension_num;
+
+       extension_num = extension_scan(true);
        if (extension_num < 0)
                return CMD_RET_FAILURE;
 
-       printf("Found %d extension board(s).\n", extension_num);
-
        return CMD_RET_SUCCESS;
 }