mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 12:46:14 +02:00
bootm: Adjust the parameters of bootm_find_images()
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>
This commit is contained in:
parent
b020254d71
commit
3ac85bdc6a
45
boot/bootm.c
45
boot/bootm.c
@ -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;
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user