]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
bootm: Add more fields to bootm_info
authorSimon Glass <sjg@chromium.org>
Sat, 16 Dec 2023 03:14:14 +0000 (20:14 -0700)
committerTom Rini <trini@konsulko.com>
Thu, 21 Dec 2023 21:07:52 +0000 (16:07 -0500)
Add fields for the three bootm parameters and other things needed for
booting. Also add a helper to set up the struct correctly.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
boot/bootm.c
include/bootm.h

index f1c45c38065940e068dd6fee8fb750163306087d..9e42fa5117d070b43313ca74d6c0212ad7d7acf2 100644 (file)
@@ -1192,6 +1192,14 @@ int bootm_boot_start(ulong addr, const char *cmdline)
        return ret;
 }
 
+void bootm_init(struct bootm_info *bmi)
+{
+       memset(bmi, '\0', sizeof(struct bootm_info));
+       bmi->boot_progress = true;
+       if (IS_ENABLED(CONFIG_CMD_BOOTM))
+               bmi->images = &images;
+}
+
 /**
  * switch_to_non_secure_mode() - switch to non-secure mode
  *
index 85c560d5a0aebba549261f03a541149f2770dfa9..7cfaa0a7d053d5e38ef440b462c57cd3a34bcaf4 100644 (file)
@@ -19,17 +19,52 @@ struct cmd_tbl;
 /**
  * struct bootm_info() - information used when processing images to boot
  *
+ * These mirror the first three arguments of the bootm command. They are
+ * designed to handle any type of image, but typically it is a FIT.
+ *
+ * @addr_img: Address of image to bootm, as passed to
+ *     genimg_get_kernel_addr_fit() for processing:
+ *
+ *    NULL: Usees default load address, i.e. image_load_addr
+ *    <addr>: Uses hex address
+ *
+ * For FIT:
+ *    "[<addr>]#<conf>": Uses address (or image_load_addr) and also specifies
+ *     the FIT configuration to use
+ *    "[<addr>]:<subimage>": Uses address (or image_load_addr) and also
+ *     specifies the subimage name containing the OS
+ *
+ * @conf_ramdisk: Address (or with FIT, the name) of the ramdisk image, as
+ *     passed to boot_get_ramdisk() for processing, or NULL for none
+ * @conf_fdt: Address (or with FIT, the name) of the FDT image, as passed to
+ *     boot_get_fdt() for processing, or NULL for none
+ * @boot_progress: true to show boot progress
  * @images: images information
+ * @cmd_name: command which invoked this operation, e.g. "bootm"
  * @argc: Number of arguments to the command (excluding the actual command).
  *     This is 0 if there are no arguments
  * @argv: NULL-terminated list of arguments, or NULL if there are no arguments
  */
 struct bootm_info {
+       const char *addr_img;
+       const char *conf_ramdisk;
+       const char *conf_fdt;
+       bool boot_progress;
        struct bootm_headers *images;
+       const char *cmd_name;
        int argc;
        char *const *argv;
 };
 
+/**
+ * bootm_init() - Set up a bootm_info struct with useful defaults
+ *
+ * Set up the struct with default values for all members:
+ * @boot_progress is set to true and @images is set to the global images
+ * variable. Everything else is set to NULL except @argc which is 0
+ */
+void bootm_init(struct bootm_info *bmi);
+
 /*
  *  Continue booting an OS image; caller already has:
  *  - copied image header to global variable `header'