This is an automated email from Gerrit.

Antonio Borneo ([email protected]) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/6006

-- gerrit

commit f73ca45beebf5a47f01ff68be452972fe6f1079c
Author: Antonio Borneo <[email protected]>
Date:   Thu Mar 5 17:00:50 2020 +0100

    driver/ftdi: skip trst in swd mode
    
    When using the adapter olimex arm-jtag-swd (to convert to SWD a
    JTAG-only FTDI adapter), the pin trst on JTAG side is re-used to
    control the direction of pin SWDIO on SWD side.
    There is a single reset API at adapter driver to assert/deassert
    either srst and/or trst. A request to assert/deassert srst can
    cause also trst to change value, hanging the SWD communication.
    
    In SWD mode, ignore the value passed to trst.
    
    Change-Id: I5fe1eed851177d405d77ae6079da9642dc1a08f1
    Signed-off-by: Antonio Borneo <[email protected]>

diff --git a/src/jtag/drivers/ftdi.c b/src/jtag/drivers/ftdi.c
index 4fa83ae..0b21b91 100644
--- a/src/jtag/drivers/ftdi.c
+++ b/src/jtag/drivers/ftdi.c
@@ -524,17 +524,19 @@ static int ftdi_reset(int trst, int srst)
 
        LOG_DEBUG_IO("reset trst: %i srst %i", trst, srst);
 
-       if (trst == 1) {
-               if (sig_ntrst)
-                       ftdi_set_signal(sig_ntrst, '0');
-               else
-                       LOG_ERROR("Can't assert TRST: nTRST signal is not 
defined");
-       } else if (sig_ntrst && jtag_get_reset_config() & RESET_HAS_TRST &&
-                       trst == 0) {
-               if (jtag_get_reset_config() & RESET_TRST_OPEN_DRAIN)
-                       ftdi_set_signal(sig_ntrst, 'z');
-               else
-                       ftdi_set_signal(sig_ntrst, '1');
+       if (!swd_mode) {
+               if (trst == 1) {
+                       if (sig_ntrst)
+                               ftdi_set_signal(sig_ntrst, '0');
+                       else
+                               LOG_ERROR("Can't assert TRST: nTRST signal is 
not defined");
+               } else if (sig_ntrst && jtag_get_reset_config() & 
RESET_HAS_TRST &&
+                               trst == 0) {
+                       if (jtag_get_reset_config() & RESET_TRST_OPEN_DRAIN)
+                               ftdi_set_signal(sig_ntrst, 'z');
+                       else
+                               ftdi_set_signal(sig_ntrst, '1');
+               }
        }
 
        if (srst == 1) {

-- 


_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to