diff --git a/src/target/adiv5_swdp.c b/src/target/adiv5_swdp.c index 9e107c1d..8fac22f4 100644 --- a/src/target/adiv5_swdp.c +++ b/src/target/adiv5_swdp.c @@ -55,7 +55,7 @@ static inline void swdptap_bit_out(bool val) int adiv5_swdp_scan(void) { - uint8_t ack; + uint32_t ack; target_list_free(); ADIv5_DP_t *dp = (void*)calloc(1, sizeof(*dp)); @@ -133,9 +133,9 @@ static uint32_t adiv5_swdp_low_access(ADIv5_DP_t *dp, uint8_t RnW, { bool APnDP = addr & ADIV5_APnDP; addr &= 0xff; - uint8_t request = 0x81; + uint32_t request = 0x81; uint32_t response = 0; - uint8_t ack; + uint32_t ack; platform_timeout timeout; if(APnDP && dp->fault) return 0; @@ -152,7 +152,7 @@ static uint32_t adiv5_swdp_low_access(ADIv5_DP_t *dp, uint8_t RnW, do { swdptap_seq_out(request, 8); ack = swdptap_seq_in(3); - } while (!platform_timeout_is_expired(&timeout) && ack == SWDP_ACK_WAIT); + } while (ack == SWDP_ACK_WAIT && !platform_timeout_is_expired(&timeout)); if (ack == SWDP_ACK_WAIT) raise_exception(EXCEPTION_TIMEOUT, "SWDP ACK timeout"); @@ -172,9 +172,6 @@ static uint32_t adiv5_swdp_low_access(ADIv5_DP_t *dp, uint8_t RnW, swdptap_seq_out_parity(value, 32); } - /* REMOVE THIS */ - swdptap_seq_out(0, 8); - return response; }