mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 21:54:01 +00:00
xyz-modem: Fix timeout loop waiting with WATCHDOG
Commit 2c77c0d652
("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>
This commit is contained in:
parent
03e6151d5b
commit
a4773c5559
1 changed files with 2 additions and 0 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue