U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: U-Boot Mailing List <u-boot@lists.denx.de>
Cc: Tom Rini <trini@konsulko.com>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Simon Glass <sjg@chromium.org>,
	Eddie James <eajames@linux.ibm.com>,
	Mattijs Korpershoek <mkorpershoek@baylibre.com>,
	Safae Ouajih <souajih@baylibre.com>
Subject: [PATCH 27/29] bootm: Adjust the parameters of bootm_find_images()
Date: Sat, 11 Nov 2023 17:09:12 -0700	[thread overview]
Message-ID: <20231112000923.73568-28-sjg@chromium.org> (raw)
In-Reply-To: <20231112000923.73568-1-sjg@chromium.org>

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    | 45 ++++++++++++++-------------------------------
 cmd/booti.c     |  4 +++-
 cmd/bootz.c     |  4 +++-
 include/bootm.h | 26 +++++++++++++++++++++++---
 4 files changed, 43 insertions(+), 36 deletions(-)

diff --git a/boot/bootm.c b/boot/bootm.c
index 62b6ca957f5b..54e4b48e907c 100644
--- a/boot/bootm.c
+++ b/boot/bootm.c
@@ -467,35 +467,14 @@ static int bootm_find_os(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);
@@ -505,8 +484,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,
@@ -532,9 +511,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;
@@ -583,8 +561,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;
 }
diff --git a/cmd/booti.c b/cmd/booti.c
index a6c7db272c57..dc73c83f0db0 100644
--- a/cmd/booti.c
+++ b/cmd/booti.c
@@ -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;
diff --git a/cmd/bootz.c b/cmd/bootz.c
index dd6fe4904b02..bcf232b4f305 100644
--- a/cmd/bootz.c
+++ b/cmd/bootz.c
@@ -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;
diff --git a/include/bootm.h b/include/bootm.h
index 10a1bd65a754..f5229ea90b33 100644
--- a/include/bootm.h
+++ b/include/bootm.h
@@ -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
-- 
2.42.0.869.gea05f2083d-goog


  parent reply	other threads:[~2023-11-12  0:25 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-12  0:08 [PATCH 00/29] bootm: Refactoring to reduce reliance on CMDLINE (part A) Simon Glass
2023-11-12  0:08 ` [PATCH 01/29] arm: x86: Drop discarding of command linker-lists Simon Glass
2023-11-15 19:55   ` Tom Rini
2023-11-12  0:08 ` [PATCH 02/29] mmc: env: Unify the U_BOOT_ENV_LOCATION conditions Simon Glass
2023-11-15 10:02   ` Heinrich Schuchardt
2023-11-19 14:49     ` Simon Glass
2023-11-21 18:12       ` Tom Rini
2023-11-12  0:08 ` [PATCH 03/29] treewide: Tidy up semicolon after command macros Simon Glass
2023-11-15 19:58   ` Tom Rini
2023-11-12  0:08 ` [PATCH 04/29] bootstd: Add missing header file from bootdev.h Simon Glass
2023-11-12  0:08 ` [PATCH 05/29] bootstd: Introduce programmable boot Simon Glass
2023-11-12  0:08 ` [PATCH 06/29] bootm: Drop arguments from bootm_start() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 07/29] bootm: Simplify arguments for bootm_pre_load() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 08/29] bootm: Move boot_get_kernel() higher in the file Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 09/29] image: Tidy up genimg_get_kernel_addr_fit() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 10/29] bootm: Reduce arguments to boot_get_kernel() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 11/29] image: Document error codes from fit_image_load() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 12/29] bootm: Adjust boot_get_kernel() to return an error Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 13/29] bootm: Use the error return from boot_get_kernel() Simon Glass
2023-11-15 22:36   ` Tom Rini
2023-11-12  0:08 ` [PATCH 14/29] bootstage: Drop BOOTSTAGE_ID_FIT_KERNEL_INFO Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 15/29] bootm: Move error printing out of boot_get_kernel() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 16/29] bootm: Reduce arguments to boot_find_os() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 17/29] bootm: Reduce arguments to boot_get_ramdisk() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 18/29] fdt: Allow use of fdt_support inside if() statements Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 19/29] bootm: Drop #ifdef in bootm_find_images() Simon Glass
2023-11-12  0:09 ` [PATCH 20/29] bootm: Pass image buffer to boot_get_fdt() Simon Glass
2023-11-12  0:09 ` [PATCH 21/29] bootm: Reduce arguments " Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 22/29] bootm: Reduce arguments to boot_get_fpga() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 23/29] bootm: Reduce arguments to boot_get_loadables() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 24/29] bootm: Simplify Android ramdisk addr in bootm_find_images() Simon Glass
2023-11-15 22:37   ` Tom Rini
2023-11-12  0:09 ` [PATCH 25/29] bootm: efi: Drop special call to bootm_find_other() Simon Glass
2023-11-12  0:09 ` [PATCH 26/29] bootm: optee: " Simon Glass
2023-11-12  0:09 ` Simon Glass [this message]
2023-11-15 22:38   ` [PATCH 27/29] bootm: Adjust the parameters of bootm_find_images() Tom Rini
2023-11-16  1:42     ` Simon Glass
2023-11-16  1:47       ` Tom Rini
2023-11-16  1:56         ` Simon Glass
2023-11-16  2:07           ` Tom Rini
2023-11-16  2:35             ` Simon Glass
2023-11-12  0:09 ` [PATCH 28/29] bootm: Add a function to check overlap Simon Glass
2023-11-15 22:38   ` Tom Rini
2023-11-12  0:09 ` [PATCH 29/29] bootm: Reduce arguments to bootm_find_other() Simon Glass
2023-11-15 22:38   ` Tom Rini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231112000923.73568-28-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=eajames@linux.ibm.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=mkorpershoek@baylibre.com \
    --cc=souajih@baylibre.com \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox