소스 검색

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 16 년 전
부모
커밋
d50c7d4be1
2개의 변경된 파일7개의 추가작업 그리고 4개의 파일을 삭제
  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);