aboutsummaryrefslogtreecommitdiff
path: root/src/jtag/core.c
diff options
context:
space:
mode:
authorSpencer Oliver <spen@spen-soft.co.uk>2012-11-13 12:02:26 +0000
committerFreddie Chopin <freddie.chopin@gmail.com>2012-12-10 16:16:35 +0000
commit67a848424b94a2508a81f651adf32b279fa79b11 (patch)
tree9ca4118e7a115d405b761957c0fe1105ff425123 /src/jtag/core.c
parentc91dbd41ba5490b1b63617bab42624e45f5cd3ad (diff)
downloadriscv-openocd-67a848424b94a2508a81f651adf32b279fa79b11.zip
riscv-openocd-67a848424b94a2508a81f651adf32b279fa79b11.tar.gz
riscv-openocd-67a848424b94a2508a81f651adf32b279fa79b11.tar.bz2
jtag: enable connect under reset
Currently if the target supports srst_nogate we wait until target assert_reset until we get a chance to assert the srst. However sometimes we will not get this far if the target has already failed the jtag_examine_chain. This has been tested on targets that support this behaviour (STM32 and STR9). Change-Id: Ibcf7584b137b472f31ba6ddd5cd99d848c5508d1 Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/971 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com> Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
Diffstat (limited to 'src/jtag/core.c')
-rw-r--r--src/jtag/core.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c
index 5d5803a..9f1e4cf 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -1549,7 +1549,17 @@ int jtag_init_reset(struct command_context *cmd_ctx)
if ((jtag_reset_config & RESET_SRST_PULLS_TRST) == 0)
jtag_add_reset(0, 1);
}
- jtag_add_reset(0, 0);
+
+ /* some targets enable us to connect with srst asserted */
+ if (jtag_reset_config & RESET_CNCT_UNDER_SRST) {
+ if (jtag_reset_config & RESET_SRST_NO_GATING)
+ jtag_add_reset(0, 1);
+ else {
+ LOG_WARNING("\'srst_nogate\' reset_config option is required");
+ jtag_add_reset(0, 0);
+ }
+ } else
+ jtag_add_reset(0, 0);
retval = jtag_execute_queue();
if (retval != ERROR_OK)
return retval;
@@ -1572,6 +1582,14 @@ int jtag_init(struct command_context *cmd_ctx)
/* guard against oddball hardware: force resets to be inactive */
jtag_add_reset(0, 0);
+
+ /* some targets enable us to connect with srst asserted */
+ if (jtag_reset_config & RESET_CNCT_UNDER_SRST) {
+ if (jtag_reset_config & RESET_SRST_NO_GATING)
+ jtag_add_reset(0, 1);
+ else
+ LOG_WARNING("\'srst_nogate\' reset_config option is required");
+ }
retval = jtag_execute_queue();
if (retval != ERROR_OK)
return retval;