drivers/jlink: fix SWD speed config, and set it before sending anything
authorPaul Fertser <fercerpav@gmail.com>
Sat, 19 Jul 2014 12:48:09 +0000 (16:48 +0400)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Sat, 2 Aug 2014 13:53:59 +0000 (13:53 +0000)
During the initialisation a driver might need to communicate with the
target (e.g. sending jtag2swd sequence), so when doing so it should
honour the user-specified speed.

Change-Id: If84fea6057fda9edcf2c0a653edfbab2500e3cdd
[andrew.smirnov@gmail.com: fix khz/hz confusion]
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com>
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Reviewed-on: http://openocd.zylin.com/2224
Tested-by: jenkins
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
src/jtag/drivers/jlink.c

index 871bf24c613ef8be43d5b4bd3ff1053ad1562600..9d25eb42bfa387fbb96c10c891573a939114eaf2 100644 (file)
@@ -559,6 +559,8 @@ static int jlink_init(void)
        jtag_sleep(3000);
        jlink_tap_init();
 
+       jlink_speed(jtag_get_speed_khz());
+
        if (!swd_mode) {
                /* v5/6 jlink seems to have an issue if the first tap move
                 * is not divisible by 8, so we send a TLR on first power up */
@@ -1343,7 +1345,7 @@ static void jlink_swd_read_reg(struct adiv5_dap *dap, uint8_t cmd, uint32_t *val
 static int_least32_t jlink_swd_frequency(struct adiv5_dap *dap, int_least32_t hz)
 {
        if (hz > 0)
-               jlink_speed(hz);
+               jlink_speed(hz / 1000);
 
        return hz;
 }