summaryrefslogtreecommitdiff
path: root/src/jtag/zy1000/jtag_minidriver.h
diff options
context:
space:
mode:
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
commit9cbf0723d5a2978998b541aa2942b7fadc69e9ee (patch)
tree925ef10b0a1be8292477dcadc20f33a5b9edc8da /src/jtag/zy1000/jtag_minidriver.h
parent01b2a3091a4ef5df1a18d1142d6c63477cf9d08f (diff)
downloadopenocd_libswd-9cbf0723d5a2978998b541aa2942b7fadc69e9ee.tar.gz
openocd_libswd-9cbf0723d5a2978998b541aa2942b7fadc69e9ee.tar.bz2
openocd_libswd-9cbf0723d5a2978998b541aa2942b7fadc69e9ee.tar.xz
openocd_libswd-9cbf0723d5a2978998b541aa2942b7fadc69e9ee.zip
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.h12
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));}