diff options
author | Fredrik Hederstierna <fredrik@hederstierna.com> | 2015-10-15 06:49:58 +0200 |
---|---|---|
committer | Andreas Fritiofson <andreas.fritiofson@gmail.com> | 2016-07-04 23:44:02 +0100 |
commit | 12e4a2a220de4ddca5a429432b089471ee9bc28a (patch) | |
tree | 35ed4d1f1a6055f99d940f5988e570b0c59f04fd /src | |
parent | 12ff09f7f27a707fe42226262f55b8ce8351cbf9 (diff) | |
download | riscv-openocd-12e4a2a220de4ddca5a429432b089471ee9bc28a.zip riscv-openocd-12e4a2a220de4ddca5a429432b089471ee9bc28a.tar.gz riscv-openocd-12e4a2a220de4ddca5a429432b089471ee9bc28a.tar.bz2 |
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/target/adi_v5_swd.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/target/adi_v5_swd.c b/src/target/adi_v5_swd.c index 60223f9..41ddbd7 100644 --- a/src/target/adi_v5_swd.c +++ b/src/target/adi_v5_swd.c @@ -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); } |