From 5dafc0828c2adc1f29f737a2468d7f17cbb6ff86 Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Sat, 23 Oct 2021 20:02:19 +0200 Subject: [PATCH] SWD: Remove excessive line resets. --- src/target/adiv5_swdp.c | 6 +++--- src/target/cortexm.c | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/target/adiv5_swdp.c b/src/target/adiv5_swdp.c index 78d91eb6..2af37c00 100644 --- a/src/target/adiv5_swdp.c +++ b/src/target/adiv5_swdp.c @@ -195,9 +195,8 @@ uint32_t firmware_swdp_read(ADIv5_DP_t *dp, uint16_t addr) uint32_t firmware_swdp_error(ADIv5_DP_t *dp) { - uint32_t err, clr = 0; - - if ((dp->idcode & ADIV5_DP_VERSION_MASK) == ADIV5_DPv2) { + if ((dp->fault && (dp->idcode & ADIV5_DP_VERSION_MASK) == ADIV5_DPv2) && + dp->dp_low_write) { /* On protocoll error target gets deselected. * With DP Change, another target needs selection. * => Reselect with right target! */ @@ -206,6 +205,7 @@ uint32_t firmware_swdp_read(ADIv5_DP_t *dp, uint16_t addr) uint32_t dummy; dp->dp_low_read(dp, ADIV5_DP_IDCODE, &dummy); } + uint32_t err, clr = 0; err = adiv5_dp_read(dp, ADIV5_DP_CTRLSTAT) & (ADIV5_DP_CTRLSTAT_STICKYORUN | ADIV5_DP_CTRLSTAT_STICKYCMP | ADIV5_DP_CTRLSTAT_STICKYERR | ADIV5_DP_CTRLSTAT_WDATAERR); diff --git a/src/target/cortexm.c b/src/target/cortexm.c index d0877b7e..5ce3a3c6 100644 --- a/src/target/cortexm.c +++ b/src/target/cortexm.c @@ -478,6 +478,9 @@ bool cortexm_probe(ADIv5_AP_t *ap) bool cortexm_attach(target *t) { + ADIv5_AP_t *ap = cortexm_ap(t); + ap->dp->fault = 1; /* Force switch to this multi-drop device*/ + target_check_error(t); struct cortexm_priv *priv = t->priv; unsigned i; uint32_t r;