From 044e0f8c9aec9fe94d77199e64c813fb4336984b Mon Sep 17 00:00:00 2001 From: Antonio Borneo Date: Thu, 19 Aug 2021 16:07:21 +0200 Subject: [PATCH 1/1] stlink: fix SWIM mode on stlink-v3 Commit 89f07325f2e7 ("stlink: Set speed before entering JTAG/SWD mode") anticipates setting the adapter speed just before entering in the JTAG/SWD mode. This to initiate the communication with the speed selected by the user. But SWIM doesn't allow setting the speed before entering in SWIM mode. The resulting error causes OpenOCD to quit. The problem only happens with stlink-v3, due to the different way to set the adapter speed on different stlink versions. Set the speed before entering in the mode only for JTAG and SWD modes. Change-Id: Iab42cd9d72ecfac14c7e17bae74e0dee2218b235 Signed-off-by: Antonio Borneo Fixes: 89f07325f2e7 ("stlink: Set speed before entering JTAG/SWD mode") Reviewed-on: https://review.openocd.org/c/openocd/+/6443 Tested-by: jenkins Reviewed-by: Tarek BOCHKATI --- src/jtag/drivers/stlink_usb.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c index 0e86dcd4ad..2bbd03b6a4 100644 --- a/src/jtag/drivers/stlink_usb.c +++ b/src/jtag/drivers/stlink_usb.c @@ -1626,7 +1626,8 @@ static int stlink_usb_init_mode(void *handle, bool connect_under_reset, int init } } - if (h->version.jtag_api == STLINK_JTAG_API_V3) { + if (h->version.jtag_api == STLINK_JTAG_API_V3 && + (emode == STLINK_MODE_DEBUG_JTAG || emode == STLINK_MODE_DEBUG_SWD)) { struct speed_map map[STLINK_V3_MAX_FREQ_NB]; stlink_get_com_freq(h, (emode == STLINK_MODE_DEBUG_JTAG), map); -- 2.30.2