]> git.sur5r.net Git - openocd/commitdiff
ftdi: Enable SWDIO output before sending data on it
authorJonas Norling <jonas.norling@cyanconnode.com>
Wed, 25 Oct 2017 09:33:06 +0000 (11:33 +0200)
committerSpencer Oliver <spen@spen-soft.co.uk>
Fri, 27 Oct 2017 10:48:36 +0000 (11:48 +0100)
The SWDIO buffer has to be enabled, by setting SWDIO_OE, for data on
SWDIO to reach the target. Explicitly do this before sending the
switch sequences for JTAG-to-SWD, etc.

This makes the code insensitive to the state of SWDIO_OE specified in
ftdi_layout_init. It used to work only on adapters with a non-inverted
SWDIO_OE inited to 1, or inverted SWDIO_OE inited to 0.

Change-Id: I4b9e520ac1c7ce2a437251a05fc036bc68de718e
Signed-off-by: Jonas Norling <jonas.norling@cyanconnode.com>
Reviewed-on: http://openocd.zylin.com/4270
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
src/jtag/drivers/ftdi.c

index 75a3ce43eddf6f497ed275fd0fde7fcba2bbce5c..32876bac5905bf5443995cf49d1c52fccebb6cca 100644 (file)
@@ -1218,14 +1218,17 @@ static int ftdi_swd_switch_seq(enum swd_special_seq seq)
        switch (seq) {
        case LINE_RESET:
                LOG_DEBUG("SWD line reset");
+               ftdi_swd_swdio_en(true);
                mpsse_clock_data_out(mpsse_ctx, swd_seq_line_reset, 0, swd_seq_line_reset_len, SWD_MODE);
                break;
        case JTAG_TO_SWD:
                LOG_DEBUG("JTAG-to-SWD");
+               ftdi_swd_swdio_en(true);
                mpsse_clock_data_out(mpsse_ctx, swd_seq_jtag_to_swd, 0, swd_seq_jtag_to_swd_len, SWD_MODE);
                break;
        case SWD_TO_JTAG:
                LOG_DEBUG("SWD-to-JTAG");
+               ftdi_swd_swdio_en(true);
                mpsse_clock_data_out(mpsse_ctx, swd_seq_swd_to_jtag, 0, swd_seq_swd_to_jtag_len, SWD_MODE);
                break;
        default: