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
This commit is contained in:
Antonio Borneo 2020-10-30 15:03:37 +01:00
parent ba564bda66
commit 1f6efaada0
1 changed files with 7 additions and 3 deletions

View 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;