drivers: cmsis-dap: fix connection in JTAG mode 97/4697/2
authorAntonio Borneo <borneo.antonio@gmail.com>
Mon, 8 Oct 2018 14:42:10 +0000 (16:42 +0200)
committerMatthias Welwarsky <matthias@welwarsky.de>
Tue, 9 Oct 2018 07:35:34 +0000 (08:35 +0100)
commit06589d2de48556f5216e3e671e656f4fd9069b43
treefdf4666e7d8b18c313d99d30423d9d8a05f88145
parent76ee93a81db72d16cc2e446f6f43411de5d6e8c2
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
src/jtag/drivers/cmsis_dap_usb.c