]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
tiny-printf: Handle %pM format when CONFIG_SPL_NET_SUPPORT is enabled
authorMatwey V. Kornilov <matwey.kornilov@gmail.com>
Thu, 5 Aug 2021 19:06:05 +0000 (22:06 +0300)
committerTom Rini <trini@konsulko.com>
Sat, 21 Aug 2021 22:23:02 +0000 (18:23 -0400)
%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>
lib/tiny-printf.c

index 8fc7e48d9942178d07c4e3ef76283ad4011e04d9..89aaa8547710b3d970d78174a95c1746213297f4 100644 (file)
@@ -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);