From: Antonio Borneo Date: Thu, 19 Aug 2021 14:07:21 +0000 (+0200) Subject: stlink: fix SWIM mode on stlink-v3 X-Git-Tag: v0.12.0-rc1~560 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=044e0f8c9aec9fe94d77199e64c813fb4336984b;hp=013a0e88d2a6e4626987e9fbe056ee1d40026933 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 --- 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);