mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 06:00:43 +00:00
fdt: Allow non-FDT kernels to boot when CONFIG_OF_LIBFDT is defined
The boot commands - bootz/bootm mandate a third argument which is the address to the FDT blob. In cases where this argument is not specified, boot fails with a message indicating a missing FDT. This causes non-FDT kernels to fail to boot. This patch allows both FDT and non-FDT kernels to boot by making the third parameter to the bootm/bootz optional. Signed-off-by: Suriyan Ramasami <suriyan.r@gmail.com> Acked-by: Simon Glass <sjg@chromium.org> [trini: Update again for covering appended DTB case after last revert in this area] Signed-off-by: Tom Rini <trini@ti.com>
This commit is contained in:
parent
8b923a56dc
commit
48aead71c1
1 changed files with 11 additions and 4 deletions
|
@ -237,6 +237,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
|
|||
int fdt_noffset;
|
||||
#endif
|
||||
const char *select = NULL;
|
||||
int ok_no_fdt = 0;
|
||||
|
||||
*of_flat_tree = NULL;
|
||||
*of_size = 0;
|
||||
|
@ -309,7 +310,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
|
|||
fdt_addr);
|
||||
fdt_hdr = image_get_fdt(fdt_addr);
|
||||
if (!fdt_hdr)
|
||||
goto error;
|
||||
goto no_fdt;
|
||||
|
||||
/*
|
||||
* move image data to the load address,
|
||||
|
@ -379,7 +380,7 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
|
|||
break;
|
||||
default:
|
||||
puts("ERROR: Did not find a cmdline Flattened Device Tree\n");
|
||||
goto error;
|
||||
goto no_fdt;
|
||||
}
|
||||
|
||||
printf(" Booting using the fdt blob at %#08lx\n", fdt_addr);
|
||||
|
@ -413,11 +414,11 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
|
|||
}
|
||||
} else {
|
||||
debug("## No Flattened Device Tree\n");
|
||||
return 0;
|
||||
goto no_fdt;
|
||||
}
|
||||
} else {
|
||||
debug("## No Flattened Device Tree\n");
|
||||
return 0;
|
||||
goto no_fdt;
|
||||
}
|
||||
|
||||
*of_flat_tree = fdt_blob;
|
||||
|
@ -427,9 +428,15 @@ int boot_get_fdt(int flag, int argc, char * const argv[], uint8_t arch,
|
|||
|
||||
return 0;
|
||||
|
||||
no_fdt:
|
||||
ok_no_fdt = 1;
|
||||
error:
|
||||
*of_flat_tree = NULL;
|
||||
*of_size = 0;
|
||||
if (!select && ok_no_fdt) {
|
||||
debug("Continuing to boot without FDT\n");
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue