diff options
author | Spencer Oliver <spen@spen-soft.co.uk> | 2012-11-13 12:02:26 +0000 |
---|---|---|
committer | Freddie Chopin <freddie.chopin@gmail.com> | 2012-12-10 16:16:35 +0000 |
commit | 67a848424b94a2508a81f651adf32b279fa79b11 (patch) | |
tree | 9ca4118e7a115d405b761957c0fe1105ff425123 /src | |
parent | c91dbd41ba5490b1b63617bab42624e45f5cd3ad (diff) |
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')
-rw-r--r-- | src/jtag/core.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c index 5d5803a3..9f1e4cf0 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; |