Hi,

On Fri, 10 Feb 2023 11:02:12 +0000 Andre Przywara wrote:
> At the moment every subcommand of "fdt", except "addr" itself, requires
> the DT address to be set first. We explicitly check for that before even
> comparing against the subcommands' string.
> This early bailout also affects the "move" subcommand, even though that
> does not require or rely on a previous call to "fdt addr". In fact it
> even sets the FDT address to the target of the move command, so is a
> perfect beginning for a sequence of fdt commands.
> 
> Move the check for a previously set FDT address to after we handle the
> "move" command also, so we don't need a dummy call to "fdt addr" first,
> before being able to move the devicetree.
> 
> This skips one pointless "fdt addr" call in scripts which aim to alter
> the control DT, but need to copy it to a safe location first (for
> instance to $fdt_addr_r).
> 
> Signed-off-by: Andre Przywara <andre.przyw...@arm.com>
> Reviewed-by: Simon Glass <s...@chromium.org>
> ---
>  cmd/fdt.c | 28 +++++++++++++++++-----------
>  1 file changed, 17 insertions(+), 11 deletions(-)
> 
> diff --git a/cmd/fdt.c b/cmd/fdt.c
> index 0ba691c573b..1972490bdc2 100644
> --- a/cmd/fdt.c
> +++ b/cmd/fdt.c
> @@ -208,19 +208,11 @@ static int do_fdt(struct cmd_tbl *cmdtp, int flag, int 
> argc, char *const argv[])
>               }
>  
>               return CMD_RET_SUCCESS;
> -     }
> -
> -     if (!working_fdt) {
> -             puts("No FDT memory address configured. Please configure\n"
> -                  "the FDT address via \"fdt addr <address>\" command.\n"
> -                  "Aborting!\n");
> -             return CMD_RET_FAILURE;
> -     }
>  
>       /*
>        * Move the working_fdt
>        */
> -     if (strncmp(argv[1], "mo", 2) == 0) {
> +     } else if (strncmp(argv[1], "mo", 2) == 0) {
>               struct fdt_header *newaddr;
>               int  len;
>               int  err;
> @@ -263,9 +255,20 @@ static int do_fdt(struct cmd_tbl *cmdtp, int flag, int 
> argc, char *const argv[])
>                       return 1;
>               }
It's not part of your changes, but this should rather be:
                        return CMD_RET_FAILURE;



Lothar Waßmann

Reply via email to