consolidate mdelay by providing a common function for all users

There are several mdelay() definitions in the driver and
board code. Remove them all and provide a common mdelay()
in lib/time.c.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Acked-by: Mike Frysinger <vapier@gentoo.org>
diff --git a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
index 9a0bbae..263d2ce 100644
--- a/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
+++ b/arch/arm/cpu/arm920t/s3c24x0/usb_ohci.c
@@ -1540,7 +1540,6 @@
 	writel(RH_HS_LPSC, &ohci->regs->roothub.status);
 #endif /* OHCI_USE_NPS */
 
-#define mdelay(n) ({unsigned long msec=(n); while (msec--) udelay(1000);})
 	/* POTPGT delay is bits 24-31, in 2 ms units. */
 	mdelay((roothub_a(ohci) >> 23) & 0x1fe);
 
diff --git a/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c b/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c
index 0bc2305..866dd6c 100644
--- a/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c
+++ b/arch/mips/cpu/mips32/au1x00/au1x00_usb_ohci.c
@@ -1448,7 +1448,6 @@
 	writel (RH_HS_LPSC, &ohci->regs->roothub.status);
 #endif	/* OHCI_USE_NPS */
 
-#define mdelay(n) ({unsigned long msec=(n); while (msec--) udelay(1000);})
 	/* POTPGT delay is bits 24-31, in 2 ms units. */
 	mdelay ((roothub_a (ohci) >> 23) & 0x1fe);
 
diff --git a/arch/powerpc/cpu/mpc5xxx/usb_ohci.c b/arch/powerpc/cpu/mpc5xxx/usb_ohci.c
index 7976e4d..2fc1180 100644
--- a/arch/powerpc/cpu/mpc5xxx/usb_ohci.c
+++ b/arch/powerpc/cpu/mpc5xxx/usb_ohci.c
@@ -1455,7 +1455,6 @@
 	writel (RH_HS_LPSC, &ohci->regs->roothub.status);
 #endif	/* OHCI_USE_NPS */
 
-#define mdelay(n) ({unsigned long msec=(n); while (msec--) udelay(1000);})
 	/* POTPGT delay is bits 24-31, in 2 ms units. */
 	mdelay ((roothub_a (ohci) >> 23) & 0x1fe);
 
diff --git a/arch/powerpc/cpu/ppc4xx/usb_ohci.c b/arch/powerpc/cpu/ppc4xx/usb_ohci.c
index a9edacd..fe091e3 100644
--- a/arch/powerpc/cpu/ppc4xx/usb_ohci.c
+++ b/arch/powerpc/cpu/ppc4xx/usb_ohci.c
@@ -1462,7 +1462,6 @@
 	writel (RH_HS_LPSC, &ohci->regs->roothub.status);
 #endif	/* OHCI_USE_NPS */
 
-#define mdelay(n) ({unsigned long msec=(n); while (msec--) udelay(1000);})
 	/* POTPGT delay is bits 24-31, in 2 ms units. */
 	mdelay ((roothub_a (ohci) >> 23) & 0x1fe);
 
diff --git a/arch/powerpc/include/asm/4xx_pcie.h b/arch/powerpc/include/asm/4xx_pcie.h
index 90e0bd9..fbdc28e 100644
--- a/arch/powerpc/include/asm/4xx_pcie.h
+++ b/arch/powerpc/include/asm/4xx_pcie.h
@@ -389,14 +389,6 @@
 	return 0;
 }
 
-static inline void mdelay(int n)
-{
-	u32 ms = n;
-
-	while (ms--)
-		udelay(1000);
-}
-
 #if defined(PCIE0_SDR)
 static inline u32 sdr_base(int port)
 {
diff --git a/board/amcc/taishan/lcd.c b/board/amcc/taishan/lcd.c
index 7f7730a..8208ef3 100644
--- a/board/amcc/taishan/lcd.c
+++ b/board/amcc/taishan/lcd.c
@@ -35,8 +35,6 @@
 #define LCD_DATA_ADDR		((volatile char *)(CONFIG_SYS_EBC2_LCM_BASE+1))
 #define LCD_BLK_CTRL		((volatile char *)(CONFIG_SYS_EBC1_FPGA_BASE+0x2))
 
-#define mdelay(t)	({unsigned long msec=(t); while (msec--) { udelay(1000);}})
-
 static int g_lcd_init_b = 0;
 static char *amcc_logo = "  AMCC TAISHAN  440GX EvalBoard";
 static char addr_flag = 0x80;
diff --git a/board/freescale/mx35pdk/mx35pdk.c b/board/freescale/mx35pdk/mx35pdk.c
index 9eefe5e..8f9b857 100644
--- a/board/freescale/mx35pdk/mx35pdk.c
+++ b/board/freescale/mx35pdk/mx35pdk.c
@@ -46,8 +46,6 @@
 #error "CONFIG_BOARD_EARLY_INIT_F must be set for this board"
 #endif
 
-#define mdelay(n) ({unsigned long msec = (n); while (msec--) udelay(1000); })
-
 DECLARE_GLOBAL_DATA_PTR;
 
 int dram_init(void)
diff --git a/board/karo/tx25/tx25.c b/board/karo/tx25/tx25.c
index 307ffd0..ec83f99 100644
--- a/board/karo/tx25/tx25.c
+++ b/board/karo/tx25/tx25.c
@@ -31,12 +31,6 @@
 #include <asm/gpio.h>
 #include <asm/arch/sys_proto.h>
 
-static void mdelay(int n)
-{
-	while (n-- > 0)
-		udelay(1000);
-}
-
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifdef CONFIG_FEC_MXC
diff --git a/board/linkstation/hwctl.c b/board/linkstation/hwctl.c
index 9fd56ae..d2090be 100644
--- a/board/linkstation/hwctl.c
+++ b/board/linkstation/hwctl.c
@@ -19,8 +19,6 @@
 #include <command.h>
 #include <asm/io.h>
 
-#define mdelay(n)	udelay((n)*1000)
-
 #define AVR_PORT CONFIG_SYS_NS16550_COM2
 
 /* 2005.5.10 BUFFALO add */
diff --git a/drivers/block/fsl_sata.c b/drivers/block/fsl_sata.c
index b101bd7..6b35173 100644
--- a/drivers/block/fsl_sata.c
+++ b/drivers/block/fsl_sata.c
@@ -50,13 +50,6 @@
 #endif
 };
 
-static inline void mdelay(unsigned long msec)
-{
-	unsigned long i;
-	for (i = 0; i < msec; i++)
-		udelay(1000);
-}
-
 static inline void sdelay(unsigned long sec)
 {
 	unsigned long i;
diff --git a/drivers/block/ftide020.c b/drivers/block/ftide020.c
index 2eef3e9..4a7a07f 100644
--- a/drivers/block/ftide020.c
+++ b/drivers/block/ftide020.c
@@ -54,8 +54,6 @@
 #define WRITE_CMD(x)	outl((x), &ftide020->cmd_fifo)	/* 0x04 */
 #define READ_STATUS()	inl(&ftide020->cmd_fifo)	/* 0x04 */
 
-#define mdelay(n) ({unsigned long msec = (n); while (msec--) udelay(1000); })
-
 void ftide_set_device(int cx8, int dev)
 {
 	static struct ftide020_s *ftide020 = (struct ftide020_s *) FTIDE_BASE;
diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c
index 98145bc..01bdf81 100644
--- a/drivers/net/e1000.c
+++ b/drivers/net/e1000.c
@@ -50,7 +50,6 @@
 
 #define virt_to_bus(devno, v)	pci_virt_to_mem(devno, (void *) (v))
 #define bus_to_phys(devno, a)	pci_mem_to_phys(devno, a)
-#define mdelay(n)	udelay((n)*1000)
 
 #define E1000_DEFAULT_PCI_PBA	0x00000030
 #define E1000_DEFAULT_PCIE_PBA	0x000a0026
diff --git a/drivers/net/ftgmac100.c b/drivers/net/ftgmac100.c
index 821840f..0af0c34 100644
--- a/drivers/net/ftgmac100.c
+++ b/drivers/net/ftgmac100.c
@@ -33,8 +33,6 @@
 
 #define ETH_ZLEN	60
 
-#define mdelay(n) ({unsigned long msec = (n); while (msec--) udelay(1000); })
-
 /* RBSR - hw default init value is also 0x640 */
 #define RBSR_DEFAULT_VALUE	0x640
 
diff --git a/drivers/net/ne2000.c b/drivers/net/ne2000.c
index 7a85314..3939158 100644
--- a/drivers/net/ne2000.c
+++ b/drivers/net/ne2000.c
@@ -78,7 +78,6 @@
 /* NE2000 base header file */
 #include "ne2000_base.h"
 
-#define mdelay(n) udelay((n)*1000)
 /* find prom (taken from pc_net_cs.c from Linux) */
 
 #include "8390.h"
diff --git a/drivers/net/ne2000_base.c b/drivers/net/ne2000_base.c
index f93f932..f0cd2b6 100644
--- a/drivers/net/ne2000_base.c
+++ b/drivers/net/ne2000_base.c
@@ -77,7 +77,6 @@
 #include <net.h>
 #include <malloc.h>
 
-#define mdelay(n)	udelay((n)*1000)
 /* forward definition of function used for the uboot interface */
 void uboot_push_packet_len(int len);
 void uboot_push_tx_done(int key, int val);
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index a677fd4..e34b487 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -35,8 +35,6 @@
 void pkt_data_push(struct eth_device *dev, u32 addr, u32 val) \
 	__attribute__ ((weak, alias ("smc911x_reg_write")));
 
-#define mdelay(n)       udelay((n)*1000)
-
 static void smc911x_handle_mac_address(struct eth_device *dev)
 {
 	unsigned long addrh, addrl;
diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
index c20d706..60c9595 100644
--- a/drivers/usb/host/ohci-hcd.c
+++ b/drivers/usb/host/ohci-hcd.c
@@ -1749,7 +1749,6 @@
 	ohci_writel(RH_HS_LPSC, &ohci->regs->roothub.status);
 #endif	/* OHCI_USE_NPS */
 
-#define mdelay(n) ({unsigned long msec = (n); while (msec--) udelay(1000); })
 	/* POTPGT delay is bits 24-31, in 2 ms units. */
 	mdelay((roothub_a(ohci) >> 23) & 0x1fe);
 
diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c
index 82a8b36..c713d42 100644
--- a/drivers/usb/host/sl811-hcd.c
+++ b/drivers/usb/host/sl811-hcd.c
@@ -51,8 +51,6 @@
 #define	 SL811_ADR (0x50000000)
 #define	 SL811_DAT (0x50000001)
 
-#define mdelay(n) ({unsigned long msec=(n); while (msec--) udelay(1000);})
-
 #ifdef SL811_DEBUG
 static int debug = 9;
 #endif
diff --git a/include/common.h b/include/common.h
index e3ef66d..ccd3dd7 100644
--- a/include/common.h
+++ b/include/common.h
@@ -706,6 +706,7 @@
 
 /* lib/time.c */
 void	udelay        (unsigned long);
+void mdelay(unsigned long);
 
 /* lib/uuid.c */
 void uuid_str_to_bin(const char *uuid, unsigned char *out);
diff --git a/lib/time.c b/lib/time.c
index a309c26..6e2937b 100644
--- a/lib/time.c
+++ b/lib/time.c
@@ -41,3 +41,9 @@
 		usec -= kv;
 	} while(usec);
 }
+
+void mdelay(unsigned long msec)
+{
+	while (msec--)
+		udelay(1000);
+}