summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorØyvind Harboe <oyvind.harboe@zylin.com>2010-01-11 10:21:56 +0100
committerØyvind Harboe <oyvind.harboe@zylin.com>2010-01-11 10:25:13 +0100
commitc74ca40e09baebe8b86b1a77ad343f7b8ebde5d6 (patch)
tree79f61bb6eb23f07e5d302c5c56c249aa8f5cf7a2 /src
parent8c730aaee22a505cf66666be3ff28734ac885418 (diff)
downloadopenocd+libswd-c74ca40e09baebe8b86b1a77ad343f7b8ebde5d6.tar.gz
openocd+libswd-c74ca40e09baebe8b86b1a77ad343f7b8ebde5d6.tar.bz2
openocd+libswd-c74ca40e09baebe8b86b1a77ad343f7b8ebde5d6.tar.xz
openocd+libswd-c74ca40e09baebe8b86b1a77ad343f7b8ebde5d6.zip
zy1000: reset bugfix
flush JTAG FIFO before reset. Fixes RCLK problems observed w/lpc2148, but really fixes a wider range of problems. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Diffstat (limited to 'src')
-rw-r--r--src/jtag/zy1000/zy1000.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/jtag/zy1000/zy1000.c b/src/jtag/zy1000/zy1000.c
index e66a8b5a..9070f2e3 100644
--- a/src/jtag/zy1000/zy1000.c
+++ b/src/jtag/zy1000/zy1000.c
@@ -132,6 +132,13 @@ static int zy1000_power_dropout(int *dropout)
void zy1000_reset(int trst, int srst)
{
LOG_DEBUG("zy1000 trst=%d, srst=%d", trst, srst);
+
+ /* flush the JTAG FIFO. Not flushing the queue before messing with
+ * reset has such interesting bugs as causing hard to reproduce
+ * RCLK bugs as RCLK will stop responding when TRST is asserted
+ */
+ waitIdle();
+
if (!srst)
{
ZY1000_POKE(ZY1000_JTAG_BASE + 0x14, 0x00000001);
@@ -156,7 +163,6 @@ void zy1000_reset(int trst, int srst)
if (trst||(srst && (jtag_get_reset_config() & RESET_SRST_PULLS_TRST)))
{
- waitIdle();
/* we're now in the RESET state until trst is deasserted */
ZY1000_POKE(ZY1000_JTAG_BASE + 0x20, TAP_RESET);
} else