summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorLokesh Vutla <lokeshvutla@ti.com>2019-01-08 19:28:35 +0530
committerTom Rini <trini@konsulko.com>2019-01-15 15:28:51 -0500
commita4773c5559867f8fc6b0c1a7eb8ab36cfd53756f (patch)
treed6a7af3d0af744d465f0fba70c3a22d2b4968541 /common
parent03e6151d5bb42fd055e9c1e571440359bd5b5282 (diff)
downloadu-boot-a4773c5559867f8fc6b0c1a7eb8ab36cfd53756f.tar.gz
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>
Diffstat (limited to 'common')
-rw-r--r--common/xyzModem.c2
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)