Patchwork [U-Boot] MTD/NAND: fix nand_base.c to use get_timer() correctly

login
register
mail settings
Submitter Reinhard Meyer
Date Nov. 18, 2010, 1:14 p.m.
Message ID <1290086066-21472-1-git-send-email-u-boot@emk-elektronik.de>
Download mbox | patch
Permalink /patch/72087/
State Accepted
Commit 7a8fc36e6c3430784c877b6799833059b1ef4d33
Delegated to: Scott Wood
Headers show

Comments

Reinhard Meyer - Nov. 18, 2010, 1:14 p.m.
This is part of the timer cleanup effort.
In the future we only use get_timer() in its intended way to
program timeout loops.
reset_timer() shall not be used anymore.

Signed-off-by: Reinhard Meyer <u-boot@emk-elektronik.de>
---
 drivers/mtd/nand/nand_base.c |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)
Scott Wood - Dec. 10, 2010, 11:46 p.m.
On Thu, Nov 18, 2010 at 03:14:26AM -0000, Reinhard Meyer wrote:
> This is part of the timer cleanup effort.
> In the future we only use get_timer() in its intended way to
> program timeout loops.
> reset_timer() shall not be used anymore.
> 
> Signed-off-by: Reinhard Meyer <u-boot@emk-elektronik.de>
> 
> ---
> drivers/mtd/nand/nand_base.c |   15 +++++++++------
>  1 files changed, 9 insertions(+), 6 deletions(-)

Applied to u-boot-nand-flash next

-Scott

Patch

diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 21cc5a3..3dcef97 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -439,11 +439,12 @@  void nand_wait_ready(struct mtd_info *mtd)
 {
 	struct nand_chip *chip = mtd->priv;
 	u32 timeo = (CONFIG_SYS_HZ * 20) / 1000;
+	u32 time_start;
 
-	reset_timer();
+	time_start = get_timer(0);
 
 	/* wait until command is processed or timeout occures */
-	while (get_timer(0) < timeo) {
+	while (get_timer(time_start) < timeo) {
 		if (chip->dev_ready)
 			if (chip->dev_ready(mtd))
 				break;
@@ -704,6 +705,7 @@  static int nand_wait(struct mtd_info *mtd, struct nand_chip *this)
 {
 	unsigned long	timeo;
 	int state = this->state;
+	u32 time_start;
 
 	if (state == FL_ERASING)
 		timeo = (CONFIG_SYS_HZ * 400) / 1000;
@@ -715,10 +717,10 @@  static int nand_wait(struct mtd_info *mtd, struct nand_chip *this)
 	else
 		this->cmdfunc(mtd, NAND_CMD_STATUS, -1, -1);
 
-	reset_timer();
+	time_start = get_timer(0);
 
 	while (1) {
-		if (get_timer(0) > timeo) {
+		if (get_timer(time_start) > timeo) {
 			printf("Timeout!");
 			return 0x01;
 		}
@@ -732,8 +734,9 @@  static int nand_wait(struct mtd_info *mtd, struct nand_chip *this)
 		}
 	}
 #ifdef PPCHAMELON_NAND_TIMER_HACK
-	reset_timer();
-	while (get_timer(0) < 10);
+	time_start = get_timer(0);
+	while (get_timer(time_start) < 10)
+		;
 #endif /*  PPCHAMELON_NAND_TIMER_HACK */
 
 	return this->read_byte(mtd);