]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
bootm: Adjust the parameters of bootm_find_images()
authorSimon Glass <sjg@chromium.org>
Sat, 18 Nov 2023 21:05:16 +0000 (14:05 -0700)
committerTom Rini <trini@konsulko.com>
Wed, 13 Dec 2023 16:51:24 +0000 (11:51 -0500)
Rather than passing it all the command-line args, pass in the pieces
that it needs. These are the image address, the ramdisk address/name
and the FDT address/name.

Ultimately this will allow usage of this function without being called
from the command line.

Move the function comment to the header file and tidy it a little.

Signed-off-by: Simon Glass <sjg@chromium.org>
boot/bootm.c
cmd/booti.c
cmd/bootz.c
include/bootm.h

index 45491e3f30aa4392131d5b1bbc3999a441fe02b0..fe6e84601f58f00698493f27b9b5a10d73503981 100644 (file)
@@ -468,35 +468,14 @@ static int bootm_find_os(const char *cmd_name, const char *addr_fit)
        return 0;
 }
 
-/**
- * bootm_find_images - wrapper to find and locate various images
- * @flag: Ignored Argument
- * @argc: command argument count
- * @argv: command argument list
- * @start: OS image start address
- * @size: OS image size
- *
- * boot_find_images() will attempt to load an available ramdisk,
- * flattened device tree, as well as specifically marked
- * "loadable" images (loadables are FIT only)
- *
- * Note: bootm_find_images will skip an image if it is not found
- *
- * @return:
- *     0, if all existing images were loaded correctly
- *     1, if an image is found but corrupted, or invalid
- */
-int bootm_find_images(int flag, int argc, char *const argv[], ulong start,
-                     ulong size)
+int bootm_find_images(ulong img_addr, const char *conf_ramdisk,
+                     const char *conf_fdt, ulong start, ulong size)
 {
-       const char *select = NULL;
+       const char *select = conf_ramdisk;
        char addr_str[17];
-       ulong img_addr;
        void *buf;
        int ret;
 
-       img_addr = argc ? hextoul(argv[0], NULL) : image_load_addr;
-
        if (IS_ENABLED(CONFIG_ANDROID_BOOT_IMAGE)) {
                /* Look for an Android boot image */
                buf = map_sysmem(images.os.start, 0);
@@ -506,8 +485,8 @@ int bootm_find_images(int flag, int argc, char *const argv[], ulong start,
                }
        }
 
-       if (argc >= 2)
-               select = argv[1];
+       if (conf_ramdisk)
+               select = conf_ramdisk;
 
        /* find ramdisk */
        ret = boot_get_ramdisk(select, &images, IH_INITRD_ARCH,
@@ -533,9 +512,8 @@ int bootm_find_images(int flag, int argc, char *const argv[], ulong start,
                buf = map_sysmem(img_addr, 0);
 
                /* find flattened device tree */
-               ret = boot_get_fdt(buf, argc > 2 ? argv[2] : NULL,
-                                  IH_ARCH_DEFAULT, &images, &images.ft_addr,
-                                  &images.ft_len);
+               ret = boot_get_fdt(buf, conf_fdt, IH_ARCH_DEFAULT, &images,
+                                  &images.ft_addr, &images.ft_len);
                if (ret) {
                        puts("Could not find a valid device tree\n");
                        return 1;
@@ -584,8 +562,13 @@ static int bootm_find_other(struct cmd_tbl *cmdtp, int flag, int argc,
             images.os.type == IH_TYPE_KERNEL_NOLOAD ||
             images.os.type == IH_TYPE_MULTI) &&
            (images.os.os == IH_OS_LINUX || images.os.os == IH_OS_VXWORKS ||
-            images.os.os == IH_OS_EFI || images.os.os == IH_OS_TEE))
-               return bootm_find_images(flag, argc, argv, 0, 0);
+            images.os.os == IH_OS_EFI || images.os.os == IH_OS_TEE)) {
+               ulong img_addr;
+
+               img_addr = argc ? hextoul(argv[0], NULL) : image_load_addr;
+               return bootm_find_images(img_addr, argc > 1 ? argv[1] : NULL,
+                                        argc > 2 ? argv[2] : NULL, 0, 0);
+       }
 
        return 0;
 }
index a6c7db272c573edb476e1c3348fffa0e5cc106e9..dc73c83f0db0e0b4369c66acd38c25614de4f436 100644 (file)
@@ -95,7 +95,9 @@ static int booti_start(struct cmd_tbl *cmdtp, int flag, int argc,
         * Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not
         * have a header that provide this informaiton.
         */
-       if (bootm_find_images(flag, argc, argv, relocated_addr, image_size))
+       if (bootm_find_images(image_load_addr, argc > 1 ? argv[1] : NULL,
+                             argc > 2 ? argv[2] : NULL, relocated_addr,
+                             image_size))
                return 1;
 
        return 0;
index dd6fe4904b02a7de3b282af4786ff2423e9dcdc0..bcf232b4f305e6ca4dbeed8c05ce422654fda005 100644 (file)
@@ -54,7 +54,9 @@ static int bootz_start(struct cmd_tbl *cmdtp, int flag, int argc,
         * Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not
         * have a header that provide this informaiton.
         */
-       if (bootm_find_images(flag, argc, argv, images->ep, zi_end - zi_start))
+       if (bootm_find_images(image_load_addr, argc > 1 ? argv[1] : NULL,
+                             argc > 2 ? argv[2] : NULL, images->ep,
+                             zi_end - zi_start))
                return 1;
 
        return 0;
index 10a1bd65a754bd9fbc8e445450a8fc9bb82149b1..f5229ea90b3398e3406da9d52891d92e536e5a13 100644 (file)
@@ -52,9 +52,29 @@ int boot_selected_os(int argc, char *const argv[], int state,
 
 ulong bootm_disable_interrupts(void);
 
-/* This is a special function used by booti/bootz */
-int bootm_find_images(int flag, int argc, char *const argv[], ulong start,
-                     ulong size);
+/**
+ * bootm_find_images() - find and locate various images
+ *
+ * @img_addr: Address of image being loaded
+ * @conf_ramdisk: Indicates the ramdisk to use (typically second arg of bootm)
+ * @conf_fdt: Indicates the FDT to use (typically third arg of bootm)
+ * @start: OS image start address
+ * @size: OS image size
+ *
+ * boot_find_images() will attempt to load an available ramdisk,
+ * flattened device tree, as well as specifically marked
+ * "loadable" images (loadables are FIT only)
+ *
+ * Note: bootm_find_images will skip an image if it is not found
+ *
+ * This is a special function used by booti/bootz
+ *
+ * Return:
+ *     0, if all existing images were loaded correctly
+ *     1, if an image is found but corrupted, or invalid
+ */
+int bootm_find_images(ulong img_addr, const char *conf_ramdisk,
+                     const char *conf_fdt, ulong start, ulong size);
 
 /*
  * Measure the boot images. Measurement is the process of hashing some binary