diff options
Diffstat (limited to 'arch/blackfin/cpu')
-rw-r--r-- | arch/blackfin/cpu/jtag-console.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/arch/blackfin/cpu/jtag-console.c b/arch/blackfin/cpu/jtag-console.c index 46b30a0..bde8bee 100644 --- a/arch/blackfin/cpu/jtag-console.c +++ b/arch/blackfin/cpu/jtag-console.c @@ -10,6 +10,22 @@ #include <stdio_dev.h> #include <asm/blackfin.h> +#ifdef DEBUG +# define dprintf(...) serial_printf(__VA_ARGS__) +#else +# define dprintf(...) do { if (0) printf(__VA_ARGS__); } while (0) +#endif + +static inline void dprintf_decode(const char *s, uint32_t len) +{ + uint32_t i; + for (i = 0; i < len; ++i) + if (s[i] < 0x20 || s[i] >= 0x7f) + dprintf("\\%o", s[i]); + else + dprintf("%c", s[i]); +} + static inline uint32_t bfin_write_emudat(uint32_t emudat) { __asm__ __volatile__("emudat = %0;" : : "d"(emudat)); @@ -52,6 +68,10 @@ static void jtag_send(const char *c, uint32_t len) if (len == 0) return; + dprintf("%s(\"", __func__); + dprintf_decode(c, len); + dprintf("\", %i)\n", len); + /* First send the length */ if (jtag_write_emudat(len)) return; @@ -83,7 +103,10 @@ 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); + int ret = (bfin_read_DBGSTAT() & 0x2); + if (ret) + dprintf("%s: ret:%i\n", __func__, ret); + return ret; } /* Higher layers want to know when any data is available */ @@ -101,6 +124,9 @@ static int jtag_getc(void) int ret; uint32_t emudat; + dprintf("%s: inlen:%zu leftlen:%zu left:%x\n", __func__, + inbound_len, leftovers_len, leftovers); + /* see if any data is left over */ if (leftovers_len) { --leftovers_len; |