David Brownell <david-b@pacbell.net>:

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
This commit is contained in:
zwelch 2009-06-16 00:23:00 +00:00
parent 03803a9d79
commit 5f9b74d055
4 changed files with 15 additions and 10 deletions

View File

@ -2314,8 +2314,9 @@ A TAP may also provide optional @var{configparams}:
@itemize @bullet @itemize @bullet
@item @code{-disable} (or @code{-enable}) @item @code{-disable} (or @code{-enable})
@*Use the @code{-disable} paramater to flag a TAP which is not @*Use the @code{-disable} parameter to flag a TAP which is not
linked in to the scan chain when it is declared. 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 You may use @code{-enable} to highlight the default state
(the TAP is linked in). (the TAP is linked in).
@xref{Enabling and Disabling TAPs}. @xref{Enabling and Disabling TAPs}.
@ -5079,7 +5080,7 @@ and @command{irscan} commands are:
@end itemize @end itemize
Note that only six of those states are fully ``stable'' in the 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 and a free-running JTAG clock. For all the
others, the next TCK transition changes to a new state. others, the next TCK transition changes to a new state.

View File

@ -792,6 +792,8 @@ static int jtag_reset_callback(enum jtag_event event, void *priv)
if (event == JTAG_TRST_ASSERTED) if (event == JTAG_TRST_ASSERTED)
{ {
tap->enabled = !tap->disabled_after_reset;
buf_set_ones(tap->cur_instr, tap->ir_length); buf_set_ones(tap->cur_instr, tap->ir_length);
tap->bypass = 1; tap->bypass = 1;
} }

View File

@ -151,8 +151,10 @@ struct jtag_tap_s
const char* tapname; const char* tapname;
const char* dotted_name; const char* dotted_name;
int abs_chain_position; int abs_chain_position;
/// Is this TAP enabled? /// Is this TAP disabled after JTAG reset?
int enabled; bool disabled_after_reset;
/// Is this TAP currently enabled?
bool enabled;
int ir_length; /**< size of instruction register */ int ir_length; /**< size of instruction register */
u32 ir_capture_value; u32 ir_capture_value;
u8* expected; /**< Capture-IR expected value */ u8* expected; /**< Capture-IR expected value */

View File

@ -359,9 +359,6 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params", LOG_DEBUG("Creating New Tap, Chip: %s, Tap: %s, Dotted: %s, %d params",
pTap->chip, pTap->tapname, pTap->dotted_name, goi->argc); pTap->chip, pTap->tapname, pTap->dotted_name, goi->argc);
/* default is enabled */
pTap->enabled = 1;
/* deal with options */ /* deal with options */
#define NTREQ_IRLEN 1 #define NTREQ_IRLEN 1
#define NTREQ_IRCAPTURE 2 #define NTREQ_IRCAPTURE 2
@ -379,10 +376,10 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
LOG_DEBUG("Processing option: %s", n->name ); LOG_DEBUG("Processing option: %s", n->name );
switch( n->value ){ switch( n->value ){
case NTAP_OPT_ENABLED: case NTAP_OPT_ENABLED:
pTap->enabled = 1; pTap->disabled_after_reset = false;
break; break;
case NTAP_OPT_DISABLED: case NTAP_OPT_DISABLED:
pTap->enabled = 0; pTap->disabled_after_reset = true;
break; break;
case NTAP_OPT_EXPECTED_ID: case NTAP_OPT_EXPECTED_ID:
{ {
@ -446,6 +443,9 @@ static int jim_newtap_cmd( Jim_GetOptInfo *goi )
} /* switch(n->value) */ } /* switch(n->value) */
} /* while( goi->argc ) */ } /* while( goi->argc ) */
/* default is enabled-after-reset */
pTap->enabled = !pTap->disabled_after_reset;
/* Did all the required option bits get cleared? */ /* Did all the required option bits get cleared? */
if (0 == reqbits) if (0 == reqbits)
{ {