]> git.gag.com Git - fw/openocd/commitdiff
stlink: fix max SWV baudrate on stlink v3
authorAntonio Borneo <borneo.antonio@gmail.com>
Fri, 30 Oct 2020 14:03:37 +0000 (15:03 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 7 Nov 2020 20:54:02 +0000 (20:54 +0000)
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
src/jtag/drivers/stlink_usb.c

index 48db3e611e462a625515d64f3cc21b43a0fd2a43..8ab73cd12752d677dfda640ec2416dcc60cdb32f 100644 (file)
@@ -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;