summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jtag/core.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/jtag/core.c b/src/jtag/core.c
index e6bde518..f7d55b79 100644
--- a/src/jtag/core.c
+++ b/src/jtag/core.c
@@ -68,10 +68,12 @@ static const char *jtag_event_strings[] =
/*
* JTAG adapters must initialize with TRST and SRST de-asserted
- * (they're negative logic, so that means *high*)
+ * (they're negative logic, so that means *high*). But some
+ * hardware doesn't necessarily work that way ... so set things
+ * up so that jtag_init() always forces that state.
*/
-static int jtag_trst = 0;
-static int jtag_srst = 0;
+static int jtag_trst = -1;
+static int jtag_srst = -1;
/**
* List all TAPs that have been created.
@@ -1337,9 +1339,15 @@ int jtag_init_reset(struct command_context_s *cmd_ctx)
int jtag_init(struct command_context_s *cmd_ctx)
{
int retval;
+
if ((retval = jtag_interface_init(cmd_ctx)) != ERROR_OK)
return retval;
+ /* guard against oddball hardware: force resets to be inactive */
+ jtag_add_reset(0, 0);
+ if ((retval = jtag_execute_queue()) != ERROR_OK)
+ return retval;
+
if (Jim_Eval_Named(interp, "jtag_init", __FILE__, __LINE__) != JIM_OK)
return ERROR_FAIL;