Explorar el Código

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>
Wolfgang Denk hace 16 años
padre
commit
d50c7d4be1
Se han modificado 2 ficheros con 7 adiciones y 4 borrados
  1. 3 2
      include/common.h
  2. 4 2
      lib_generic/strmhz.c

+ 3 - 2
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))

+ 4 - 2
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);