diff mbox

common/xyzModem.c: Fix delay timeout calculation

Message ID 20160825183628.1774-1-afd@ti.com
State Superseded
Headers show

Commit Message

Andrew Davis Aug. 25, 2016, 6:36 p.m. UTC
When waiting for input in CYGACC_COMM_IF_GETC_TIMEOUT we delay 2
seconds by incrementing and checking a counter variable every 20
uSeconds. The overhead in the loop calling tstc() millions of times
causes the timeout to be closer to 20 seconds. Delay longer per iteration
to reduce overhead and bring the timeout back closer to the correct time.

Signed-off-by: Andrew F. Davis <afd@ti.com>

---
 common/xyzModem.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

-- 
2.9.3

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

Patch

diff --git a/common/xyzModem.c b/common/xyzModem.c
index 5656aac..c3f2afc 100644
--- a/common/xyzModem.c
+++ b/common/xyzModem.c
@@ -71,11 +71,10 @@  typedef int cyg_int32;
 static int
 CYGACC_COMM_IF_GETC_TIMEOUT (char chan, char *c)
 {
-#define DELAY 20
   unsigned long counter = 0;
-  while (!tstc () && (counter < xyzModem_CHAR_TIMEOUT * 1000 / DELAY))
+  while (!tstc () && (counter < xyzModem_CHAR_TIMEOUT))
     {
-      udelay (DELAY);
+      mdelay (1);
       counter++;
     }
   if (tstc ())