aboutsummaryrefslogtreecommitdiff
path: root/src/jtag
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2020-10-30 15:03:37 +0100
committerAntonio Borneo <borneo.antonio@gmail.com>2020-11-07 20:54:02 +0000
commit1f6efaada0686f7e9e6164919eb739892855d327 (patch)
treeb64002dc484bf1b33706bbf200c0d134993efd11 /src/jtag
parentba564bda6694769b95e22808982d087c779e6dd9 (diff)
downloadriscv-openocd-1f6efaada0686f7e9e6164919eb739892855d327.zip
riscv-openocd-1f6efaada0686f7e9e6164919eb739892855d327.tar.gz
riscv-openocd-1f6efaada0686f7e9e6164919eb739892855d327.tar.bz2
stlink: fix max SWV baudrate on stlink v3
While stlink v2 anly accept till to 2 MHz for SWV baudrate, stlink v3 accepts up to 24 MHz. Check the stlink version and use the respective max value. Change-Id: I911207a35983b6acf0b901059076dd31f70e6290 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reported-by: Pawel <phryniszak@users.sourceforge.net> Fixes: https://sourceforge.net/p/openocd/tickets/283/ Reviewed-on: http://openocd.zylin.com/5908 Tested-by: jenkins
Diffstat (limited to 'src/jtag')
-rw-r--r--src/jtag/drivers/stlink_usb.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c
index 48db3e6..8ab73cd 100644
--- a/src/jtag/drivers/stlink_usb.c
+++ b/src/jtag/drivers/stlink_usb.c
@@ -299,6 +299,7 @@ struct stlink_usb_handle_s {
#define STLINK_TRACE_SIZE 4096
#define STLINK_TRACE_MAX_HZ 2000000
+#define STLINK_V3_TRACE_MAX_HZ 24000000
#define STLINK_V3_MAX_FREQ_NB 10
@@ -2996,17 +2997,20 @@ static int stlink_config_trace(void *handle, bool enabled,
return ERROR_FAIL;
}
+ unsigned int max_trace_freq = (h->version.stlink == 3) ?
+ STLINK_V3_TRACE_MAX_HZ : STLINK_TRACE_MAX_HZ;
+
/* Only concern ourselves with the frequency if the STlink is processing it. */
- if (enabled && *trace_freq > STLINK_TRACE_MAX_HZ) {
+ if (enabled && *trace_freq > max_trace_freq) {
LOG_ERROR("ST-LINK doesn't support SWO frequency higher than %u",
- STLINK_TRACE_MAX_HZ);
+ max_trace_freq);
return ERROR_FAIL;
}
stlink_usb_trace_disable(h);
if (!*trace_freq)
- *trace_freq = STLINK_TRACE_MAX_HZ;
+ *trace_freq = max_trace_freq;
presc = traceclkin_freq / *trace_freq;