aboutsummaryrefslogtreecommitdiff
path: root/src/adiv5_jtagdp.c
diff options
context:
space:
mode:
authorGareth McMullin2013-06-19 21:05:53 +1200
committerGareth McMullin2013-06-19 21:05:53 +1200
commitd8f737fc53fa27bb13a934f94e39157748401ce4 (patch)
tree82c8b008e1eceafe240f8e394266be818c9d7aa0 /src/adiv5_jtagdp.c
parentd90e10cdbaa05509d1ee78f982d3aa0a2c94e972 (diff)
Disable ADIv5 timeout while target is running.
Diffstat (limited to 'src/adiv5_jtagdp.c')
-rw-r--r--src/adiv5_jtagdp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/adiv5_jtagdp.c b/src/adiv5_jtagdp.c
index 693b94e..4306101 100644
--- a/src/adiv5_jtagdp.c
+++ b/src/adiv5_jtagdp.c
@@ -92,10 +92,14 @@ static uint32_t adiv5_jtagdp_low_access(ADIv5_DP_t *dp, uint8_t APnDP, uint8_t R
jtag_dev_write_ir(dp->dev, APnDP?IR_APACC:IR_DPACC);
+ int tries = 1000;
do {
jtag_dev_shift_dr(dp->dev, (uint8_t*)&response, (uint8_t*)&request, 35);
ack = response & 0x07;
- } while(ack == JTAGDP_ACK_WAIT);
+ } while(--tries && (ack == JTAGDP_ACK_WAIT));
+
+ if (dp->allow_timeout && (ack == JTAGDP_ACK_WAIT))
+ return 0;
if((ack != JTAGDP_ACK_OK)) {
/* Fatal error if invalid ACK response */