]> git.sur5r.net Git - u-boot/commitdiff
cp/cmp: Add WATCHDOG_RESET in copy and compare loop
authorStefan Roese <sr@denx.de>
Mon, 13 Sep 2010 09:10:34 +0000 (11:10 +0200)
committerWolfgang Denk <wd@denx.de>
Tue, 12 Oct 2010 20:50:19 +0000 (22:50 +0200)
On some boards with a very short watchdog timeout, the "cp" and
"cmp" commands may reset the board. This patch adds some
watchdog resets inside the loops. Otherwise for example the lwmon5
board will reset while doing something like this:

=> cp.b fc000000 1000000 100000

Signed-off-by: Stefan Roese <sr@denx.de>
common/cmd_mem.c

index 44834ea7514fccb2765d008ed57a83497e9bd4e7..f7a442a88e65234384d33039ad3e02ca23c5c32a 100644 (file)
@@ -337,6 +337,10 @@ int do_mem_cmp (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                ngood++;
                addr1 += size;
                addr2 += size;
+
+               /* reset watchdog from time to time */
+               if ((count % (64 << 10)) == 0)
+                       WATCHDOG_RESET();
        }
 
        printf("Total of %ld %s%s were the same\n",
@@ -447,6 +451,10 @@ int do_mem_cp ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        *((u_char *)dest) = *((u_char *)addr);
                addr += size;
                dest += size;
+
+               /* reset watchdog from time to time */
+               if ((count % (64 << 10)) == 0)
+                       WATCHDOG_RESET();
        }
        return 0;
 }