aboutsummaryrefslogtreecommitdiff
path: root/src/jtag
diff options
context:
space:
mode:
authorSpencer Oliver <spen@spen-soft.co.uk>2012-08-28 17:02:18 +0100
committerFreddie Chopin <freddie.chopin@gmail.com>2012-08-29 06:41:10 +0000
commit897817b331a8b735996241bc7515e6bebeb39316 (patch)
treef81cb4c01dc65c1244a875bf46356d50be2b8890 /src/jtag
parent6055d952c3efd2e6b12924c5ec42407fff99b453 (diff)
downloadriscv-openocd-897817b331a8b735996241bc7515e6bebeb39316.zip
riscv-openocd-897817b331a8b735996241bc7515e6bebeb39316.tar.gz
riscv-openocd-897817b331a8b735996241bc7515e6bebeb39316.tar.bz2
stlink: improve swd hardware reset
Treat SWD wait result as success, otherwise hardware reset will sometimes fail. Change-Id: I0dbdbe9e75924fe0dde547a72883c60c3db7b15e Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/799 Tested-by: jenkins Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
Diffstat (limited to 'src/jtag')
-rw-r--r--src/jtag/drivers/stlink_usb.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c
index b2f380a..a88f559 100644
--- a/src/jtag/drivers/stlink_usb.c
+++ b/src/jtag/drivers/stlink_usb.c
@@ -94,7 +94,10 @@ struct stlink_usb_handle_s {
};
#define STLINK_DEBUG_ERR_OK 0x80
-#define STLINK_DEBUG_ERR_FAULT 0x81
+#define STLINK_DEBUG_ERR_FAULT 0x81
+#define STLINK_SWD_AP_WAIT 0x10
+#define STLINK_SWD_DP_WAIT 0x14
+
#define STLINK_CORE_RUNNING 0x80
#define STLINK_CORE_HALTED 0x81
#define STLINK_CORE_STAT_UNKNOWN -1
@@ -784,6 +787,10 @@ static int stlink_usb_reset(void *handle)
LOG_DEBUG("RESET: 0x%08X", h->databuf[0]);
+ /* the following is not a error under swd (using hardware srst), so return success */
+ if (h->databuf[0] == STLINK_SWD_AP_WAIT || h->databuf[0] == STLINK_SWD_DP_WAIT)
+ return ERROR_OK;
+
return h->databuf[0] == STLINK_DEBUG_ERR_OK ? ERROR_OK : ERROR_FAIL;
}