diff options
author | Øyvind Harboe <oyvind.harboe@zylin.com> | 2010-07-16 15:44:12 +0200 |
---|---|---|
committer | Øyvind Harboe <oyvind.harboe@zylin.com> | 2010-07-16 16:03:25 +0200 |
commit | 9cbf0723d5a2978998b541aa2942b7fadc69e9ee (patch) | |
tree | 925ef10b0a1be8292477dcadc20f33a5b9edc8da /src/jtag/zy1000/jtag_minidriver.h | |
parent | 01b2a3091a4ef5df1a18d1142d6c63477cf9d08f (diff) |
debug-feature: jtagtcpip, reduce performance impact of ping times
queue read back of data
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Diffstat (limited to 'src/jtag/zy1000/jtag_minidriver.h')
-rw-r--r-- | src/jtag/zy1000/jtag_minidriver.h | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/jtag/zy1000/jtag_minidriver.h b/src/jtag/zy1000/jtag_minidriver.h index f3fe5a6a..0f2b46a0 100644 --- a/src/jtag/zy1000/jtag_minidriver.h +++ b/src/jtag/zy1000/jtag_minidriver.h @@ -58,8 +58,14 @@ static __inline__ void waitIdle(void) ZY1000_PEEK(ZY1000_JTAG_BASE + 0x10, empty); } while ((empty & 0x100) == 0); } + +static __inline__ void zy1000_flush_readqueue(void) +{ + /* Not used w/hardware fifo */ +} #else extern void waitIdle(void); +void zy1000_flush_readqueue(void); #endif static __inline__ void waitQueue(void) @@ -222,6 +228,6 @@ static __inline__ void interface_jtag_add_dr_out(struct jtag_tap *target_tap, } } -#define interface_jtag_add_callback(callback, in) callback(in) - -#define interface_jtag_add_callback4(callback, in, data1, data2, data3) jtag_set_error(callback(in, data1, data2, data3)) +/* Must flush any read queue before we can invoke callback */ +#define interface_jtag_add_callback(callback, in) {zy1000_flush_readqueue(); callback(in);} +#define interface_jtag_add_callback4(callback, in, data1, data2, data3) {zy1000_flush_readqueue(); jtag_set_error(callback(in, data1, data2, data3));} |