From: Antonio Borneo Date: Fri, 6 Aug 2021 21:37:23 +0000 (+0200) Subject: adi_v5_jtag: clear sticky overrun error X-Git-Tag: v0.12.0-rc1~181 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=edb575800ae26b4088b71b7531ba3948351bd7a9 adi_v5_jtag: clear sticky overrun error By accessing invalid AP in JTAG mode, it's possible to trigger the error: JTAG-DP STICKY ERROR After that the sticky error is never cleared and the whole DAP gets not anymore accessible. Clean-up the sticky error once detected. Change-Id: I8b07263b30f9e46645f0c29084b8f1626e241f45 Signed-off-by: Antonio Borneo Reviewed-on: https://review.openocd.org/c/openocd/+/6430 Tested-by: jenkins --- diff --git a/src/target/adi_v5_jtag.c b/src/target/adi_v5_jtag.c index 9355b84c3b..37019808f7 100644 --- a/src/target/adi_v5_jtag.c +++ b/src/target/adi_v5_jtag.c @@ -633,10 +633,10 @@ static int jtagdp_transaction_endcheck(struct adiv5_dap *dap) if (ctrlstat & SSTICKYORUN) LOG_DEBUG("JTAG-DP STICKY OVERRUN"); - /* Clear Sticky Error Bits */ + /* Clear Sticky Error and Sticky Overrun Bits */ retval = adi_jtag_scan_inout_check_u32(dap, JTAG_DP_DPACC, DP_CTRL_STAT, DPAP_WRITE, - dap->dp_ctrl_stat | SSTICKYERR, NULL, 0); + dap->dp_ctrl_stat | SSTICKYERR | SSTICKYORUN, NULL, 0); if (retval != ERROR_OK) goto done;