Doc update: say "jtag newtap ... -disable" records the
state after exiting the RESET state, matching the only
implementation we're working with so far (TI ICEpick-C).
Matching code updates. Now we can be sure that the
"enabled" flag value is correct after JTAG resets.
git-svn-id: svn://svn.berlios.de/openocd/trunk@2246
b42882b7-edfa-0310-969c-
e2dbd0fdcd60
@itemize @bullet
@item @code{-disable} (or @code{-enable})
-@*Use the @code{-disable} paramater to flag a TAP which is not
-linked in to the scan chain when it is declared.
+@*Use the @code{-disable} parameter to flag a TAP which is not
+linked in to the scan chain after a reset using either TRST
+or the JTAG state machine's @sc{reset} state.
You may use @code{-enable} to highlight the default state
(the TAP is linked in).
@xref{Enabling and Disabling TAPs}.
@end itemize
Note that only six of those states are fully ``stable'' in the
-face of TMS fixed (usually low)
+face of TMS fixed (low except for @sc{reset})
and a free-running JTAG clock. For all the
others, the next TCK transition changes to a new state.
if (event == JTAG_TRST_ASSERTED)
{
+ tap->enabled = !tap->disabled_after_reset;
+
buf_set_ones(tap->cur_instr, tap->ir_length);
tap->bypass = 1;
}
const char* tapname;
const char* dotted_name;
int abs_chain_position;
- /// Is this TAP enabled?
- int enabled;
+ /// Is this TAP disabled after JTAG reset?
+ bool disabled_after_reset;
+ /// Is this TAP currently enabled?
+ bool enabled;
int ir_length; /**< size of instruction register */
u32 ir_capture_value;
u8* expected; /**< Capture-IR expected value */
LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params",
pTap->chip, pTap->tapname, pTap->dotted_name, goi->argc);
- /* default is enabled */
- pTap->enabled = 1;
-
/* deal with options */
#define NTREQ_IRLEN 1
#define NTREQ_IRCAPTURE 2
LOG_DEBUG("Processing option: %s", n->name );
switch( n->value ){
case NTAP_OPT_ENABLED:
- pTap->enabled = 1;
+ pTap->disabled_after_reset = false;
break;
case NTAP_OPT_DISABLED:
- pTap->enabled = 0;
+ pTap->disabled_after_reset = true;
break;
case NTAP_OPT_EXPECTED_ID:
{
} /* switch(n->value) */
} /* while( goi->argc ) */
+ /* default is enabled-after-reset */
+ pTap->enabled = !pTap->disabled_after_reset;
+
/* Did all the required option bits get cleared? */
if (0 == reqbits)
{