diff options
author | Matwey V. Kornilov | 2021-08-05 22:06:05 +0300 |
---|---|---|
committer | Tom Rini | 2021-08-21 18:23:02 -0400 |
commit | c091f65234cfed79cfe738a7a6e0e1bd574ba9e2 (patch) | |
tree | 0c2ea50a76f369c7d0c34091820eadf42e4c980f | |
parent | 55a202f64b1537f1cdbd0486cde10a5b6d4eef3c (diff) |
tiny-printf: Handle %pM format when CONFIG_SPL_NET_SUPPORT is enabled
%pM format string is used to print MAC-address and this is required while SPL
network boot.
This patch fixes the SPL boot issues like the following:
Trying to boot from USB eth
## Error: flags type check failure for "ethaddr" <= "40309614M" (type: m)
## Error inserting "ethaddr" variable, errno=1
eth0: eth_cpsw## Error: flags type check failure for "eth1addr" <=
"81f01114M" (type: m)
## Error inserting "eth1addr" variable, errno=1
, eth1: usb_ether
eth_cpsw Waiting for PHY auto negotiation to complete......... TIMEOUT !
Problem booting with BOOTP
SPL: failed to boot from all boot devices
### ERROR ### Please RESET the board ###
Signed-off-by: Matwey V. Kornilov <matwey.kornilov@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | lib/tiny-printf.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/lib/tiny-printf.c b/lib/tiny-printf.c index 8fc7e48d994..89aaa854771 100644 --- a/lib/tiny-printf.c +++ b/lib/tiny-printf.c @@ -9,8 +9,9 @@ */ #include <common.h> -#include <stdarg.h> +#include <log.h> #include <serial.h> +#include <stdarg.h> #include <linux/ctype.h> struct printf_info { @@ -269,20 +270,19 @@ static int _vprintf(struct printf_info *info, const char *fmt, va_list va) } break; case 'p': -#ifdef DEBUG - pointer(info, fmt, va_arg(va, void *)); - /* - * Skip this because it pulls in _ctype which is - * 256 bytes, and we don't generally implement - * pointer anyway - */ - while (isalnum(fmt[0])) - fmt++; - break; -#else + if (CONFIG_IS_ENABLED(NET_SUPPORT) || _DEBUG) { + pointer(info, fmt, va_arg(va, void *)); + /* + * Skip this because it pulls in _ctype which is + * 256 bytes, and we don't generally implement + * pointer anyway + */ + while (isalnum(fmt[0])) + fmt++; + break; + } islong = true; /* no break */ -#endif case 'x': if (islong) { num = va_arg(va, unsigned long); |