Re: [U-Boot] [PATCH v2] cfi_flash: reset timer in flash status check

2010-04-07 Thread Stefan Roese
On Thursday 01 April 2010 05:15:05 Thomas Chou wrote:
 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.

Applied to u-boot-cfi-flash/master. Thanks.
 
Cheers,
Stefan

--
DENX Software Engineering GmbH,  MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: off...@denx.de
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2] cfi_flash: reset timer in flash status check

2010-03-31 Thread Thomas Chou
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 tho...@wytron.com.tw
---
Please ignore the earlier patch, which messed up when I added comments.

 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 aae93bd..99300ba 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) {
-- 
1.6.6.1

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot