X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=lib%2Fdisplay_options.c;h=83ea4decb53198fcc5ced9ae9f104a766afe5e8b;hb=13146ec9380364c46dbc9473faff5707351935cc;hp=3f32bcd8cf2dff807f64e8f0185f6f1fd8116e18;hpb=2ea09c836f65f52a35f5242d04f0a9e3e36b773d;p=u-boot diff --git a/lib/display_options.c b/lib/display_options.c index 3f32bcd8cf..83ea4decb5 100644 --- a/lib/display_options.c +++ b/lib/display_options.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -22,6 +23,46 @@ int display_options (void) return 0; } +void print_freq(uint64_t freq, const char *s) +{ + unsigned long m = 0; + uint32_t f; + static const char names[] = {'G', 'M', 'K'}; + unsigned long d = 1e9; + char c = 0; + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(names); i++, d /= 1000) { + if (freq >= d) { + c = names[i]; + break; + } + } + + if (!c) { + printf("%" PRIu64 " Hz%s", freq, s); + return; + } + + f = do_div(freq, d); + + /* If there's a remainder, show the first few digits */ + if (f) { + m = f; + while (m > 1000) + m /= 10; + while (m && !(m % 10)) + m /= 10; + if (m >= 100) + m = (m / 10) + (m % 100 >= 50); + } + + printf("%lu", (unsigned long) freq); + if (m) + printf(".%ld", m); + printf(" %cHz%s", c, s); +} + void print_size(uint64_t size, const char *s) { unsigned long m = 0, n; @@ -79,9 +120,9 @@ int print_buffer(ulong addr, const void *data, uint width, uint count, } lb; int i; #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA - uint64_t x; + uint64_t __maybe_unused x; #else - uint32_t x; + uint32_t __maybe_unused x; #endif if (linelen*width > MAX_LINE_LENGTH_BYTES) @@ -110,7 +151,7 @@ int print_buffer(ulong addr, const void *data, uint width, uint count, else x = lb.uc[i] = *(volatile uint8_t *)data; #ifdef CONFIG_SYS_SUPPORT_64BIT_DATA - printf(" %0*" PRIx64, width * 2, x); + printf(" %0*llx", width * 2, (long long)x); #else printf(" %0*x", width * 2, x); #endif