fdt: Make fdt addr -q quieter

64597346 "fdt: Add -q option to fdt addr for distro_bootcmd" introduced
the -q option for fdt addr, which sets the current working fdt address
without printing any output.

baf41410 "fdt: Show a message when the working FDT changes" made the
utility function set_working_fdt_addr (in cmd/fdt.c) output a message
on each invocation, even if called via fdt addr -q, in which case its
output is now slightly noisier.

To fix this, split out set_working_fdt_addr into set_working_fdt_addr
plus the static function set_working_fdt_addr_quiet.
set_working_fdt_addr_quiet can be called by "quiet" fdt cmd logic and
set_working_fdt_addr is exported (as before) to other boot logic. The
latter calls the former.

Remove the assertion from the fdt addr test case when calling with the
-q argument.

Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Peter Hoyes 2023-03-21 13:01:16 +00:00 committed by Simon Glass
parent d0bb00adcc
commit b4fae89c48
2 changed files with 14 additions and 6 deletions

View file

@ -36,16 +36,21 @@ static int is_printable_string(const void *data, int len);
*/ */
struct fdt_header *working_fdt; struct fdt_header *working_fdt;
void set_working_fdt_addr(ulong addr) static void set_working_fdt_addr_quiet(ulong addr)
{ {
void *buf; void *buf;
printf("Working FDT set to %lx\n", addr);
buf = map_sysmem(addr, 0); buf = map_sysmem(addr, 0);
working_fdt = buf; working_fdt = buf;
env_set_hex("fdtaddr", addr); env_set_hex("fdtaddr", addr);
} }
void set_working_fdt_addr(ulong addr)
{
printf("Working FDT set to %lx\n", addr);
set_working_fdt_addr_quiet(addr);
}
/* /*
* Get a value from the fdt and format it to be set in the environment * Get a value from the fdt and format it to be set in the environment
*/ */
@ -192,10 +197,14 @@ static int do_fdt(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
if ((quiet && fdt_check_header(blob)) || if ((quiet && fdt_check_header(blob)) ||
(!quiet && !fdt_valid(&blob))) (!quiet && !fdt_valid(&blob)))
return 1; return 1;
if (control) if (control) {
gd->fdt_blob = blob; gd->fdt_blob = blob;
else } else {
set_working_fdt_addr(addr); if (quiet)
set_working_fdt_addr_quiet(addr);
else
set_working_fdt_addr(addr);
}
if (argc >= 2) { if (argc >= 2) {
int len; int len;

View file

@ -236,7 +236,6 @@ static int fdt_test_addr_resize(struct unit_test_state *uts)
/* ...quietly */ /* ...quietly */
ut_assertok(run_commandf("fdt addr -q %08lx %zx", addr, sizeof(fdt) / 4)); ut_assertok(run_commandf("fdt addr -q %08lx %zx", addr, sizeof(fdt) / 4));
ut_assert_nextline("Working FDT set to %lx", addr);
ut_assertok(ut_check_console_end(uts)); ut_assertok(ut_check_console_end(uts));
/* We cannot easily provoke errors in fdt_open_into(), so ignore that */ /* We cannot easily provoke errors in fdt_open_into(), so ignore that */