probe: add missing data-phase recovery in ACK WAIT or FAULT states

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
This commit is contained in:
Jonathan Bell
2022-07-06 11:25:17 +01:00
parent ee4d575bf7
commit aabe217a68

View File

@@ -186,8 +186,18 @@ uint8_t SWD_Transfer (uint32_t request, uint32_t *data) {
}
if ((ack == DAP_TRANSFER_WAIT) || (ack == DAP_TRANSFER_FAULT)) {
if (DAP_Data.swd_conf.data_phase && ((request & DAP_TRANSFER_RnW) != 0U)) {
/* Dummy Read RDATA[0:31] + Parity */
probe_read_bits(33);
}
probe_read_bits(DAP_Data.swd_conf.turnaround);
probe_write_mode();
if (DAP_Data.swd_conf.data_phase && ((request & DAP_TRANSFER_RnW) == 0U)) {
/* Dummy Write WDATA[0:31] + Parity */
for (n = 0; n < 32; n += 8)
probe_write_bits(8, 0);
probe_write_bits(1, 0);
}
return ((uint8_t)ack);
}