Merge branch 'master' of git://git.denx.de/u-boot-blackfin
[oweals/u-boot.git] / cpu / blackfin / jtag-console.c
index 44c0a839ecc518a347928d447904bcd7055c28c1..d58582f6e017f3391ec23fc83c42aea38702758d 100644 (file)
@@ -54,16 +54,23 @@ static void jtag_puts(const char *s)
        jtag_send(s, strlen(s));
 }
 
-static int jtag_tstc(void)
+static size_t inbound_len, leftovers_len;
+
+/* Lower layers want to know when jtag has data */
+static int jtag_tstc_dbg(void)
 {
        return (bfin_read_DBGSTAT() & 0x2);
 }
 
+/* Higher layers want to know when any data is available */
+static int jtag_tstc(void)
+{
+       return jtag_tstc_dbg() || leftovers_len;
+}
+
 /* Receive a buffer.  The format is:
  * [32bit length][actual data]
  */
-static size_t inbound_len;
-static int leftovers_len;
 static uint32_t leftovers;
 static int jtag_getc(void)
 {
@@ -79,7 +86,7 @@ static int jtag_getc(void)
        }
 
        /* wait for new data ! */
-       while (!jtag_tstc())
+       while (!jtag_tstc_dbg())
                continue;
        __asm__("%0 = emudat;" : "=d"(emudat));