diff options
author | Antonio Borneo <borneo.antonio@gmail.com> | 2018-10-08 16:42:10 +0200 |
---|---|---|
committer | Matthias Welwarsky <matthias@welwarsky.de> | 2018-10-09 08:35:34 +0100 |
commit | 06589d2de48556f5216e3e671e656f4fd9069b43 (patch) | |
tree | fdf4666e7d8b18c313d99d30423d9d8a05f88145 /src | |
parent | 76ee93a81db72d16cc2e446f6f43411de5d6e8c2 (diff) | |
download | riscv-openocd-06589d2de48556f5216e3e671e656f4fd9069b43.zip riscv-openocd-06589d2de48556f5216e3e671e656f4fd9069b43.tar.gz riscv-openocd-06589d2de48556f5216e3e671e656f4fd9069b43.tar.bz2 |
drivers: cmsis-dap: fix connection in JTAG mode
Commit 5aceec24122bc222896cfcfd91f7f082f630ac83 ("drivers:
cmsis-dap: pull up common connect code") breaks the driver and it
cannot connect anymore in JTAG mode.
The issue is caused in cmsis_dap_init() by anticipating the call to
cmsis_dap_usb_open(), which then sets cmsis_dap_handle and makes the
following test to always fail.
Actually the original code was quite tricky:
if (swd_mode)
do something that also sets cmsis_dap_handle;
if (cmsis_dap_handle == NULL)
do something for !swd_mode;
Convert the sequence of tricky "if"s in a single "if-then-else" to
handle clearly the cases swd_mode and !swd_mode.
Change-Id: I359a23bf26a3edc2461f4352daa0be83e78868f7
Fixes: 5aceec24122b ("drivers: cmsis-dap: pull up common connect code")
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: http://openocd.zylin.com/4697
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Tested-by: jenkins
Diffstat (limited to 'src')
-rw-r--r-- | src/jtag/drivers/cmsis_dap_usb.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/jtag/drivers/cmsis_dap_usb.c b/src/jtag/drivers/cmsis_dap_usb.c index 4ee4836..9e723b5 100644 --- a/src/jtag/drivers/cmsis_dap_usb.c +++ b/src/jtag/drivers/cmsis_dap_usb.c @@ -895,9 +895,7 @@ static int cmsis_dap_init(void) retval = cmsis_dap_swd_open(); if (retval != ERROR_OK) return retval; - } - - if (cmsis_dap_handle == NULL) { + } else { /* Connect in JTAG mode */ if (!(cmsis_dap_handle->caps & INFO_CAPS_JTAG)) { LOG_ERROR("CMSIS-DAP: JTAG not supported"); |