summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaavard Skinnemoen <haavard.skinnemoen@atmel.com>2008-08-18 13:41:27 +0200
committerWolfgang Denk <wd@denx.de>2008-08-21 01:52:49 +0200
commit0768b7a872964085eece8d5e9fec9175e9deb161 (patch)
treefe9fcd3e6264f6eb075b7c2eb799221556e4f0c6
parenta928d0df211f1d829308d335d19be3ca42558dfc (diff)
Consolidate strmhz() implementation
ARM, i386, m68k and ppc all have identical implementations of strmhz(). Other architectures don't provide this function at all. This patch moves strmhz() into lib_generic, reducing code duplication and providing a more unified API across architectures. Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
-rw-r--r--include/common.h4
-rw-r--r--lib_arm/board.c13
-rw-r--r--lib_generic/Makefile1
-rw-r--r--lib_generic/strmhz.c36
-rw-r--r--lib_i386/board.c13
-rw-r--r--lib_m68k/board.c17
-rw-r--r--lib_ppc/board.c13
7 files changed, 40 insertions, 57 deletions
diff --git a/include/common.h b/include/common.h
index 06ed27806ff..de3d595ed25 100644
--- a/include/common.h
+++ b/include/common.h
@@ -224,7 +224,6 @@ void board_init_r (gd_t *, ulong) __attribute__ ((noreturn));
int checkboard (void);
int checkflash (void);
int checkdram (void);
-char * strmhz(char *buf, long hz);
int last_stage_init(void);
extern ulong monitor_flash_len;
int mac_read_from_eeprom(void);
@@ -615,6 +614,9 @@ int sprintf(char * buf, const char *fmt, ...)
__attribute__ ((format (__printf__, 2, 3)));
int vsprintf(char *buf, const char *fmt, va_list args);
+/* lib_generic/strmhz.c */
+char * strmhz(char *buf, long hz);
+
/* lib_generic/crc32.c */
uint32_t crc32 (uint32_t, const unsigned char *, uint);
uint32_t crc32_wd (uint32_t, const unsigned char *, uint, uint);
diff --git a/lib_arm/board.c b/lib_arm/board.c
index a09386046c3..6e3ef088001 100644
--- a/lib_arm/board.c
+++ b/lib_arm/board.c
@@ -115,19 +115,6 @@ void *sbrk (ptrdiff_t increment)
return ((void *) old);
}
-char *strmhz(char *buf, long hz)
-{
- long l, n;
- long m;
-
- n = hz / 1000000L;
- l = sprintf (buf, "%ld", n);
- m = (hz % 1000000L) / 1000L;
- if (m != 0)
- sprintf (buf + l, ".%03ld", m);
- return (buf);
-}
-
/************************************************************************
* Coloured LED functionality
diff --git a/lib_generic/Makefile b/lib_generic/Makefile
index 4f6ce73ab3c..bf0e31d127d 100644
--- a/lib_generic/Makefile
+++ b/lib_generic/Makefile
@@ -40,6 +40,7 @@ COBJS-$(CONFIG_MD5) += md5.o
COBJS-y += sha1.o
COBJS-$(CONFIG_SHA256) += sha256.o
COBJS-y += string.o
+COBJS-y += strmhz.o
COBJS-y += vsprintf.o
COBJS-y += zlib.o
diff --git a/lib_generic/strmhz.c b/lib_generic/strmhz.c
new file mode 100644
index 00000000000..d0b6bc60d96
--- /dev/null
+++ b/lib_generic/strmhz.c
@@ -0,0 +1,36 @@
+/*
+ * (C) Copyright 2002-2006
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+#include <common.h>
+
+char *strmhz (char *buf, long hz)
+{
+ long l, n;
+ long m;
+
+ n = hz / 1000000L;
+ l = sprintf (buf, "%ld", n);
+ m = (hz % 1000000L) / 1000L;
+ if (m != 0)
+ sprintf (buf + l, ".%03ld", m);
+ return (buf);
+}
diff --git a/lib_i386/board.c b/lib_i386/board.c
index 22191e6acfa..55fa42af424 100644
--- a/lib_i386/board.c
+++ b/lib_i386/board.c
@@ -108,19 +108,6 @@ void *sbrk (ptrdiff_t increment)
return ((void *) old);
}
-char *strmhz (char *buf, long hz)
-{
- long l, n;
- long m;
-
- n = hz / 1000000L;
- l = sprintf (buf, "%ld", n);
- m = (hz % 1000000L) / 1000L;
- if (m != 0)
- sprintf (buf + l, ".%03ld", m);
- return (buf);
-}
-
/************************************************************************
* Init Utilities *
************************************************************************
diff --git a/lib_m68k/board.c b/lib_m68k/board.c
index dedc9e4088d..e59c6b0859b 100644
--- a/lib_m68k/board.c
+++ b/lib_m68k/board.c
@@ -140,23 +140,6 @@ void *sbrk (ptrdiff_t increment)
return ((void *)old);
}
-char *strmhz(char *buf, long hz)
-{
- long l, n;
- long m;
-
- n = hz / 1000000L;
-
- l = sprintf (buf, "%ld", n);
-
- m = (hz % 1000000L) / 1000L;
-
- if (m != 0)
- sprintf (buf+l, ".%03ld", m);
-
- return (buf);
-}
-
/*
* All attempts to come up with a "common" initialization sequence
* that works for all boards and architectures failed: some of the
diff --git a/lib_ppc/board.c b/lib_ppc/board.c
index 71a70db504a..c8f075f5a68 100644
--- a/lib_ppc/board.c
+++ b/lib_ppc/board.c
@@ -168,19 +168,6 @@ void *sbrk (ptrdiff_t increment)
return ((void *) old);
}
-char *strmhz (char *buf, long hz)
-{
- long l, n;
- long m;
-
- n = hz / 1000000L;
- l = sprintf (buf, "%ld", n);
- m = (hz % 1000000L) / 1000L;
- if (m != 0)
- sprintf (buf + l, ".%03ld", m);
- return (buf);
-}
-
/*
* All attempts to come up with a "common" initialization sequence
* that works for all boards and architectures failed: some of the