diff options
author | Lokesh Vutla <lokeshvutla@ti.com> | 2019-01-08 19:28:35 +0530 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2019-01-15 15:28:51 -0500 |
commit | a4773c5559867f8fc6b0c1a7eb8ab36cfd53756f (patch) | |
tree | d6a7af3d0af744d465f0fba70c3a22d2b4968541 | |
parent | 03e6151d5bb42fd055e9c1e571440359bd5b5282 (diff) |
xyz-modem: Fix timeout loop waiting with WATCHDOG
Commit 2c77c0d6524eb ("xyz-modem: Change getc timeout loop waiting")
fixes the loop delay when using a hw watchdog, assuming that watchdog
kicking is taken care of by getc(). But the xyzmodem driver tries to
do a getc only after confirming that a character is available like below:
while (!tstc()) {
till timeout;
}
if (tstc())
*c = getc();
and getc() does a watchdog reset only if it fails to see a character.
In this case, getc() always sees a character and never does a
watchdog reset. So to make sure that watchdog doesn't get reset
while loading the file, do a watchdog reset just before starting the
image loading.
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Vignesh R <vigneshr@ti.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r-- | common/xyzModem.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/common/xyzModem.c b/common/xyzModem.c index e5c65b480a..e85da74a69 100644 --- a/common/xyzModem.c +++ b/common/xyzModem.c @@ -25,6 +25,7 @@ #include <xyzModem.h> #include <stdarg.h> #include <u-boot/crc.h> +#include <watchdog.h> /* Assumption - run xyzModem protocol over the console port */ @@ -63,6 +64,7 @@ CYGACC_COMM_IF_GETC_TIMEOUT (char chan, char *c) { ulong now = get_timer(0); + WATCHDOG_RESET(); while (!tstc ()) { if (get_timer(now) > xyzModem_CHAR_TIMEOUT) |