common: Move and rename CONFIG_SYS_SUPPORT_64BIT_DATA
[oweals/u-boot.git] / lib / display_options.c
index 4f2961fbfb7e3fdd5b9404810e10a892ce50b7cc..74f769d9ff893e27288a16e79567b67fbf719364 100644 (file)
@@ -1,26 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * (C) Copyright 2000-2002
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <config.h>
 #include <common.h>
 #include <console.h>
 #include <div64.h>
-#include <inttypes.h>
 #include <version.h>
 #include <linux/ctype.h>
 #include <asm/io.h>
 
-int display_options (void)
+char *display_options_get_banner_priv(bool newlines, const char *build_tag,
+                                     char *buf, int size)
 {
-#if defined(BUILD_TAG)
-       printf ("\n\n%s, Build: %s\n\n", version_string, BUILD_TAG);
-#else
-       printf ("\n\n%s\n\n", version_string);
+       int len;
+
+       len = snprintf(buf, size, "%s%s", newlines ? "\n\n" : "",
+                      version_string);
+       if (build_tag && len < size)
+               len += snprintf(buf + len, size - len, ", Build: %s",
+                               build_tag);
+       if (len > size - 3)
+               len = size - 3;
+       if (len < 0)
+               len = 0;
+       snprintf(buf + len, size - len, "\n\n");
+
+       return buf;
+}
+
+#ifndef BUILD_TAG
+#define BUILD_TAG NULL
 #endif
+
+char *display_options_get_banner(bool newlines, char *buf, int size)
+{
+       return display_options_get_banner_priv(newlines, BUILD_TAG, buf, size);
+}
+
+int display_options(void)
+{
+       char buf[DISPLAY_OPTIONS_BANNER_LENGTH];
+
+       display_options_get_banner(true, buf, sizeof(buf));
+       printf("%s", buf);
+
        return 0;
 }
 
@@ -41,7 +66,7 @@ void print_freq(uint64_t freq, const char *s)
        }
 
        if (!c) {
-               printf("%" PRIu64 " Hz%s", freq, s);
+               printf("%llu Hz%s", freq, s);
                return;
        }
 
@@ -81,7 +106,7 @@ void print_size(uint64_t size, const char *s)
        }
 
        if (!c) {
-               printf("%" PRIu64 " Bytes%s", size, s);
+               printf("%llu Bytes%s", size, s);
                return;
        }
 
@@ -112,7 +137,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
 {
        /* linebuf as a union causes proper alignment */
        union linebuf {
-#ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
+#ifdef MEM_SUPPORT_64BIT_DATA
                uint64_t uq[MAX_LINE_LENGTH_BYTES/sizeof(uint64_t) + 1];
 #endif
                uint32_t ui[MAX_LINE_LENGTH_BYTES/sizeof(uint32_t) + 1];
@@ -120,7 +145,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
                uint8_t  uc[MAX_LINE_LENGTH_BYTES/sizeof(uint8_t) + 1];
        } lb;
        int i;
-#ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
+#ifdef MEM_SUPPORT_64BIT_DATA
        uint64_t __maybe_unused x;
 #else
        uint32_t __maybe_unused x;
@@ -143,7 +168,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
                for (i = 0; i < thislinelen; i++) {
                        if (width == 4)
                                x = lb.ui[i] = *(volatile uint32_t *)data;
-#ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
+#ifdef MEM_SUPPORT_64BIT_DATA
                        else if (width == 8)
                                x = lb.uq[i] = *(volatile uint64_t *)data;
 #endif
@@ -151,7 +176,9 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
                                x = lb.us[i] = *(volatile uint16_t *)data;
                        else
                                x = lb.uc[i] = *(volatile uint8_t *)data;
-#ifdef CONFIG_SYS_SUPPORT_64BIT_DATA
+#if defined(CONFIG_SPL_BUILD)
+                       printf(" %x", (uint)x);
+#elif defined(MEM_SUPPORT_64BIT_DATA)
                        printf(" %0*llx", width * 2, (long long)x);
 #else
                        printf(" %0*x", width * 2, x);
@@ -178,8 +205,10 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
                addr += thislinelen * width;
                count -= thislinelen;
 
+#ifndef CONFIG_SPL_BUILD
                if (ctrlc())
                        return -1;
+#endif
        }
 
        return 0;