drivers/jlink: fix (again) calculate_swo_prescaler formula
authorAntonio Borneo <borneo.antonio@gmail.com>
Thu, 1 Oct 2020 12:19:16 +0000 (14:19 +0200)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 3 Oct 2020 10:23:22 +0000 (11:23 +0100)
The prescaler computation should round at the nearest integer
value, not to the next integer value.

Change-Id: I957e0774421211f3c4ba4b312738b1c67b87c4a2
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: 051e80812b1b ("drivers/jlink: fix calculate_swo_prescaler formula")
Reviewed-on: http://openocd.zylin.com/5846
Tested-by: jenkins
Reviewed-by: Adrian M Negreanu <adrian.negreanu@nxp.com>
src/jtag/drivers/jlink.c

index 910799ce2f3b2e38c6b634408c89765b0566be29..ae8ce49c68e0431ec09a37cc6bd37f66b822bcd1 100644 (file)
@@ -1269,8 +1269,7 @@ static uint32_t calculate_trace_buffer_size(void)
 static bool calculate_swo_prescaler(unsigned int traceclkin_freq,
                uint32_t trace_freq, uint16_t *prescaler)
 {
-       unsigned int presc;
-       presc = DIV_ROUND_UP(traceclkin_freq, trace_freq);
+       unsigned int presc = (traceclkin_freq + trace_freq / 2) / trace_freq;
        if (presc > TPIU_ACPR_MAX_SWOSCALER)
                return false;