swd: Add support for connect_assert_srst for SWD.

Today the reset option for connect_assert_srst is not done for SWD.
This patch adds this to SWD and make it possible to connect to targets which might disable JTAG interface when running.

Change-Id: Ib89f7cf59b628e8f0b5fca9dd9e362e383c4b99f
Signed-off-by: Fredrik Hederstierna <fredrik@hederstierna.com>
Reviewed-on: http://openocd.zylin.com/3018
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
__archive__
Fredrik Hederstierna 2015-10-15 06:49:58 +02:00 committed by Andreas Fritiofson
parent 12ff09f7f2
commit 12e4a2a220
1 changed files with 14 additions and 0 deletions

View File

@ -107,6 +107,18 @@ static int swd_connect(struct adiv5_dap *dap)
* MUST READ DPIDR
*/
/* Check if we should reset srst already when connecting, but not if reconnecting. */
if (!dap->do_reconnect) {
enum reset_types jtag_reset_config = jtag_get_reset_config();
if (jtag_reset_config & RESET_CNCT_UNDER_SRST) {
if (jtag_reset_config & RESET_SRST_NO_GATING)
swd_add_reset(1);
else
LOG_WARNING("\'srst_nogate\' reset_config option is required");
}
}
/* Note, debugport_init() does setup too */
jtag_interface->swd->switch_seq(JTAG_TO_SWD);
@ -412,6 +424,8 @@ static int swd_init(struct command_context *ctx)
/* Force the DAP's ops vector for SWD mode.
* messy - is there a better way? */
arm->dap->ops = &swd_dap_ops;
/* First connect after init is not reconnecting. */
dap->do_reconnect = false;
return swd_connect(dap);
}