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 <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/6006 Tested-by: jenkins
This commit is contained in:
parent
2dc9c1df81
commit
0b248e04c1
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue