diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c index 9f260642f..96accf3ec 100644 --- a/src/target/arm_adi_v5.c +++ b/src/target/arm_adi_v5.c @@ -249,12 +249,14 @@ int swjdp_transaction_endcheck(struct swjdp_common *swjdp) swjdp->ack = swjdp->ack & 0x7; - if (swjdp->ack != 2) + /* common code path avoids calling timeval_ms() */ + if (swjdp->ack != JTAG_ACK_OK_FAULT) { long long then = timeval_ms(); - while (swjdp->ack != 2) + + while (swjdp->ack != JTAG_ACK_OK_FAULT) { - if (swjdp->ack == 1) + if (swjdp->ack == JTAG_ACK_WAIT) { if ((timeval_ms()-then) > 1000) { @@ -280,9 +282,6 @@ int swjdp_transaction_endcheck(struct swjdp_common *swjdp) return retval; swjdp->ack = swjdp->ack & 0x7; } - } else - { - /* common code path avoids fn to timeval_ms() */ } /* Check for STICKYERR and STICKYORUN */ diff --git a/src/target/arm_adi_v5.h b/src/target/arm_adi_v5.h index 4e1b1aa6d..675a17366 100644 --- a/src/target/arm_adi_v5.h +++ b/src/target/arm_adi_v5.h @@ -38,6 +38,10 @@ #define JTAG_DP_APACC 0xB #define JTAG_DP_IDCODE 0xE +/* three-bit ACK values for DPACC and APACC reads */ +#define JTAG_ACK_OK_FAULT 0x2 +#define JTAG_ACK_WAIT 0x1 + #define DPAP_WRITE 0 #define DPAP_READ 1