diff options
| -rw-r--r-- | drivers/mtd/nand/nand_base.c | 15 | 
1 files changed, 9 insertions, 6 deletions
| diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index b74d04029..5239c1fcf 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); |