diff options
author | Wolfgang Denk <wd@denx.de> | 2008-10-19 02:35:48 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-10-21 11:25:35 +0200 |
commit | d50c7d4be150b2252c0d2e16cfcf69643bdd6dc9 (patch) | |
tree | f5ee3bd016b0e306564262925b471b8ba5825544 | |
parent | 681c02d05b29c6d46093525052c74b9c4ddc8b08 (diff) |
strmhz(): Round numbers when printing clock frequencies
Round clock frequencies for printing.
Many boards printed off clock frequencies like 399 MHz instead of the
exact 400 MHz because numberes were not rounded. This is fixed now.
Signed-off-by: Wolfgang Denk <wd@denx.de>
-rw-r--r-- | include/common.h | 5 | ||||
-rw-r--r-- | lib_generic/strmhz.c | 6 |
2 files changed, 7 insertions, 4 deletions
diff --git a/include/common.h b/include/common.h index e6590441369..b8a654a8ad0 100644 --- a/include/common.h +++ b/include/common.h @@ -692,8 +692,9 @@ void __attribute__((weak)) show_boot_progress (int val); #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) -#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) -#define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) +#define DIV_ROUND(n,d) (((n) + ((d)/2)) / (d)) +#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) +#define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) #define ALIGN(x,a) __ALIGN_MASK((x),(typeof(x))(a)-1) #define __ALIGN_MASK(x,mask) (((x)+(mask))&~(mask)) diff --git a/lib_generic/strmhz.c b/lib_generic/strmhz.c index d0b6bc60d96..342cf2b2126 100644 --- a/lib_generic/strmhz.c +++ b/lib_generic/strmhz.c @@ -27,9 +27,11 @@ char *strmhz (char *buf, long hz) long l, n; long m; - n = hz / 1000000L; + n = DIV_ROUND(hz, 1000000L); l = sprintf (buf, "%ld", n); - m = (hz % 1000000L) / 1000L; + + hz -= n * 1000000L; + m = DIV_ROUND(hz, 1000L); if (m != 0) sprintf (buf + l, ".%03ld", m); return (buf); |