All of lore.kernel.org
 help / color / mirror / Atom feed
From: Graeme Russ <graeme.russ@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v1 (WIP) 12/16] [Timer]Replace get_timer() usage in drivers/
Date: Tue, 28 Jun 2011 21:41:05 +1000	[thread overview]
Message-ID: <1309261269-4363-13-git-send-email-graeme.russ@gmail.com> (raw)
In-Reply-To: <1309261269-4363-1-git-send-email-graeme.russ@gmail.com>


Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
---
 drivers/fpga/ACEX1K.c             |    5 ++-
 drivers/fpga/cyclon2.c            |    5 ++-
 drivers/fpga/spartan2.c           |   30 +++++++++++--------
 drivers/fpga/spartan3.c           |   32 +++++++++++++--------
 drivers/fpga/virtex2.c            |   20 ++++++++-----
 drivers/i2c/bfin-twi_i2c.c        |    6 ++--
 drivers/i2c/spr_i2c.c             |   28 ++++++++++--------
 drivers/i2c/u8500_i2c.c           |    8 ++--
 drivers/input/ps2mult.c           |    6 ++--
 drivers/mmc/omap_hsmmc.c          |   57 ++++++++++++++++++++-----------------
 drivers/mtd/spi/atmel.c           |    4 +-
 drivers/net/4xx_enet.c            |    8 ++---
 drivers/net/bcm570x.c             |    2 +-
 drivers/net/cs8900.c              |   17 ++++++-----
 drivers/net/dm9000x.c             |    6 ++--
 drivers/net/ethoc.c               |    6 ++--
 drivers/net/fec_mxc.c             |   18 ++++++------
 drivers/net/ftgmac100.c           |    6 ++--
 drivers/net/ftmac100.c            |    6 ++--
 drivers/net/greth.c               |   16 +++++-----
 drivers/net/lan91c96.c            |    5 ++-
 drivers/net/ne2000_base.c         |    6 ++--
 drivers/net/netarm_eth.c          |   12 ++++---
 drivers/net/ns7520_eth.c          |    5 ++-
 drivers/net/ns9750_eth.c          |    4 +-
 drivers/net/rtl8139.c             |    6 ++--
 drivers/net/rtl8169.c             |   26 ++++++++---------
 drivers/net/smc91111.c            |    4 +-
 drivers/serial/serial_clps7111.c  |    6 ++--
 drivers/serial/serial_netarm.c    |    4 +-
 drivers/spi/atmel_dataflash_spi.c |    8 ++---
 drivers/usb/gadget/ether.c        |   25 ++++++++--------
 drivers/usb/host/ehci-hcd.c       |    8 ++--
 drivers/usb/host/sl811-hcd.c      |    5 ++-
 34 files changed, 220 insertions(+), 190 deletions(-)

diff --git a/drivers/fpga/ACEX1K.c b/drivers/fpga/ACEX1K.c
index 06b4247..7a8e744 100644
--- a/drivers/fpga/ACEX1K.c
+++ b/drivers/fpga/ACEX1K.c
@@ -156,10 +156,11 @@ static int ACEX1K_ps_load (Altera_desc * desc, void *buf, size_t bsize)
 		udelay(2);		/* T_cf2st1 < 4us	*/
 
 		/* Wait for nSTATUS to be released (i.e. deasserted) */
-		ts = get_timer (0);		/* get current time */
+		ts = timer_ms_now();		/* get current time */
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			if (time_ms_delta_min(ts, timer_ms_now()) >
+				CONFIG_SYS_FPGA_WAIT) {	/* check the time */
 				puts ("** Timeout waiting for STATUS to go high.\n");
 				(*fn->abort) (cookie);
 				return FPGA_FAIL;
diff --git a/drivers/fpga/cyclon2.c b/drivers/fpga/cyclon2.c
index 4622b4e..5dd6cdd 100644
--- a/drivers/fpga/cyclon2.c
+++ b/drivers/fpga/cyclon2.c
@@ -139,10 +139,11 @@ static int CYC2_ps_load (Altera_desc * desc, void *buf, size_t bsize)
 		udelay(2);		/* T_cfg > 2us	*/
 
 		/* Wait for nSTATUS to be asserted */
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();		/* get current time */
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for STATUS to go high.\n");
 				(*fn->abort) (cookie);
 				return FPGA_FAIL;
diff --git a/drivers/fpga/spartan2.c b/drivers/fpga/spartan2.c
index cd16a9c..cab68ef 100644
--- a/drivers/fpga/spartan2.c
+++ b/drivers/fpga/spartan2.c
@@ -168,11 +168,12 @@ static int Spartan2_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		CONFIG_FPGA_DELAY ();
 		(*fn->pgm) (FALSE, TRUE, cookie);	/* Deassert the program, commit */
 
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();		/* get current time */
 		/* Now wait for INIT and BUSY to go high */
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_sine_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for INIT to clear.\n");
 				(*fn->abort) (cookie);	/* abort the burn */
 				return FPGA_FAIL;
@@ -195,7 +196,7 @@ static int Spartan2_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 			(*fn->clk) (TRUE, TRUE, cookie);	/* Assert the clock pin */
 
 #ifdef CONFIG_SYS_FPGA_CHECK_BUSY
-			ts = get_timer (0);	/* get current time */
+			ts = time_now_ms();	/* get current time */
 			while ((*fn->busy) (cookie)) {
 				/* XXX - we should have a check in here somewhere to
 				 * make sure we aren't busy forever... */
@@ -205,7 +206,8 @@ static int Spartan2_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 				CONFIG_FPGA_DELAY ();
 				(*fn->clk) (TRUE, TRUE, cookie);	/* Assert the clock pin */
 
-				if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+				/* check the time */
+				if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 					puts ("** Timeout waiting for BUSY to clear.\n");
 					(*fn->abort) (cookie);	/* abort the burn */
 					return FPGA_FAIL;
@@ -228,7 +230,7 @@ static int Spartan2_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 #endif
 
 		/* now check for done signal */
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();		/* get current time */
 		ret_val = FPGA_SUCCESS;
 		while ((*fn->done) (cookie) == FPGA_FAIL) {
 
@@ -237,7 +239,8 @@ static int Spartan2_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 			CONFIG_FPGA_DELAY ();
 			(*fn->clk) (TRUE, TRUE, cookie);	/* Assert the clock pin */
 
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_sine_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for DONE to clear.\n");
 				(*fn->abort) (cookie);	/* abort the burn */
 				ret_val = FPGA_FAIL;
@@ -354,10 +357,11 @@ static int Spartan2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		(*fn->pgm) (TRUE, TRUE, cookie);	/* Assert the program, commit */
 
 		/* Wait for INIT state (init low)                            */
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();		/* get current time */
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for INIT to start.\n");
 				return FPGA_FAIL;
 			}
@@ -367,11 +371,12 @@ static int Spartan2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		CONFIG_FPGA_DELAY ();
 		(*fn->pgm) (FALSE, TRUE, cookie);	/* Deassert the program, commit */
 
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();		/* get current time */
 		/* Now wait for INIT to go high */
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for INIT to clear.\n");
 				return FPGA_FAIL;
 			}
@@ -415,7 +420,7 @@ static int Spartan2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 #endif
 
 		/* now check for done signal */
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();		/* get current time */
 		ret_val = FPGA_SUCCESS;
 		(*fn->wr) (TRUE, TRUE, cookie);
 
@@ -428,7 +433,8 @@ static int Spartan2_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 
 			putc ('*');
 
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for DONE to clear.\n");
 				ret_val = FPGA_FAIL;
 				break;
diff --git a/drivers/fpga/spartan3.c b/drivers/fpga/spartan3.c
index 1dd6f26..8282a23 100644
--- a/drivers/fpga/spartan3.c
+++ b/drivers/fpga/spartan3.c
@@ -173,11 +173,12 @@ static int Spartan3_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		CONFIG_FPGA_DELAY ();
 		(*fn->pgm) (FALSE, TRUE, cookie);	/* Deassert the program, commit */
 
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();		/* get current time */
 		/* Now wait for INIT and BUSY to go high */
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for INIT to clear.\n");
 				(*fn->abort) (cookie);	/* abort the burn */
 				return FPGA_FAIL;
@@ -200,7 +201,7 @@ static int Spartan3_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 			(*fn->clk) (TRUE, TRUE, cookie);	/* Assert the clock pin */
 
 #ifdef CONFIG_SYS_FPGA_CHECK_BUSY
-			ts = get_timer (0);	/* get current time */
+			ts = time_now_ms();	/* get current time */
 			while ((*fn->busy) (cookie)) {
 				/* XXX - we should have a check in here somewhere to
 				 * make sure we aren't busy forever... */
@@ -210,7 +211,8 @@ static int Spartan3_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 				CONFIG_FPGA_DELAY ();
 				(*fn->clk) (TRUE, TRUE, cookie);	/* Assert the clock pin */
 
-				if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+				/* check the time */
+				if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 					puts ("** Timeout waiting for BUSY to clear.\n");
 					(*fn->abort) (cookie);	/* abort the burn */
 					return FPGA_FAIL;
@@ -233,7 +235,7 @@ static int Spartan3_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 #endif
 
 		/* now check for done signal */
-		ts = get_timer (0);		/* get current time */
+		ts = time_since_ms();		/* get current time */
 		ret_val = FPGA_SUCCESS;
 		while ((*fn->done) (cookie) == FPGA_FAIL) {
 			/* XXX - we should have a check in here somewhere to
@@ -244,7 +246,8 @@ static int Spartan3_sp_load (Xilinx_desc * desc, void *buf, size_t bsize)
 			CONFIG_FPGA_DELAY ();
 			(*fn->clk) (TRUE, TRUE, cookie);	/* Assert the clock pin */
 
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for DONE to clear.\n");
 				(*fn->abort) (cookie);	/* abort the burn */
 				ret_val = FPGA_FAIL;
@@ -361,10 +364,12 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		(*fn->pgm) (TRUE, TRUE, cookie);	/* Assert the program, commit */
 
 		/* Wait for INIT state (init low)                            */
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();	/* get current time */
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for INIT to start.\n");
 				if (*fn->abort)
 					(*fn->abort) (cookie);
@@ -376,11 +381,13 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		CONFIG_FPGA_DELAY ();
 		(*fn->pgm) (FALSE, TRUE, cookie);	/* Deassert the program, commit */
 
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();	/* get current time */
 		/* Now wait for INIT to go high */
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for INIT to clear.\n");
 				if (*fn->abort)
 					(*fn->abort) (cookie);
@@ -432,7 +439,7 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 #endif
 
 		/* now check for done signal */
-		ts = get_timer (0);		/* get current time */
+		ts = time_now_ms();		/* get current time */
 		ret_val = FPGA_SUCCESS;
 		(*fn->wr) (TRUE, TRUE, cookie);
 
@@ -447,7 +454,8 @@ static int Spartan3_ss_load (Xilinx_desc * desc, void *buf, size_t bsize)
 
 			putc ('*');
 
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT) {	/* check the time */
+			/* check the time */
+			if (time_since_ms(ts) > CONFIG_SYS_FPGA_WAIT) {
 				puts ("** Timeout waiting for DONE to clear.\n");
 				ret_val = FPGA_FAIL;
 				break;
diff --git a/drivers/fpga/virtex2.c b/drivers/fpga/virtex2.c
index d1b4d15..d1995e6 100644
--- a/drivers/fpga/virtex2.c
+++ b/drivers/fpga/virtex2.c
@@ -223,9 +223,10 @@ static int Virtex2_ssm_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		 */
 		(*fn->pgm) (TRUE, TRUE, cookie);
 		udelay (10);
-		ts = get_timer (0);
+		ts = time_ms_now();
 		do {
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT_INIT) {
+			if (time_ms_delta_min(ts, timer_ms_now())
+					> CONFIG_SYS_FPGA_WAIT_INIT) {
 				printf ("%s:%d: ** Timeout after %d ticks waiting for INIT"
 						" to assert.\n", __FUNCTION__, __LINE__,
 						CONFIG_SYS_FPGA_WAIT_INIT);
@@ -241,10 +242,11 @@ static int Virtex2_ssm_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		/*
 		 * Start a timer and wait for INIT_B to go high
 		 */
-		ts = get_timer (0);
+		ts = time_ms_now();
 		do {
 			CONFIG_FPGA_DELAY ();
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT_INIT) {
+			if (time_ms_delta_min(ts, timer_ms_now())
+					> CONFIG_SYS_FPGA_WAIT_INIT) {
 				printf ("%s:%d: ** Timeout after %d ticks waiting for INIT"
 						" to deassert.\n", __FUNCTION__, __LINE__,
 						CONFIG_SYS_FPGA_WAIT_INIT);
@@ -297,9 +299,10 @@ static int Virtex2_ssm_load (Xilinx_desc * desc, void *buf, size_t bsize)
 			(*fn->clk) (TRUE, TRUE, cookie);
 
 #ifdef CONFIG_SYS_FPGA_CHECK_BUSY
-			ts = get_timer (0);
+			ts = time_ms_now();
 			while ((*fn->busy) (cookie)) {
-				if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT_BUSY) {
+				if (time_ms_delta_min(ts, timer_ms_now())
+						> CONFIG_SYS_FPGA_WAIT_BUSY) {
 					printf ("%s:%d: ** Timeout after %d ticks waiting for"
 							" BUSY to deassert\n",
 							__FUNCTION__, __LINE__, CONFIG_SYS_FPGA_WAIT_BUSY);
@@ -330,10 +333,11 @@ static int Virtex2_ssm_load (Xilinx_desc * desc, void *buf, size_t bsize)
 		 * Check for successful configuration.  FPGA INIT_B and DONE should
 		 * both be high upon successful configuration.
 		 */
-		ts = get_timer (0);
+		ts = time_ms_now();
 		ret_val = FPGA_SUCCESS;
 		while (((*fn->done) (cookie) == FPGA_FAIL) || (*fn->init) (cookie)) {
-			if (get_timer (ts) > CONFIG_SYS_FPGA_WAIT_CONFIG) {
+			if (time_ms_delta_min(ts, timer_ms_now())
+					> CONFIG_SYS_FPGA_WAIT_CONFIG) {
 				printf ("%s:%d: ** Timeout after %d ticks waiting for DONE to"
 						"assert and INIT to deassert\n",
 						__FUNCTION__, __LINE__, CONFIG_SYS_FPGA_WAIT_CONFIG);
diff --git a/drivers/i2c/bfin-twi_i2c.c b/drivers/i2c/bfin-twi_i2c.c
index b3a04d3..66f3677 100644
--- a/drivers/i2c/bfin-twi_i2c.c
+++ b/drivers/i2c/bfin-twi_i2c.c
@@ -94,7 +94,7 @@ struct i2c_msg {
 static int wait_for_completion(struct i2c_msg *msg)
 {
 	uint16_t int_stat;
-	ulong timebase = get_timer(0);
+	u32 timebase = time_ms_now();
 
 	do {
 		int_stat = twi->int_stat;
@@ -146,9 +146,9 @@ static int wait_for_completion(struct i2c_msg *msg)
 
 		/* If we were able to do something, reset timeout */
 		if (int_stat)
-			timebase = get_timer(0);
+			timebase = time_ms_now();
 
-	} while (get_timer(timebase) < I2C_TIMEOUT);
+	} while time_ms_delta_min(timebase, timer_ms_now()) < I2C_TIMEOUT);
 
 	return msg->len;
 }
diff --git a/drivers/i2c/spr_i2c.c b/drivers/i2c/spr_i2c.c
index eabfe84..de5cd10 100644
--- a/drivers/i2c/spr_i2c.c
+++ b/drivers/i2c/spr_i2c.c
@@ -168,13 +168,14 @@ static void i2c_flush_rxfifo(void)
  */
 static int i2c_wait_for_bb(void)
 {
-	unsigned long start_time_bb = get_timer(0);
+	u32 start_time_bb = time_ms_now();
 
 	while ((readl(&i2c_regs_p->ic_status) & IC_STATUS_MA) ||
 	       !(readl(&i2c_regs_p->ic_status) & IC_STATUS_TFE)) {
 
 		/* Evaluate timeout */
-		if (get_timer(start_time_bb) > (unsigned long)(I2C_BYTE_TO_BB))
+		if (time_ms_delta_min(start_time_bb, timer_ms_now())
+				> (unsigned long)(I2C_BYTE_TO_BB))
 			return 1;
 	}
 
@@ -217,13 +218,14 @@ static int i2c_xfer_init(uchar chip, uint addr)
 
 static int i2c_xfer_finish(void)
 {
-	ulong start_stop_det = get_timer(0);
+	u32 start_stop_det = time_ms_now();
 
 	while (1) {
 		if ((readl(&i2c_regs_p->ic_raw_intr_stat) & IC_STOP_DET)) {
 			readl(&i2c_regs_p->ic_clr_stop_det);
 			break;
-		} else if (get_timer(start_stop_det) > I2C_STOPDET_TO) {
+		} else if (time_ms_delta_min(start_stop_det, timer_ms_now())
+				> I2C_STOPDET_TO) {
 			break;
 		}
 	}
@@ -253,7 +255,7 @@ static int i2c_xfer_finish(void)
  */
 int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)
 {
-	unsigned long start_time_rx;
+	u32 start_time_rx;
 
 	if (check_params(addr, alen, buffer, len))
 		return 1;
@@ -261,16 +263,17 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)
 	if (i2c_xfer_init(chip, addr))
 		return 1;
 
-	start_time_rx = get_timer(0);
+	start_time_rx = time_ms_now();
 	while (len) {
 		writel(IC_CMD, &i2c_regs_p->ic_cmd_data);
 
 		if (readl(&i2c_regs_p->ic_status) & IC_STATUS_RFNE) {
 			*buffer++ = (uchar)readl(&i2c_regs_p->ic_cmd_data);
 			len--;
-			start_time_rx = get_timer(0);
+			start_time_rx = time_ms_now();
 
-		} else if (get_timer(start_time_rx) > I2C_BYTE_TO) {
+		} else if (time_ms_delta_min(start_time_rx, timer_ms_now())
+				> I2C_BYTE_TO) {
 				printf("Timed out. i2c read Failed\n");
 				return 1;
 		}
@@ -292,7 +295,7 @@ int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len)
 int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)
 {
 	int nb = len;
-	unsigned long start_time_tx;
+	u32 start_time_tx;
 
 	if (check_params(addr, alen, buffer, len))
 		return 1;
@@ -300,15 +303,16 @@ int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len)
 	if (i2c_xfer_init(chip, addr))
 		return 1;
 
-	start_time_tx = get_timer(0);
+	start_time_tx = time_ms_now();
 	while (len) {
 		if (readl(&i2c_regs_p->ic_status) & IC_STATUS_TFNF) {
 			writel(*buffer, &i2c_regs_p->ic_cmd_data);
 			buffer++;
 			len--;
-			start_time_tx = get_timer(0);
+			start_time_tx = time_ms_now();
 
-		} else if (get_timer(start_time_tx) > (nb * I2C_BYTE_TO)) {
+		} else if (time_ms_delta_min(start_time_tx, timer_ms_now()
+				> (nb * I2C_BYTE_TO)) {
 				printf("Timed out. i2c write Failed\n");
 				return 1;
 		}
diff --git a/drivers/i2c/u8500_i2c.c b/drivers/i2c/u8500_i2c.c
index ea8a71d..488c1ea 100644
--- a/drivers/i2c/u8500_i2c.c
+++ b/drivers/i2c/u8500_i2c.c
@@ -180,12 +180,12 @@ void i2c_init(int speed, int slaveaddr)
  */
 static int loop_till_bit_clear(void *io_reg, u32 mask, unsigned long timeout)
 {
-	unsigned long timebase = get_timer(0);
+	unsigned long timebase = time_now_ms();
 
 	do {
 		if ((readl(io_reg) & mask) == 0x0UL)
 			return 0;
-	} while (get_timer(timebase) < timeout);
+	} while (time_since_ms(timebase) < timeout);
 
 	debug("loop_till_bit_clear timed out\n");
 	return -1;
@@ -199,12 +199,12 @@ static int loop_till_bit_clear(void *io_reg, u32 mask, unsigned long timeout)
  */
 static int loop_till_bit_set(void *io_reg, u32 mask, unsigned long timeout)
 {
-	unsigned long timebase = get_timer(0);
+	unsigned long timebase = time_now_ms();
 
 	do {
 		if ((readl(io_reg) & mask) != 0x0UL)
 			return 0;
-	} while (get_timer(timebase) < timeout);
+	} while (time_since_ms(timebase) < timeout);
 
 	debug("loop_till_bit_set timed out\n");
 	return -1;
diff --git a/drivers/input/ps2mult.c b/drivers/input/ps2mult.c
index ab74933..e841bd3 100644
--- a/drivers/input/ps2mult.c
+++ b/drivers/input/ps2mult.c
@@ -39,7 +39,7 @@
 #endif
 
 
-static ulong start_time;
+static u32 st;
 static int init_done = 0;
 
 static int received_escape = 0;
@@ -66,7 +66,7 @@ static u_char ps2mult_buf_status [PS2BUF_SIZE];
 #endif
 void ps2mult_early_init (void)
 {
-	start_time = get_timer(0);
+	st = time_ms_now());
 }
 
 static void ps2mult_send_byte(u_char byte, u_char sel)
@@ -365,7 +365,7 @@ int ps2mult_init (void)
 	int kbd_found = 0;
 	int mouse_found = 0;
 
-	while (get_timer(start_time) < CONFIG_PS2MULT_DELAY);
+	while (time_ms_delta_min(ts, time_ms_now()) < CONFIG_PS2MULT_DELAY);
 
 	ps2ser_init();
 
diff --git a/drivers/mmc/omap_hsmmc.c b/drivers/mmc/omap_hsmmc.c
index ef12ecd..edf117b 100644
--- a/drivers/mmc/omap_hsmmc.c
+++ b/drivers/mmc/omap_hsmmc.c
@@ -74,14 +74,14 @@ unsigned char mmc_board_init(hsmmc_t *mmc_base)
 
 void mmc_init_stream(hsmmc_t *mmc_base)
 {
-	ulong start;
+	u32 st;
 
 	writel(readl(&mmc_base->con) | INIT_INITSTREAM, &mmc_base->con);
 
 	writel(MMC_CMD0, &mmc_base->cmd);
-	start = get_timer(0);
+	st = time_ms_now();
 	while (!(readl(&mmc_base->stat) & CC_MASK)) {
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now()) > MAX_RETRY_MS) {
 			printf("%s: timedout waiting for cc!\n", __func__);
 			return;
 		}
@@ -90,9 +90,9 @@ void mmc_init_stream(hsmmc_t *mmc_base)
 		;
 	writel(MMC_CMD0, &mmc_base->cmd)
 		;
-	start = get_timer(0);
+	st = time_ms_now();
 	while (!(readl(&mmc_base->stat) & CC_MASK)) {
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now()) > MAX_RETRY_MS) {
 			printf("%s: timedout waiting for cc2!\n", __func__);
 			return;
 		}
@@ -106,23 +106,23 @@ static int mmc_init_setup(struct mmc *mmc)
 	hsmmc_t *mmc_base = (hsmmc_t *)mmc->priv;
 	unsigned int reg_val;
 	unsigned int dsor;
-	ulong start;
+	u32 st;
 
 	mmc_board_init(mmc_base);
 
 	writel(readl(&mmc_base->sysconfig) | MMC_SOFTRESET,
 		&mmc_base->sysconfig);
-	start = get_timer(0);
+	st = time_ms_now();
 	while ((readl(&mmc_base->sysstatus) & RESETDONE) == 0) {
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now()) > MAX_RETRY_MS) {
 			printf("%s: timedout waiting for cc2!\n", __func__);
 			return TIMEOUT;
 		}
 	}
 	writel(readl(&mmc_base->sysctl) | SOFTRESETALL, &mmc_base->sysctl);
-	start = get_timer(0);
+	st = time_ms_now();
 	while ((readl(&mmc_base->sysctl) & SOFTRESETALL) != 0x0) {
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now()) > MAX_RETRY_MS) {
 			printf("%s: timedout waiting for softresetall!\n",
 				__func__);
 			return TIMEOUT;
@@ -143,9 +143,9 @@ static int mmc_init_setup(struct mmc *mmc)
 		(ICE_STOP | DTO_15THDTO | CEN_DISABLE));
 	mmc_reg_out(&mmc_base->sysctl, ICE_MASK | CLKD_MASK,
 		(dsor << CLKD_OFFSET) | ICE_OSCILLATE);
-	start = get_timer(0);
+	st = time_ms_now();
 	while ((readl(&mmc_base->sysctl) & ICS_MASK) == ICS_NOTREADY) {
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now()) > MAX_RETRY_MS) {
 			printf("%s: timedout waiting for ics!\n", __func__);
 			return TIMEOUT;
 		}
@@ -169,19 +169,19 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
 {
 	hsmmc_t *mmc_base = (hsmmc_t *)mmc->priv;
 	unsigned int flags, mmc_stat;
-	ulong start;
+	u32 st;
 
-	start = get_timer(0);
+	st = time_ms_now();
 	while ((readl(&mmc_base->pstate) & DATI_MASK) == DATI_CMDDIS) {
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now()) > MAX_RETRY_MS) {
 			printf("%s: timedout waiting for cmddis!\n", __func__);
 			return TIMEOUT;
 		}
 	}
 	writel(0xFFFFFFFF, &mmc_base->stat);
-	start = get_timer(0);
+	st = time_ms_now();
 	while (readl(&mmc_base->stat)) {
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now()) > MAX_RETRY_MS) {
 			printf("%s: timedout waiting for stat!\n", __func__);
 			return TIMEOUT;
 		}
@@ -241,10 +241,11 @@ static int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
 	writel(cmd->cmdarg, &mmc_base->arg);
 	writel((cmd->cmdidx << 24) | flags, &mmc_base->cmd);
 
-	start = get_timer(0);
+	st = time_ms_now();
 	do {
 		mmc_stat = readl(&mmc_base->stat);
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now())
+				> MAX_RETRY_MS) {
 			printf("%s : timeout: No status update\n", __func__);
 			return TIMEOUT;
 		}
@@ -285,6 +286,7 @@ static int mmc_read_data(hsmmc_t *mmc_base, char *buf, unsigned int size)
 	unsigned int *output_buf = (unsigned int *)buf;
 	unsigned int mmc_stat;
 	unsigned int count;
+	u32 st;
 
 	/*
 	 * Start Polled Read
@@ -293,10 +295,11 @@ static int mmc_read_data(hsmmc_t *mmc_base, char *buf, unsigned int size)
 	count /= 4;
 
 	while (size) {
-		ulong start = get_timer(0);
+		st = time_ms_now();
 		do {
 			mmc_stat = readl(&mmc_base->stat);
-			if (get_timer(0) - start > MAX_RETRY_MS) {
+			if (time_ms_delta_min(ts, time_ms_now())
+					> MAX_RETRY_MS) {
 				printf("%s: timedout waiting for status!\n",
 						__func__);
 				return TIMEOUT;
@@ -336,6 +339,7 @@ static int mmc_write_data(hsmmc_t *mmc_base, const char *buf, unsigned int size)
 	unsigned int *input_buf = (unsigned int *)buf;
 	unsigned int mmc_stat;
 	unsigned int count;
+	u32 st;
 
 	/*
 	 * Start Polled Read
@@ -344,10 +348,11 @@ static int mmc_write_data(hsmmc_t *mmc_base, const char *buf, unsigned int size)
 	count /= 4;
 
 	while (size) {
-		ulong start = get_timer(0);
+		st = time_ms_now();
 		do {
 			mmc_stat = readl(&mmc_base->stat);
-			if (get_timer(0) - start > MAX_RETRY_MS) {
+			if (time_ms_delta_min(ts, time_ms_now())
+					> MAX_RETRY_MS) {
 				printf("%s: timedout waiting for status!\n",
 						__func__);
 				return TIMEOUT;
@@ -386,7 +391,7 @@ static void mmc_set_ios(struct mmc *mmc)
 {
 	hsmmc_t *mmc_base = (hsmmc_t *)mmc->priv;
 	unsigned int dsor = 0;
-	ulong start;
+	u32 st;
 
 	/* configue bus width */
 	switch (mmc->bus_width) {
@@ -425,9 +430,9 @@ static void mmc_set_ios(struct mmc *mmc)
 	mmc_reg_out(&mmc_base->sysctl, ICE_MASK | CLKD_MASK,
 				(dsor << CLKD_OFFSET) | ICE_OSCILLATE);
 
-	start = get_timer(0);
+	st = time_ms_now();
 	while ((readl(&mmc_base->sysctl) & ICS_MASK) == ICS_NOTREADY) {
-		if (get_timer(0) - start > MAX_RETRY_MS) {
+		if (time_ms_delta_min(ts, time_ms_now()) > MAX_RETRY_MS) {
 			printf("%s: timedout waiting for ics!\n", __func__);
 			return;
 		}
diff --git a/drivers/mtd/spi/atmel.c b/drivers/mtd/spi/atmel.c
index 1ecece0..b2dbf86 100644
--- a/drivers/mtd/spi/atmel.c
+++ b/drivers/mtd/spi/atmel.c
@@ -119,7 +119,7 @@ static int at45_wait_ready(struct spi_flash *flash, unsigned long timeout)
 	u8 cmd = CMD_AT45_READ_STATUS;
 	u8 status;
 
-	timebase = get_timer(0);
+	timebase = time_now_ms();
 
 	ret = spi_xfer(spi, 8, &cmd, NULL, SPI_XFER_BEGIN);
 	if (ret)
@@ -132,7 +132,7 @@ static int at45_wait_ready(struct spi_flash *flash, unsigned long timeout)
 
 		if (status & AT45_STATUS_READY)
 			break;
-	} while (get_timer(timebase) < timeout);
+	} while (time_since_ms(timebase) < timeout);
 
 	/* Deactivate CS */
 	spi_xfer(spi, 0, NULL, NULL, SPI_XFER_END);
diff --git a/drivers/net/4xx_enet.c b/drivers/net/4xx_enet.c
index b1763b1..79ec451 100644
--- a/drivers/net/4xx_enet.c
+++ b/drivers/net/4xx_enet.c
@@ -1564,7 +1564,7 @@ static int ppc_4xx_eth_send (struct eth_device *dev, volatile void *ptr,
 			      int len)
 {
 	struct enet_frame *ef_ptr;
-	ulong time_start, time_now;
+	u32 ts;
 	unsigned long temp_txm0;
 	EMAC_4XX_HW_PST hw_p = dev->priv;
 
@@ -1609,7 +1609,7 @@ static int ppc_4xx_eth_send (struct eth_device *dev, volatile void *ptr,
 	/*-----------------------------------------------------------------------+
 	 * poll unitl the packet is sent and then make sure it is OK
 	 *-----------------------------------------------------------------------*/
-	time_start = get_timer (0);
+	ts = time_ms_now();
 	while (1) {
 		temp_txm0 = in_be32((void *)EMAC0_TMR0 + hw_p->hw_addr);
 		/* loop until either TINT turns on or 3 seconds elapse */
@@ -1618,10 +1618,8 @@ static int ppc_4xx_eth_send (struct eth_device *dev, volatile void *ptr,
 			 * If there is an error, an interrupt should
 			 * happen when we return
 			 */
-			time_now = get_timer (0);
-			if ((time_now - time_start) > 3000) {
+			if (time_ms_delta_min(ts, time_ms_now()) > 3000)
 				return (-1);
-			}
 		} else {
 			return (len);
 		}
diff --git a/drivers/net/bcm570x.c b/drivers/net/bcm570x.c
index c250d44..5440e57 100644
--- a/drivers/net/bcm570x.c
+++ b/drivers/net/bcm570x.c
@@ -1204,7 +1204,7 @@ LM_STATUS MM_FreeRxBuffer (PLM_DEVICE_BLOCK pDevice, PLM_PACKET pPacket)
 
 unsigned long MM_AnGetCurrentTime_us (PAN_STATE_INFO pAnInfo)
 {
-	return get_timer (0);
+	return time_ms_now();
 }
 
 /*
diff --git a/drivers/net/cs8900.c b/drivers/net/cs8900.c
index 9424fb2..8e434d9 100644
--- a/drivers/net/cs8900.c
+++ b/drivers/net/cs8900.c
@@ -98,7 +98,7 @@ static void put_reg(struct eth_device *dev, int regno, u16 val)
 
 static void cs8900_reset(struct eth_device *dev)
 {
-	int tmo;
+	u32 st;
 	u16 us;
 
 	/* reset NIC */
@@ -108,9 +108,10 @@ static void cs8900_reset(struct eth_device *dev)
 	udelay(200000);
 	/* Wait until the chip is reset */
 
-	tmo = get_timer(0) + 1 * CONFIG_SYS_HZ;
+	st = time_ms_now();
 	while ((((us = get_reg_init_bus(dev, PP_SelfSTAT)) &
-		PP_SelfSTAT_InitD) == 0) && tmo < get_timer(0))
+		PP_SelfSTAT_InitD) == 0) &&
+		(time_ms_delta_min(st, time_ms_now()) < 1000))
 		/*NOP*/;
 }
 
@@ -220,7 +221,7 @@ static int cs8900_send(struct eth_device *dev,
 			volatile void *packet, int length)
 {
 	volatile u16 *addr;
-	int tmo;
+	u32 st;
 	u16 s;
 	struct cs8900_priv *priv = (struct cs8900_priv *)(dev->priv);
 
@@ -233,8 +234,8 @@ retry:
 	if ((get_reg(dev, PP_BusSTAT) & PP_BusSTAT_TxRDY) == 0) {
 		/* Oops... this should not happen! */
 		debug("cs: unable to send packet; retrying...\n");
-		for (tmo = get_timer(0) + 5 * CONFIG_SYS_HZ;
-			get_timer(0) < tmo;)
+		for (st = time_ms_now();
+				time_ms_delta_min(st, time_ms_now()) < 5000;)
 			/*NOP*/;
 		cs8900_reset(dev);
 		cs8900_reginit(dev);
@@ -247,9 +248,9 @@ retry:
 		REG_WRITE(*addr++, &priv->regs->rtdata);
 
 	/* wait for transfer to succeed */
-	tmo = get_timer(0) + 5 * CONFIG_SYS_HZ;
+	st = time_ms_now();
 	while ((s = get_reg(dev, PP_TER) & ~0x1F) == 0) {
-		if (get_timer(0) >= tmo)
+		if (time_ms_delta_min(st, time_ms_now()) >= 5000)
 			break;
 	}
 
diff --git a/drivers/net/dm9000x.c b/drivers/net/dm9000x.c
index b5c5573..8fb15cf 100644
--- a/drivers/net/dm9000x.c
+++ b/drivers/net/dm9000x.c
@@ -401,7 +401,7 @@ static int dm9000_init(struct eth_device *dev, bd_t *bd)
 static int dm9000_send(struct eth_device *netdev, volatile void *packet,
 		     int length)
 {
-	int tmo;
+	u32 st;
 	struct board_info *db = &dm9000_info;
 
 	DM9000_DMP_PACKET(__func__ , packet, length);
@@ -422,10 +422,10 @@ static int dm9000_send(struct eth_device *netdev, volatile void *packet,
 	DM9000_iow(DM9000_TCR, TCR_TXREQ); /* Cleared after TX complete */
 
 	/* wait for end of transmission */
-	tmo = get_timer(0) + 5 * CONFIG_SYS_HZ;
+	st = time_ms_now();
 	while ( !(DM9000_ior(DM9000_NSR) & (NSR_TX1END | NSR_TX2END)) ||
 		!(DM9000_ior(DM9000_ISR) & IMR_PTM) ) {
-		if (get_timer(0) >= tmo) {
+		if (time_ms_delta_min(st, time_ms_now()) >= 5000) {
 			printf("transmission timeout\n");
 			break;
 		}
diff --git a/drivers/net/ethoc.c b/drivers/net/ethoc.c
index 34cc47f..003fdc0 100644
--- a/drivers/net/ethoc.c
+++ b/drivers/net/ethoc.c
@@ -420,7 +420,7 @@ static int ethoc_send(struct eth_device *dev, volatile void *packet, int length)
 	struct ethoc_bd bd;
 	u32 entry;
 	u32 pending;
-	int tmo;
+	u32 st;
 
 	entry = priv->cur_tx % priv->num_tx;
 	ethoc_read_bd(dev, entry, &bd);
@@ -440,7 +440,7 @@ static int ethoc_send(struct eth_device *dev, volatile void *packet, int length)
 	ethoc_write_bd(dev, entry, &bd);
 
 	/* wait for transfer to succeed */
-	tmo = get_timer(0) + 5 * CONFIG_SYS_HZ;
+	st = time_ms_now();
 	while (1) {
 		pending = ethoc_read(dev, INT_SOURCE);
 		ethoc_ack_irq(dev, pending & ~INT_MASK_RX);
@@ -451,7 +451,7 @@ static int ethoc_send(struct eth_device *dev, volatile void *packet, int length)
 			ethoc_tx(dev);
 			break;
 		}
-		if (get_timer(0) >= tmo) {
+		if (time_ms_delta_min(st, time_ms_now()) >= 5000) {
 			debug("%s(): timed out\n", __func__);
 			return -1;
 		}
diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c
index ab90afa..076e0dc 100644
--- a/drivers/net/fec_mxc.c
+++ b/drivers/net/fec_mxc.c
@@ -70,7 +70,7 @@ static int fec_miiphy_read(const char *dev, uint8_t phyAddr, uint8_t regAddr,
 
 	uint32_t reg;		/* convenient holder for the PHY register */
 	uint32_t phy;		/* convenient holder for the PHY */
-	uint32_t start;
+	u32 st;
 
 	/*
 	 * reading from any PHY's register is done by properly
@@ -86,9 +86,9 @@ static int fec_miiphy_read(const char *dev, uint8_t phyAddr, uint8_t regAddr,
 	/*
 	 * wait for the related interrupt
 	 */
-	start = get_timer(0);
+	start = time_ms_now();
 	while (!(readl(&fec->eth->ievent) & FEC_IEVENT_MII)) {
-		if (get_timer(start) > (CONFIG_SYS_HZ / 1000)) {
+		if (time_ms_delta_min(st, time_ms_now()) > 1) {
 			printf("Read MDIO failed...\n");
 			return -1;
 		}
@@ -127,7 +127,7 @@ static int fec_miiphy_write(const char *dev, uint8_t phyAddr, uint8_t regAddr,
 
 	uint32_t reg;		/* convenient holder for the PHY register */
 	uint32_t phy;		/* convenient holder for the PHY */
-	uint32_t start;
+	u32 st;
 
 	reg = regAddr << FEC_MII_DATA_RA_SHIFT;
 	phy = phyAddr << FEC_MII_DATA_PA_SHIFT;
@@ -138,9 +138,9 @@ static int fec_miiphy_write(const char *dev, uint8_t phyAddr, uint8_t regAddr,
 	/*
 	 * wait for the MII interrupt
 	 */
-	start = get_timer(0);
+	st = time_ms_now();
 	while (!(readl(&fec->eth->ievent) & FEC_IEVENT_MII)) {
-		if (get_timer(start) > (CONFIG_SYS_HZ / 1000)) {
+		if (time_ms_delta_min(st, time_ms_now()) > 1) {
 			printf("Write MDIO failed...\n");
 			return -1;
 		}
@@ -183,15 +183,15 @@ static int miiphy_restart_aneg(struct eth_device *dev)
 
 static int miiphy_wait_aneg(struct eth_device *dev)
 {
-	uint32_t start;
+	u32 st;
 	uint16_t status;
 
 	/*
 	 * Wait for AN completion
 	 */
-	start = get_timer(0);
+	st = time_ms_now();
 	do {
-		if (get_timer(start) > (CONFIG_SYS_HZ * 5)) {
+		if (time_ms_delta_min(st, time_ms_now()) > 5000) {
 			printf("%s: Autonegotiation timeout\n", dev->name);
 			return -1;
 		}
diff --git a/drivers/net/ftgmac100.c b/drivers/net/ftgmac100.c
index dc7a80e..5f24962 100644
--- a/drivers/net/ftgmac100.c
+++ b/drivers/net/ftgmac100.c
@@ -490,7 +490,7 @@ ftgmac100_send(struct eth_device *dev, void *packet, int length)
 	struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
 	struct ftgmac100_data *priv = dev->priv;
 	struct ftgmac100_txdes *curr_des = &priv->txdes[priv->tx_index];
-	int start;
+	int st;
 
 	if (curr_des->txdes0 & FTGMAC100_TXDES0_TXDMA_OWN) {
 		debug("%s(): no TX descriptor available\n", __func__);
@@ -515,9 +515,9 @@ ftgmac100_send(struct eth_device *dev, void *packet, int length)
 	writel(1, &ftgmac100->txpd);
 
 	/* wait for transfer to succeed */
-	start = get_timer(0);
+	st = time_ms_now();
 	while (curr_des->txdes0 & FTGMAC100_TXDES0_TXDMA_OWN) {
-		if (get_timer(0) >= 5) {
+		if (time_ms_delta_min(st, time_ms_now()) >= 5) {
 			debug("%s(): timed out\n", __func__);
 			return -1;
 		}
diff --git a/drivers/net/ftmac100.c b/drivers/net/ftmac100.c
index 94dc6d9..5e057a1 100644
--- a/drivers/net/ftmac100.c
+++ b/drivers/net/ftmac100.c
@@ -196,7 +196,7 @@ ftmac100_send (struct eth_device *dev, volatile void *packet, int length)
 	struct ftmac100 *ftmac100 = (struct ftmac100 *)dev->iobase;
 	struct ftmac100_data *priv = dev->priv;
 	struct ftmac100_txdes *curr_des = priv->txdes;
-	ulong start;
+	ulong st;
 
 	if (curr_des->txdes0 & FTMAC100_TXDES0_TXDMA_OWN) {
 		debug ("%s(): no TX descriptor available\n", __func__);
@@ -224,9 +224,9 @@ ftmac100_send (struct eth_device *dev, volatile void *packet, int length)
 
 	/* wait for transfer to succeed */
 
-	start = get_timer(0);
+	st = time_ms_now();
 	while (curr_des->txdes0 & FTMAC100_TXDES0_TXDMA_OWN) {
-		if (get_timer(start) >= 5) {
+		if (time_ms_delta_min(st, time_ms_now()) >= 5) {
 			debug ("%s(): timed out\n", __func__);
 			return -1;
 		}
diff --git a/drivers/net/greth.c b/drivers/net/greth.c
index 6c32226..9653f64 100644
--- a/drivers/net/greth.c
+++ b/drivers/net/greth.c
@@ -230,7 +230,7 @@ int greth_init_phy(greth_priv * dev, bd_t * bis)
 {
 	greth_regs *regs = dev->regs;
 	int tmp, tmp1, tmp2, i;
-	unsigned int start, timeout;
+	unsigned int st;
 	int phyaddr = GRETH_PHY_ADR_DEFAULT;
 
 #ifndef CONFIG_SYS_GRLIB_GRETH_PHYADDR
@@ -252,18 +252,16 @@ int greth_init_phy(greth_priv * dev, bd_t * bis)
 
 	debug("GRETH PHY ADDRESS: %d\n", phyaddr);
 
-	/* X msecs to ticks */
-	timeout = usec2ticks(GRETH_PHY_TIMEOUT_MS * 1000);
-
 	/* Get system timer0 current value
 	 * Total timeout is 5s
 	 */
-	start = get_timer(0);
+	st = time_ms_now();
 
 	/* get phy control register default values */
 
 	while ((tmp = read_mii(phyaddr, 0, regs)) & 0x8000) {
-		if (get_timer(start) > timeout) {
+		if (time_ms_delta_min(st, time_ms_now())
+				> GRETH_PHY_TIMEOUT_MS) {
 			debug("greth_init_phy: PHY read 1 failed\n");
 			return 1;	/* Fail */
 		}
@@ -273,7 +271,8 @@ int greth_init_phy(greth_priv * dev, bd_t * bis)
 	write_mii(phyaddr, 0, 0x8000 | tmp, regs);
 
 	while (((tmp = read_mii(phyaddr, 0, regs))) & 0x8000) {
-		if (get_timer(start) > timeout) {
+		if (time_ms_delta_min(st, time_ms_now())
+				> GRETH_PHY_TIMEOUT_MS) {
 			debug("greth_init_phy: PHY read 2 failed\n");
 			return 1;	/* Fail */
 		}
@@ -293,7 +292,8 @@ int greth_init_phy(greth_priv * dev, bd_t * bis)
 		dev->auto_neg = 1;
 		i = 0;
 		while (!(((tmp = read_mii(phyaddr, 1, regs)) >> 5) & 1)) {
-			if (get_timer(start) > timeout) {
+			if (time_ms_delta_min(st, time_ms_now())
+					> GRETH_PHY_TIMEOUT_MS) {
 				printf("Auto negotiation timed out. "
 				       "Selecting default config\n");
 				tmp = read_mii(phyaddr, 0, regs);
diff --git a/drivers/net/lan91c96.c b/drivers/net/lan91c96.c
index 883f3a7..3aa825a 100644
--- a/drivers/net/lan91c96.c
+++ b/drivers/net/lan91c96.c
@@ -175,14 +175,15 @@ static void print_packet (byte *, int);
 
 static int poll4int (struct eth_device *dev, byte mask, int timeout)
 {
-	int tmo = get_timer (0) + timeout * CONFIG_SYS_HZ;
+	int ts = time_ms_now();
 	int is_timeout = 0;
 	word old_bank = SMC_inw(dev, LAN91C96_BANK_SELECT);
 
 	PRINTK2 ("Polling...\n");
 	SMC_SELECT_BANK(dev, 2);
 	while ((SMC_inw(dev, LAN91C96_INT_STATS) & mask) == 0) {
-		if (get_timer (0) >= tmo) {
+		if (time_ms_delta_min(start, time_ms_now())
+				>= timeout * 1000) {
 			is_timeout = 1;
 			break;
 		}
diff --git a/drivers/net/ne2000_base.c b/drivers/net/ne2000_base.c
index f93f932..288da5c 100644
--- a/drivers/net/ne2000_base.c
+++ b/drivers/net/ne2000_base.c
@@ -733,21 +733,21 @@ int eth_rx() {
 }
 
 int eth_send(volatile void *packet, int length) {
-	int tmo;
+	int ts;
 
 	PRINTK("### eth_send\n");
 
 	pkey = -1;
 
 	dp83902a_send((u8 *) packet, length, 666);
-	tmo = get_timer (0) + TOUT * CONFIG_SYS_HZ;
+	ts = time_ms_now();
 	while(1) {
 		dp83902a_poll();
 		if (pkey != -1) {
 			PRINTK("Packet sucesfully sent\n");
 			return 0;
 		}
-		if (get_timer (0) >= tmo) {
+		if (time_ms_delta_min(ts, time_ms_now()) >= TOUT * 1000) {
 			printf("transmission error (timoeut)\n");
 			return 0;
 		}
diff --git a/drivers/net/netarm_eth.c b/drivers/net/netarm_eth.c
index f54817e..0b4b959 100644
--- a/drivers/net/netarm_eth.c
+++ b/drivers/net/netarm_eth.c
@@ -83,8 +83,9 @@ static int na_mii_poll_busy (void)
 {
 	ulong start;
 	/* arm simple, non interrupt dependent timer */
-	start = get_timer(0));
-	while (get_timer(start) < NA_MII_POLL_BUSY_DELAY) {
+	start = time_ms_now();
+	while (time_ms_delta_min(start, time_ms_now())
+			< NA_MII_POLL_BUSY_DELAY) {
 		if (!(GET_EADDR (NETARM_ETH_MII_IND) & NETARM_ETH_MIII_BUSY)) {
 			return 1;
 		}
@@ -172,13 +173,14 @@ static int reset_eth (void)
 
 	/* reset the phy */
 	na_mii_write (MII_PHY_CONTROL, 0x8000);
-	start = get_timer(0);
-	while (get_timer(start) < NA_MII_NEGOTIATE_DELAY) {
+	start = time_ms_now();
+	while (time_ms_delta_min(start, time_ms_now())
+			< NA_MII_NEGOTIATE_DELAY) {
 		if ((na_mii_read (MII_PHY_STATUS) & 0x8000) == 0) {
 			break;
 		}
 	}
-	if (get_timer(start) >= NA_MII_NEGOTIATE_DELAY)
+	if (time_ms_delta_min(start, time_ms_now()) >= NA_MII_NEGOTIATE_DELAY)
 		printf ("phy reset timeout\n");
 
 	/* set the PCS reg */
diff --git a/drivers/net/ns7520_eth.c b/drivers/net/ns7520_eth.c
index de82b04..687e42a 100644
--- a/drivers/net/ns7520_eth.c
+++ b/drivers/net/ns7520_eth.c
@@ -449,8 +449,9 @@ static void ns7520_link_auto_negotiate(void)
 
 	/* wait for completion */
 
-	ulStartJiffies = get_timer(0);
-	while (get_timer(0) < ulStartJiffies + NS7520_MII_NEG_DELAY) {
+	ulStartJiffies = time_ms_now();
+	while (time_ms_delta_min(ulStartJiffies, time_ms_now())
+			< NS7520_MII_NEG_DELAY) {
 		uiStatus = ns7520_mii_read(MII_BMSR);
 		if ((uiStatus &
 		     (BMSR_ANEGCOMPLETE | BMSR_LSTATUS)) ==
diff --git a/drivers/net/ns9750_eth.c b/drivers/net/ns9750_eth.c
index 9899563..b800048 100644
--- a/drivers/net/ns9750_eth.c
+++ b/drivers/net/ns9750_eth.c
@@ -291,7 +291,7 @@ int eth_send (volatile void *pPacket, int nLen)
 	*get_eth_reg_addr (NS9750_ETH_EGCR2) &= ~NS9750_ETH_EGCR2_TCLER;
 	*get_eth_reg_addr (NS9750_ETH_EGCR2) |= NS9750_ETH_EGCR2_TCLER;
 
-	ulTimeout = get_timer (0);
+	ts = time_ms_now();
 
 	DEBUG_ARGS0 (DEBUG_TX | DEBUG_MINOR,
 		     "Waiting for transmission to finish\n");
@@ -299,7 +299,7 @@ int eth_send (volatile void *pPacket, int nLen)
 	       (*get_eth_reg_addr (NS9750_ETH_EINTR) &
 		(NS9750_ETH_EINTR_TXDONE | NS9750_ETH_EINTR_TXERR))) {
 		/* do nothing, wait for completion */
-		if (get_timer (0) - ulTimeout > TX_TIMEOUT) {
+		if (time_ms_delta_min(ts, time_ms_now()) > TX_TIMEOUT) {
 			DEBUG_ARGS0 (DEBUG_TX, "Transmit Timed out\n");
 			return -1;
 		}
diff --git a/drivers/net/rtl8139.c b/drivers/net/rtl8139.c
index c2779db..eb503a7 100644
--- a/drivers/net/rtl8139.c
+++ b/drivers/net/rtl8139.c
@@ -98,7 +98,6 @@
 #undef DEBUG_TX
 #undef DEBUG_RX
 
-#define currticks()	get_timer(0)
 #define bus_to_phys(a)	pci_mem_to_phys((pci_dev_t)dev->priv, a)
 #define phys_to_bus(a)	pci_phys_to_mem((pci_dev_t)dev->priv, a)
 
@@ -425,6 +424,7 @@ static int rtl_transmit(struct eth_device *dev, volatile void *packet, int lengt
 	memcpy((char *)tx_buffer, (char *)packet, (int)length);
 
 #ifdef	DEBUG_TX
+	u32 ts = time_now_ms();
 	printf("sending %d bytes\n", len);
 #endif
 
@@ -454,8 +454,8 @@ static int rtl_transmit(struct eth_device *dev, volatile void *packet, int lengt
 	if (status & TxOK) {
 		cur_tx = (cur_tx + 1) % NUM_TX_DESC;
 #ifdef	DEBUG_TX
-		printf("tx done (%d ticks), status %hX txstatus %X\n",
-			to-currticks(), status, txstatus);
+		printf("tx done (%d ms), status %hX txstatus %X\n",
+			time_max_since_ms(ts), status, txstatus);
 #endif
 		return length;
 	} else {
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index b81dcad..802a95a 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -68,9 +68,6 @@
 
 static u32 ioaddr;
 
-/* Condensed operations for readability. */
-#define currticks()	get_timer(0)
-
 /* media options */
 #define MAX_UNITS 8
 static int media[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1 };
@@ -473,9 +470,10 @@ static int rtl_send(struct eth_device *dev, volatile void *packet, int length)
 	int entry = tpc->cur_tx % NUM_TX_DESC;
 	u32 len = length;
 	int ret;
+	u32 ts;
 
 #ifdef DEBUG_RTL8169_TX
-	int stime = currticks();
+	int stime = time_now_ms();
 	printf ("%s\n", __FUNCTION__);
 	printf("sending %d bytes\n", len);
 #endif
@@ -504,17 +502,17 @@ static int rtl_send(struct eth_device *dev, volatile void *packet, int length)
 	RTL_W8(TxPoll, 0x40);	/* set polling bit */
 
 	tpc->cur_tx++;
-	to = currticks() + TX_TIMEOUT;
+	ts = time_now_ms();
 	do {
 		flush_cache((unsigned long)&tpc->TxDescArray[entry],
 				sizeof(struct TxDesc));
 	} while ((le32_to_cpu(tpc->TxDescArray[entry].status) & OWNbit)
-				&& (currticks() < to));	/* wait */
+			&& (time_since_ms(ts) < TX_TIMEOUT));	/* wait */
 
-	if (currticks() >= to) {
+	if (time_since_ms(ts) >= TX_TIMEOUT) {
 #ifdef DEBUG_RTL8169_TX
 		puts ("tx timeout/error\n");
-		printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+		printf ("%s elapsed time : %d\n", __FUNCTION__, time_max_since_ms(stime));
 #endif
 		ret = 0;
 	} else {
@@ -556,7 +554,7 @@ static void rtl8169_hw_start(struct eth_device *dev)
 	u32 i;
 
 #ifdef DEBUG_RTL8169
-	int stime = currticks();
+	int stime = time_now_ms();
 	printf ("%s\n", __FUNCTION__);
 #endif
 
@@ -616,7 +614,7 @@ static void rtl8169_hw_start(struct eth_device *dev)
 	RTL_W16(MultiIntr, RTL_R16(MultiIntr) & 0xF000);
 
 #ifdef DEBUG_RTL8169
-	printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+	printf ("%s elapsed time : %d\n", __FUNCTION__, time_max_since_ms(stime));
 #endif
 }
 
@@ -625,7 +623,7 @@ static void rtl8169_init_ring(struct eth_device *dev)
 	int i;
 
 #ifdef DEBUG_RTL8169
-	int stime = currticks();
+	int stime = time_now_ms();
 	printf ("%s\n", __FUNCTION__);
 #endif
 
@@ -654,7 +652,7 @@ static void rtl8169_init_ring(struct eth_device *dev)
 	}
 
 #ifdef DEBUG_RTL8169
-	printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+	printf ("%s elapsed time : %d\n", __FUNCTION__, time_max_sine_ms(stime));
 #endif
 }
 
@@ -666,7 +664,7 @@ static int rtl_reset(struct eth_device *dev, bd_t *bis)
 	int i;
 
 #ifdef DEBUG_RTL8169
-	int stime = currticks();
+	int stime = time_now_ms();
 	printf ("%s\n", __FUNCTION__);
 #endif
 
@@ -695,7 +693,7 @@ static int rtl_reset(struct eth_device *dev, bd_t *bis)
 	txb[5] = dev->enetaddr[5];
 
 #ifdef DEBUG_RTL8169
-	printf ("%s elapsed time : %d\n", __FUNCTION__, currticks()-stime);
+	printf ("%s elapsed time : %d\n", __FUNCTION__, time_max_since_ms(stime));
 #endif
 	return 0;
 }
diff --git a/drivers/net/smc91111.c b/drivers/net/smc91111.c
index ba9c67e..7ae0580 100644
--- a/drivers/net/smc91111.c
+++ b/drivers/net/smc91111.c
@@ -251,14 +251,14 @@ static void print_packet( byte *, int );
 
 static int poll4int (struct eth_device *dev, byte mask, int timeout)
 {
-	int tmo = get_timer (0) + timeout * CONFIG_SYS_HZ;
+	int ts = time_ms_now();
 	int is_timeout = 0;
 	word old_bank = SMC_inw (dev, BSR_REG);
 
 	PRINTK2 ("Polling...\n");
 	SMC_SELECT_BANK (dev, 2);
 	while ((SMC_inw (dev, SMC91111_INT_REG) & mask) == 0) {
-		if (get_timer (0) >= tmo) {
+		if (time_ms_delta_min(ts, time_ms_now()) >= (timeout * 1000)) {
 			is_timeout = 1;
 			break;
 		}
diff --git a/drivers/serial/serial_clps7111.c b/drivers/serial/serial_clps7111.c
index a6aecad..aec70d5 100644
--- a/drivers/serial/serial_clps7111.c
+++ b/drivers/serial/serial_clps7111.c
@@ -76,15 +76,15 @@ int serial_init (void)
  */
 void serial_putc (const char c)
 {
-	int tmo;
+	u32 ts;
 
 	/* If \n, also do \r */
 	if (c == '\n')
 		serial_putc ('\r');
 
-	tmo = get_timer (0) + 1 * CONFIG_SYS_HZ;
+	ts = time_now_ms();
 	while (IO_SYSFLG1 & SYSFLG1_UTXFF)
-		if (get_timer (0) > tmo)
+		if (time_since_ms(ts) > 1000)
 			break;
 
 	IO_UARTDR1 = c;
diff --git a/drivers/serial/serial_netarm.c b/drivers/serial/serial_netarm.c
index d04790d..78f3c90 100644
--- a/drivers/serial/serial_netarm.c
+++ b/drivers/serial/serial_netarm.c
@@ -43,9 +43,9 @@ DECLARE_GLOBAL_DATA_PTR;
 /* wait until transmitter is ready for another character */
 #define TXWAITRDY(registers)							\
 {										\
-	ulong tmo = get_timer(0) + 1 * CONFIG_SYS_HZ;					\
+	u32 st = time_now_ms();						\
 	while (((registers)->status_a & NETARM_SER_STATA_TX_RDY) == 0 )	{	\
-		if (get_timer(0) > tmo)						\
+		if (time_since_ms(st) > 1000)		\
 			break;							\
 	}									\
 }
diff --git a/drivers/spi/atmel_dataflash_spi.c b/drivers/spi/atmel_dataflash_spi.c
index e7d3ff0..d77c5fe 100644
--- a/drivers/spi/atmel_dataflash_spi.c
+++ b/drivers/spi/atmel_dataflash_spi.c
@@ -141,7 +141,6 @@ unsigned int AT91F_SpiWrite1(AT91PS_DataflashDesc pDesc);
 
 unsigned int AT91F_SpiWrite(AT91PS_DataflashDesc pDesc)
 {
-	unsigned int timeout;
 	unsigned int timebase;
 
 	pDesc->state = BUSY;
@@ -174,19 +173,18 @@ unsigned int AT91F_SpiWrite(AT91PS_DataflashDesc pDesc)
 	}
 
 	/* arm simple, non interrupt dependent timer */
-	timebase = get_timer(0);
-	timeout = 0;
+	timebase = time_now_ms();
 
 	writel(AT91_SPI_TXTEN + AT91_SPI_RXTEN,
 		ATMEL_BASE_SPI0 + AT91_SPI_PTCR);
 	while (!(readl(ATMEL_BASE_SPI0 + AT91_SPI_SR) & AT91_SPI_RXBUFF) &&
-		((timeout = get_timer(timebase)) < CONFIG_SYS_SPI_WRITE_TOUT))
+		(time_since_ms(timebase) < CONFIG_SYS_SPI_WRITE_TOUT))
 		;
 	writel(AT91_SPI_TXTDIS + AT91_SPI_RXTDIS,
 		ATMEL_BASE_SPI0 + AT91_SPI_PTCR);
 	pDesc->state = IDLE;
 
-	if (timeout >= CONFIG_SYS_SPI_WRITE_TOUT) {
+	if (time_since_ms(timebase) >= CONFIG_SYS_SPI_WRITE_TOUT) {
 		printf("Error Timeout\n\r");
 		return DATAFLASH_ERROR;
 	}
diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c
index 9fb0e80..52396d0 100644
--- a/drivers/usb/gadget/ether.c
+++ b/drivers/usb/gadget/ether.c
@@ -1922,8 +1922,8 @@ static void eth_start(struct eth_dev *dev, gfp_t gfp_flags)
 static int eth_stop(struct eth_dev *dev)
 {
 #ifdef RNDIS_COMPLETE_SIGNAL_DISCONNECT
-	unsigned long ts;
-	unsigned long timeout = CONFIG_SYS_HZ; /* 1 sec to stop RNDIS */
+	u32 ts;
+	u32 timeout = CONFIG_SYS_HZ; /* 1 sec to stop RNDIS */
 #endif
 
 	if (rndis_active(dev)) {
@@ -1932,8 +1932,8 @@ static int eth_stop(struct eth_dev *dev)
 
 #ifdef RNDIS_COMPLETE_SIGNAL_DISCONNECT
 		/* Wait until host receives OID_GEN_MEDIA_CONNECT_STATUS */
-		ts = get_timer(0);
-		while (get_timer(ts) < timeout)
+		ts = time_now_ms();
+		while (time_since_ms(start) < timeout)
 			usb_gadget_handle_interrupts();
 #endif
 
@@ -2332,8 +2332,8 @@ static int usb_eth_init(struct eth_device *netdev, bd_t *bd)
 {
 	struct eth_dev *dev = &l_ethdev;
 	struct usb_gadget *gadget;
-	unsigned long ts;
-	unsigned long timeout = USB_CONNECT_TIMEOUT;
+	u32 ts;
+	u32 timeout = USB_CONNECT_TIMEOUT;
 
 	if (!netdev) {
 		error("received NULL ptr");
@@ -2379,10 +2379,11 @@ static int usb_eth_init(struct eth_device *netdev, bd_t *bd)
 	if (getenv("cdc_connect_timeout"))
 		timeout = simple_strtoul(getenv("cdc_connect_timeout"),
 						NULL, 10) * CONFIG_SYS_HZ;
-	ts = get_timer(0);
+	ts = time_now_ms();
 	while (!l_ethdev.network_started) {
 		/* Handle control-c and timeouts */
-		if (ctrlc() || (get_timer(ts) > timeout)) {
+		if (ctrlc() ||
+		    (time_since_ms(ts) > timeout)) {
 			error("The remote end did not respond in time.");
 			goto fail;
 		}
@@ -2403,8 +2404,8 @@ static int usb_eth_send(struct eth_device *netdev,
 	void			*rndis_pkt = NULL;
 	struct eth_dev		*dev = &l_ethdev;
 	struct usb_request	*req = dev->tx_req;
-	unsigned long ts;
-	unsigned long timeout = USB_CONNECT_TIMEOUT;
+	u32 ts;
+	u32 timeout = USB_CONNECT_TIMEOUT;
 
 	debug("%s:...\n", __func__);
 
@@ -2443,7 +2444,7 @@ static int usb_eth_send(struct eth_device *netdev,
 			? ((dev->tx_qlen % qmult) != 0) : 0;
 #endif
 	dev->tx_qlen = 1;
-	ts = get_timer(0);
+	ts = time_now_ms();
 	packet_sent = 0;
 
 	retval = usb_ep_queue(dev->in_ep, req, GFP_ATOMIC);
@@ -2451,7 +2452,7 @@ static int usb_eth_send(struct eth_device *netdev,
 	if (!retval)
 		debug("%s: packet queued\n", __func__);
 	while (!packet_sent) {
-		if (get_timer(ts) > timeout) {
+		if (time_since_ms(ts) > timeout) {
 			printf("timeout sending packets to usb ethernet\n");
 			return -1;
 		}
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 70c02c9..52751fa 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -314,12 +314,12 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
 	struct QH *qh;
 	struct qTD *td;
 	volatile struct qTD *vtd;
-	unsigned long ts;
+	u32 ts;
 	uint32_t *tdp;
 	uint32_t endpt, token, usbsts;
 	uint32_t c, toggle;
 	uint32_t cmd;
-	int timeout;
+	u32 timeout;
 	int ret = 0;
 
 	debug("dev=%p, pipe=%lx, buffer=%p, length=%d, req=%p\n", dev, pipe,
@@ -446,7 +446,7 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
 	}
 
 	/* Wait for TDs to be processed. */
-	ts = get_timer(0);
+	ts = time_now_ms();
 	vtd = td;
 	timeout = USB_TIMEOUT_MS(pipe);
 	do {
@@ -456,7 +456,7 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
 		if (!(token & 0x80))
 			break;
 		WATCHDOG_RESET();
-	} while (get_timer(ts) < timeout);
+	} while (time_since_ms(ts) < timeout);
 
 	/* Check that the TD processing happened */
 	if (token & 0x80) {
diff --git a/drivers/usb/host/sl811-hcd.c b/drivers/usb/host/sl811-hcd.c
index 82a8b36..9e7dad7 100644
--- a/drivers/usb/host/sl811-hcd.c
+++ b/drivers/usb/host/sl811-hcd.c
@@ -234,7 +234,8 @@ static int sl811_send_packet(struct usb_device *dev, unsigned long pipe, __u8 *b
 {
 	__u8 ctrl = SL811_USB_CTRL_ARM | SL811_USB_CTRL_ENABLE;
 	__u16 status = 0;
-	int err = 0, time_start = get_timer(0);
+	int err = 0;
+	u32 ts = time_now_ms();
 	int need_preamble = !(rh_status.wPortStatus & USB_PORT_STAT_LOW_SPEED) &&
 		usb_pipeslow(pipe);
 
@@ -264,7 +265,7 @@ static int sl811_send_packet(struct usb_device *dev, unsigned long pipe, __u8 *b
 
 		sl811_write(SL811_CTRL_A, ctrl);
 		while (!(sl811_read(SL811_INTRSTS) & SL811_INTR_DONE_A)) {
-			if (5*CONFIG_SYS_HZ < get_timer(time_start)) {
+			if (time_since_ms(ts) >= 5000) {
 				printf("USB transmit timed out\n");
 				return -USB_ST_CRC_ERR;
 			}
-- 
1.7.5.2.317.g391b14

  parent reply	other threads:[~2011-06-28 11:41 UTC|newest]

Thread overview: 110+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-28 11:40 [U-Boot] [PATCH v1 (WIP) 00/16] [Timer]API Rewrite Graeme Russ
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 01/16] [Timer]Fix misuse of ARM *timer_masked() functions outside arch/arm Graeme Russ
2011-06-28 12:35   ` Andreas Bießmann
2011-07-11 21:57   ` Wolfgang Denk
2011-07-14 17:01     ` Albert ARIBAUD
2011-07-14 19:50       ` Wolfgang Denk
2011-07-14 23:24         ` Graeme Russ
2011-07-15  6:31           ` Wolfgang Denk
2011-07-15  7:00             ` Graeme Russ
2011-07-15 12:16   ` [U-Boot] [PATCH v2 1/7]Timer: Fix " Graeme Russ
2011-07-16  8:40     ` Albert ARIBAUD
2011-07-16  8:59       ` Graeme Russ
2011-07-16  9:12         ` Albert ARIBAUD
2011-07-16  9:31     ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-16  9:58       ` Albert ARIBAUD
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 02/16] [Timer]Remove calls to set_timer outside arch/ Graeme Russ
2011-07-11 21:58   ` Wolfgang Denk
2011-07-15 12:17   ` [U-Boot] [PATCH v2 2/7]Timer: Remove " Graeme Russ
2011-07-16  9:33     ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:52       ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 03/16] [Timer]Remove calls to set_timer in arch/ Graeme Russ
2011-07-11 21:59   ` Wolfgang Denk
2011-07-15 12:18   ` [U-Boot] [PATCH v2 3/7]Timer: Remove set_timer completely Graeme Russ
2011-07-16  9:34     ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:52       ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 04/16] [Timer]Allow reset_timer() only for Nios2 Graeme Russ
2011-07-11 22:01   ` Wolfgang Denk
2011-07-15 12:18   ` [U-Boot] [PATCH v2 4/7]Timer: Allow reset_timer() only for systems with low resolution timers Graeme Russ
2011-07-16  9:35     ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:53       ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 05/16] [Timer]Remove reset_timer() for non-Nios2 arches Graeme Russ
2011-07-11 22:02   ` Wolfgang Denk
2011-07-15  0:01     ` Graeme Russ
2011-07-15 12:19   ` [U-Boot] [PATCH v2 5/7]Timer: Remove " Graeme Russ
2011-07-16  9:36     ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:53       ` Wolfgang Denk
2011-08-19 21:24         ` Mike Frysinger
2011-08-19 22:55           ` Graeme Russ
2011-08-19 23:12             ` Mike Frysinger
2011-09-28 19:24           ` Wolfgang Denk
2011-06-28 11:40 ` [U-Boot] [PATCH v1 (WIP) 06/16] [Timer]Fix at91rm9200/spi.c timer usage Graeme Russ
2011-06-28 12:30   ` Andreas Bießmann
2011-07-15 12:20   ` [U-Boot] [PATCH v2 6/7]Timer: Fix " Graeme Russ
2011-07-16  9:37     ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:54       ` Wolfgang Denk
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 07/16] [Timer]Remove reset_timer_masked() Graeme Russ
2011-07-11 22:04   ` Wolfgang Denk
2011-07-15 12:21   ` [U-Boot] [PATCH v2 7/7]Timer: Remove reset_timer_masked() Graeme Russ
2011-07-16  9:38     ` [U-Boot] [PATCH v3 " Graeme Russ
2011-07-26 12:54       ` Wolfgang Denk
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 08/16] [Timer]Create new userland timer API Graeme Russ
2011-06-29  4:31   ` Simon Glass
2011-06-29  4:36     ` Graeme Russ
2011-06-29  4:48       ` Simon Glass
2011-07-11 22:05   ` Wolfgang Denk
2011-07-11 22:32     ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 09/16] [Timer]Replace get_timer() usage in drivers/block/ Graeme Russ
2011-06-29  4:40   ` Simon Glass
2011-06-29  5:06     ` Reinhard Meyer
2011-06-29  5:19       ` Graeme Russ
2011-06-29  5:30         ` Simon Glass
2011-06-29  5:38           ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 10/16] [Timer]Replace get_timer() usage in driver/mtd and driver/block Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 11/16] [Timer]Remove reset_timer() completely Graeme Russ
2011-06-28 11:41 ` Graeme Russ [this message]
2011-06-28 12:36   ` [U-Boot] [PATCH v1 (WIP) 12/16] [Timer]Replace get_timer() usage in drivers/ Vitaly Kuzmichev
2011-06-28 23:03     ` Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 13/16] [Timer]Replace get_timer() usage in net/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 14/16] [Timer]Replace get_timer() usage in common/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 15/16] [Timer]Replace get_timer() usage in board/ Graeme Russ
2011-06-28 11:41 ` [U-Boot] [PATCH v1 (WIP) 16/16] [Timer]Replace get_timer() usage in arch/ Graeme Russ
2011-06-29  4:45   ` Simon Glass
2011-06-29  4:51     ` Graeme Russ
2011-06-29  5:15       ` Mike Frysinger
2011-06-29  5:26         ` Mike Frysinger
2011-06-29  5:29           ` Graeme Russ
2011-06-29  4:54 ` [U-Boot] [PATCH v1 (WIP) 00/16] [Timer]API Rewrite Graeme Russ
2011-06-29  5:08 ` Mike Frysinger
2011-06-29  5:20   ` Graeme Russ
2011-07-08  0:25 ` Graeme Russ
2011-07-09  6:01   ` Albert ARIBAUD
2011-07-11 21:56 ` Wolfgang Denk
2011-07-11 22:49   ` Graeme Russ
2011-07-11 23:36   ` Graeme Russ
2011-07-12  2:17     ` Graeme Russ
2011-07-12  8:49       ` Wolfgang Denk
2011-07-12 10:36         ` Graeme Russ
2011-07-12 13:10           ` Wolfgang Denk
2011-07-12 15:23             ` Scott McNutt
2011-07-12 17:27               ` J. William Campbell
2011-07-13  0:29             ` Graeme Russ
2011-07-14 19:30               ` Wolfgang Denk
2011-07-17  1:51           ` Graeme Russ
2011-07-12 14:30       ` J. William Campbell
2011-07-12 16:08         ` Reinhard Meyer
2011-07-13  0:33           ` Graeme Russ
2011-07-13  1:20             ` J. William Campbell
2011-07-14 19:41               ` Wolfgang Denk
2011-07-14 23:52                 ` J. William Campbell
2011-07-15  7:17                   ` Wolfgang Denk
2011-07-15 18:08                     ` J. William Campbell
2011-07-15 18:34                       ` Wolfgang Denk
2011-07-15 21:03                         ` J. William Campbell
2011-07-16 14:11                           ` Graeme Russ
2011-07-15 12:15 ` [U-Boot] [PATCH v2 0/7]Timer: Simplify API Graeme Russ
2011-07-15 13:08   ` Graeme Russ
2011-07-16  8:36     ` Albert ARIBAUD
2011-07-16  9:01       ` Graeme Russ
2011-07-16  9:13         ` Albert ARIBAUD
2011-07-16  9:32         ` Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1309261269-4363-13-git-send-email-graeme.russ@gmail.com \
    --to=graeme.russ@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.