diff options
author | Thomas Chou <thomas@wytron.com.tw> | 2010-04-01 11:15:05 +0800 |
---|---|---|
committer | Stefan Roese <sr@denx.de> | 2010-04-07 11:33:16 +0200 |
commit | 22d6c8faac4e9fa43232b0cf4da427ec14d72ad3 (patch) | |
tree | 05f17c5ebd0f49312484b0ae31031ecbff8fce4b /drivers | |
parent | ffa37fc98d71ef930bccd4e9eed37f6ce6b4d6af (diff) | |
download | u-boot-22d6c8faac4e9fa43232b0cf4da427ec14d72ad3.zip u-boot-22d6c8faac4e9fa43232b0cf4da427ec14d72ad3.tar.gz u-boot-22d6c8faac4e9fa43232b0cf4da427ec14d72ad3.tar.bz2 |
cfi_flash: reset timer in flash status check
This patch adds reset_timer() before the flash status check
waiting loop.
Since the timer is basically running asynchronous to the cfi
code, it is possible to call get_timer(0), then only a few
_SYSCLK_ cycles later an interrupt is generated. This causes
timeout even though much less time has elapsed. So the timer
period registers should be reset before get_timer(0) is
called.
There is similar usage in nand_base.c.
Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
Signed-off-by: Stefan Roese <sr@denx.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mtd/cfi_flash.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/mtd/cfi_flash.c b/drivers/mtd/cfi_flash.c index d0240f5..3267c5d 100644 --- a/drivers/mtd/cfi_flash.c +++ b/drivers/mtd/cfi_flash.c @@ -544,6 +544,7 @@ static int flash_status_check (flash_info_t * info, flash_sect_t sector, #endif /* Wait for command completion */ + reset_timer(); start = get_timer (0); while (flash_is_busy (info, sector)) { if (get_timer (start) > tout) { @@ -630,6 +631,7 @@ static int flash_status_poll(flash_info_t *info, void *src, void *dst, #endif /* Wait for command completion */ + reset_timer(); start = get_timer(0); while (1) { switch (info->portwidth) { |