[PATCH] command: add FDT setup for bootelf by flag
Dan Carpenter
dan.carpenter at linaro.org
Tue Feb 13 07:49:38 CET 2024
On Sun, Feb 11, 2024 at 11:42:48PM +0300, Maxim Moskalets wrote:
> diff --git a/cmd/elf.c b/cmd/elf.c
> index b7b9f506a5..4d365771eb 100644
> --- a/cmd/elf.c
> +++ b/cmd/elf.c
> @@ -38,6 +38,8 @@ static unsigned long do_bootelf_exec(ulong (*entry)(int, char * const[]),
> /* Interpreter command to boot an arbitrary ELF image from memory */
> int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
> {
> + unsigned long fdt_addr;
> + struct bootm_headers img = { 0 };
> unsigned long addr; /* Address of the ELF image */
> unsigned long rc; /* Return value from user code */
> char *sload = NULL;
> @@ -68,6 +70,18 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
> else
> addr = load_elf_image_shdr(addr);
>
> + if (!env_get_elf_need_fdt()) {
Should the ! be there? This looks reversed...
> + if (argc >= 1 && strict_strtoul(argv[0], 16, &fdt_addr) != -EINVAL) {
> + printf("Got FDT at 0x%08lx ...\n", fdt_addr);
> +
> + if (image_setup_libfdt(&img, (void *)fdt_addr, 0, NULL)) {
> + printf("ERROR: Failed to process device tree\n");
> + return 1;
> + }
> + }
> + }
> +
> +
> if (!env_get_autostart())
> return rcode;
There are a few style nits that I have with this change like the double
blank line at the end. Try running scripts/checkpatch.pl on your patch.
We could also combine the conditions and pull the code in a tab. Also I
recognize that you just copied the != -EINVAL from a few lines earlier
and it does work, but it's better to check for == 0 instead.
if (env_get_elf_need_fdt() && argc >= 1 &&
strict_strtoul(argv[0], 16, &fdt_addr) == 0) {
printf("Got FDT at 0x%08lx ...\n", fdt_addr);
if (image_setup_libfdt(&img, (void *)fdt_addr, 0, NULL)) {
printf("ERROR: Failed to process device tree\n");
return 1;
}
}
regards,
dan carpenter
More information about the U-Boot
mailing list