mips: support connecting under reset
Some targets support connecting while the target's srst is asserted. Tested on pic32 family. Change-Id: I0d20c40af6d031d1306043893e95e61f484c0a87 Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/608 Tested-by: jenkins
This commit is contained in:
parent
caeb057205
commit
57260831dd
|
@ -222,15 +222,22 @@ static int mips_m4k_assert_reset(struct target *target)
|
||||||
{
|
{
|
||||||
struct mips_m4k_common *mips_m4k = target_to_m4k(target);
|
struct mips_m4k_common *mips_m4k = target_to_m4k(target);
|
||||||
struct mips_ejtag *ejtag_info = &mips_m4k->mips32.ejtag_info;
|
struct mips_ejtag *ejtag_info = &mips_m4k->mips32.ejtag_info;
|
||||||
int assert_srst = 1;
|
|
||||||
|
|
||||||
LOG_DEBUG("target->state: %s",
|
LOG_DEBUG("target->state: %s",
|
||||||
target_state_name(target));
|
target_state_name(target));
|
||||||
|
|
||||||
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
enum reset_types jtag_reset_config = jtag_get_reset_config();
|
||||||
|
|
||||||
if (!(jtag_reset_config & RESET_HAS_SRST))
|
/* some cores support connecting while srst is asserted
|
||||||
assert_srst = 0;
|
* use that mode is it has been configured */
|
||||||
|
|
||||||
|
bool srst_asserted = false;
|
||||||
|
|
||||||
|
if (!(jtag_reset_config & RESET_SRST_PULLS_TRST) &&
|
||||||
|
(jtag_reset_config & RESET_SRST_NO_GATING)) {
|
||||||
|
jtag_add_reset(0, 1);
|
||||||
|
srst_asserted = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (target->reset_halt) {
|
if (target->reset_halt) {
|
||||||
/* use hardware to catch reset */
|
/* use hardware to catch reset */
|
||||||
|
@ -238,11 +245,11 @@ static int mips_m4k_assert_reset(struct target *target)
|
||||||
} else
|
} else
|
||||||
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_NORMALBOOT);
|
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_NORMALBOOT);
|
||||||
|
|
||||||
if (assert_srst) {
|
if (jtag_reset_config & RESET_HAS_SRST) {
|
||||||
/* here we should issue a srst only, but we may have to assert trst as well */
|
/* here we should issue a srst only, but we may have to assert trst as well */
|
||||||
if (jtag_reset_config & RESET_SRST_PULLS_TRST)
|
if (jtag_reset_config & RESET_SRST_PULLS_TRST)
|
||||||
jtag_add_reset(1, 1);
|
jtag_add_reset(1, 1);
|
||||||
else
|
else if (!srst_asserted)
|
||||||
jtag_add_reset(0, 1);
|
jtag_add_reset(0, 1);
|
||||||
} else {
|
} else {
|
||||||
if (mips_m4k->is_pic32mx) {
|
if (mips_m4k->is_pic32mx) {
|
||||||
|
|
Loading…
Reference in New Issue