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