cmd_bootm.c: Make bootz handle BOOTM_STATE_FINDOTHER itself
As a zImage does not have a U-Boot header, we cannot really do what BOOTM_STATE_FINDOTHER does, exactly. Break the ramdisk/fdt portions of bootm_find_other into bootm_find_ramdisk/fdt which can be called in both cases. Signed-off-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
2b9599e010
commit
225fd8c5d4
|
@ -309,33 +309,53 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int bootm_find_other(cmd_tbl_t *cmdtp, int flag, int argc,
|
static int bootm_find_ramdisk(int flag, int argc, char * const argv[])
|
||||||
char * const argv[])
|
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
/* find ramdisk */
|
||||||
|
ret = boot_get_ramdisk(argc, argv, &images, IH_INITRD_ARCH,
|
||||||
|
&images.rd_start, &images.rd_end);
|
||||||
|
if (ret) {
|
||||||
|
puts("Ramdisk image is corrupt or invalid\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_OF_LIBFDT)
|
||||||
|
static int bootm_find_fdt(int flag, int argc, char * const argv[])
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* find flattened device tree */
|
||||||
|
ret = boot_get_fdt(flag, argc, argv, IH_ARCH_DEFAULT, &images,
|
||||||
|
&images.ft_addr, &images.ft_len);
|
||||||
|
if (ret) {
|
||||||
|
puts("Could not find a valid device tree\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
set_working_fdt_addr(images.ft_addr);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int bootm_find_other(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||||
|
char * const argv[])
|
||||||
|
{
|
||||||
if (((images.os.type == IH_TYPE_KERNEL) ||
|
if (((images.os.type == IH_TYPE_KERNEL) ||
|
||||||
(images.os.type == IH_TYPE_KERNEL_NOLOAD) ||
|
(images.os.type == IH_TYPE_KERNEL_NOLOAD) ||
|
||||||
(images.os.type == IH_TYPE_MULTI)) &&
|
(images.os.type == IH_TYPE_MULTI)) &&
|
||||||
(images.os.os == IH_OS_LINUX)) {
|
(images.os.os == IH_OS_LINUX)) {
|
||||||
/* find ramdisk */
|
if (bootm_find_ramdisk(flag, argc, argv))
|
||||||
ret = boot_get_ramdisk(argc, argv, &images, IH_INITRD_ARCH,
|
|
||||||
&images.rd_start, &images.rd_end);
|
|
||||||
if (ret) {
|
|
||||||
puts("Ramdisk image is corrupt or invalid\n");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
|
||||||
|
|
||||||
#if defined(CONFIG_OF_LIBFDT)
|
#if defined(CONFIG_OF_LIBFDT)
|
||||||
/* find flattened device tree */
|
if (bootm_find_fdt(flag, argc, argv))
|
||||||
ret = boot_get_fdt(flag, argc, argv, IH_ARCH_DEFAULT, &images,
|
|
||||||
&images.ft_addr, &images.ft_len);
|
|
||||||
if (ret) {
|
|
||||||
puts("Could not find a valid device tree\n");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
|
||||||
|
|
||||||
set_working_fdt_addr(images.ft_addr);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1783,6 +1803,10 @@ static int bootz_start(cmd_tbl_t *cmdtp, int flag, int argc,
|
||||||
|
|
||||||
lmb_reserve(&images->lmb, images->ep, zi_end - zi_start);
|
lmb_reserve(&images->lmb, images->ep, zi_end - zi_start);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not
|
||||||
|
* have a header that provide this informaiton.
|
||||||
|
*/
|
||||||
if (bootm_find_ramdisk(flag, argc, argv))
|
if (bootm_find_ramdisk(flag, argc, argv))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue