Change tap_state naming to be consistent with SVF documentation.

Courtesy of Dick Hollenbeck <dick@softplc.com>


git-svn-id: svn://svn.berlios.de/openocd/trunk@1232 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
kc8apf 2008-12-13 06:25:50 +00:00
parent 6c27550f6e
commit c45de8073d
30 changed files with 1463 additions and 1468 deletions

View File

@ -145,7 +145,7 @@ u8 str9xpec_isc_status(jtag_tap_t *tap)
scan_field_t field; scan_field_t field;
u8 status; u8 status;
if (str9xpec_set_instr(tap, ISC_NOOP, TAP_PI) != ERROR_OK) if (str9xpec_set_instr(tap, ISC_NOOP, TAP_IRPAUSE) != ERROR_OK)
return ISC_STATUS_ERROR; return ISC_STATUS_ERROR;
field.tap = tap; field.tap = tap;
@ -158,7 +158,7 @@ u8 str9xpec_isc_status(jtag_tap_t *tap)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_RTI); jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_execute_queue(); jtag_execute_queue();
LOG_DEBUG("status: 0x%2.2x", status); LOG_DEBUG("status: 0x%2.2x", status);
@ -181,7 +181,7 @@ int str9xpec_isc_enable(struct flash_bank_s *bank)
return ERROR_OK; return ERROR_OK;
/* enter isc mode */ /* enter isc mode */
if (str9xpec_set_instr(tap, ISC_ENABLE, TAP_RTI) != ERROR_OK) if (str9xpec_set_instr(tap, ISC_ENABLE, TAP_IDLE) != ERROR_OK)
return ERROR_TARGET_INVALID; return ERROR_TARGET_INVALID;
/* check ISC status */ /* check ISC status */
@ -207,7 +207,7 @@ int str9xpec_isc_disable(struct flash_bank_s *bank)
if (!str9xpec_info->isc_enable) if (!str9xpec_info->isc_enable)
return ERROR_OK; return ERROR_OK;
if (str9xpec_set_instr(tap, ISC_DISABLE, TAP_RTI) != ERROR_OK) if (str9xpec_set_instr(tap, ISC_DISABLE, TAP_IDLE) != ERROR_OK)
return ERROR_TARGET_INVALID; return ERROR_TARGET_INVALID;
/* delay to handle aborts */ /* delay to handle aborts */
@ -238,7 +238,7 @@ int str9xpec_read_config(struct flash_bank_s *bank)
LOG_DEBUG("ISC_CONFIGURATION"); LOG_DEBUG("ISC_CONFIGURATION");
/* execute ISC_CONFIGURATION command */ /* execute ISC_CONFIGURATION command */
str9xpec_set_instr(tap, ISC_CONFIGURATION, TAP_PI); str9xpec_set_instr(tap, ISC_CONFIGURATION, TAP_IRPAUSE);
field.tap = tap; field.tap = tap;
field.num_bits = 64; field.num_bits = 64;
@ -250,7 +250,7 @@ int str9xpec_read_config(struct flash_bank_s *bank)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_RTI); jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_execute_queue(); jtag_execute_queue();
status = str9xpec_isc_status(tap); status = str9xpec_isc_status(tap);
@ -390,7 +390,7 @@ int str9xpec_blank_check(struct flash_bank_s *bank, int first, int last)
} }
/* execute ISC_BLANK_CHECK command */ /* execute ISC_BLANK_CHECK command */
str9xpec_set_instr(tap, ISC_BLANK_CHECK, TAP_PI); str9xpec_set_instr(tap, ISC_BLANK_CHECK, TAP_IRPAUSE);
field.tap = tap; field.tap = tap;
field.num_bits = 64; field.num_bits = 64;
@ -402,7 +402,7 @@ int str9xpec_blank_check(struct flash_bank_s *bank, int first, int last)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_RTI); jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_add_sleep(40000); jtag_add_sleep(40000);
/* read blank check result */ /* read blank check result */
@ -416,7 +416,7 @@ int str9xpec_blank_check(struct flash_bank_s *bank, int first, int last)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_PI); jtag_add_dr_scan(1, &field, TAP_IRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
status = str9xpec_isc_status(tap); status = str9xpec_isc_status(tap);
@ -506,7 +506,7 @@ int str9xpec_erase_area(struct flash_bank_s *bank, int first, int last)
LOG_DEBUG("ISC_ERASE"); LOG_DEBUG("ISC_ERASE");
/* execute ISC_ERASE command */ /* execute ISC_ERASE command */
str9xpec_set_instr(tap, ISC_ERASE, TAP_PI); str9xpec_set_instr(tap, ISC_ERASE, TAP_IRPAUSE);
field.tap = tap; field.tap = tap;
field.num_bits = 64; field.num_bits = 64;
@ -518,7 +518,7 @@ int str9xpec_erase_area(struct flash_bank_s *bank, int first, int last)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_RTI); jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_execute_queue(); jtag_execute_queue();
jtag_add_sleep(10); jtag_add_sleep(10);
@ -569,9 +569,9 @@ int str9xpec_lock_device(struct flash_bank_s *bank)
str9xpec_set_address(bank, 0x80); str9xpec_set_address(bank, 0x80);
/* execute ISC_PROGRAM command */ /* execute ISC_PROGRAM command */
str9xpec_set_instr(tap, ISC_PROGRAM_SECURITY, TAP_RTI); str9xpec_set_instr(tap, ISC_PROGRAM_SECURITY, TAP_IDLE);
str9xpec_set_instr(tap, ISC_NOOP, TAP_PI); str9xpec_set_instr(tap, ISC_NOOP, TAP_IRPAUSE);
do { do {
field.tap = tap; field.tap = tap;
@ -658,7 +658,7 @@ int str9xpec_set_address(struct flash_bank_s *bank, u8 sector)
tap = str9xpec_info->tap; tap = str9xpec_info->tap;
/* set flash controller address */ /* set flash controller address */
str9xpec_set_instr(tap, ISC_ADDRESS_SHIFT, TAP_PI); str9xpec_set_instr(tap, ISC_ADDRESS_SHIFT, TAP_IRPAUSE);
field.tap = tap; field.tap = tap;
field.num_bits = 8; field.num_bits = 8;
@ -747,7 +747,7 @@ int str9xpec_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
while (dwords_remaining > 0) while (dwords_remaining > 0)
{ {
str9xpec_set_instr(tap, ISC_PROGRAM, TAP_PI); str9xpec_set_instr(tap, ISC_PROGRAM, TAP_IRPAUSE);
field.tap = tap; field.tap = tap;
field.num_bits = 64; field.num_bits = 64;
@ -759,12 +759,12 @@ int str9xpec_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_RTI); jtag_add_dr_scan(1, &field, TAP_IDLE);
/* small delay before polling */ /* small delay before polling */
jtag_add_sleep(50); jtag_add_sleep(50);
str9xpec_set_instr(tap, ISC_NOOP, TAP_PI); str9xpec_set_instr(tap, ISC_NOOP, TAP_IRPAUSE);
do { do {
field.tap = tap; field.tap = tap;
@ -807,7 +807,7 @@ int str9xpec_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
bytes_written++; bytes_written++;
} }
str9xpec_set_instr(tap, ISC_PROGRAM, TAP_PI); str9xpec_set_instr(tap, ISC_PROGRAM, TAP_IRPAUSE);
field.tap = tap; field.tap = tap;
field.num_bits = 64; field.num_bits = 64;
@ -819,12 +819,12 @@ int str9xpec_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_RTI); jtag_add_dr_scan(1, &field, TAP_IDLE);
/* small delay before polling */ /* small delay before polling */
jtag_add_sleep(50); jtag_add_sleep(50);
str9xpec_set_instr(tap, ISC_NOOP, TAP_PI); str9xpec_set_instr(tap, ISC_NOOP, TAP_IRPAUSE);
do { do {
field.tap = tap; field.tap = tap;
@ -889,7 +889,7 @@ int str9xpec_handle_part_id_command(struct command_context_s *cmd_ctx, char *cmd
buffer = calloc(CEIL(32, 8), 1); buffer = calloc(CEIL(32, 8), 1);
str9xpec_set_instr(tap, ISC_IDCODE, TAP_PI); str9xpec_set_instr(tap, ISC_IDCODE, TAP_IRPAUSE);
field.tap = tap; field.tap = tap;
field.num_bits = 32; field.num_bits = 32;
@ -901,7 +901,7 @@ int str9xpec_handle_part_id_command(struct command_context_s *cmd_ctx, char *cmd
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_RTI); jtag_add_dr_scan(1, &field, TAP_IDLE);
jtag_execute_queue(); jtag_execute_queue();
idcode = buf_get_u32(buffer, 0, 32); idcode = buf_get_u32(buffer, 0, 32);
@ -1014,7 +1014,7 @@ int str9xpec_write_options(struct flash_bank_s *bank)
str9xpec_set_address(bank, 0x50); str9xpec_set_address(bank, 0x50);
/* execute ISC_PROGRAM command */ /* execute ISC_PROGRAM command */
str9xpec_set_instr(tap, ISC_PROGRAM, TAP_PI); str9xpec_set_instr(tap, ISC_PROGRAM, TAP_IRPAUSE);
field.tap = tap; field.tap = tap;
field.num_bits = 64; field.num_bits = 64;
@ -1026,12 +1026,12 @@ int str9xpec_write_options(struct flash_bank_s *bank)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_dr_scan(1, &field, TAP_RTI); jtag_add_dr_scan(1, &field, TAP_IDLE);
/* small delay before polling */ /* small delay before polling */
jtag_add_sleep(50); jtag_add_sleep(50);
str9xpec_set_instr(tap, ISC_NOOP, TAP_PI); str9xpec_set_instr(tap, ISC_NOOP, TAP_IRPAUSE);
do { do {
field.tap = tap; field.tap = tap;
@ -1303,7 +1303,7 @@ int str9xpec_handle_flash_enable_turbo_command(struct command_context_s *cmd_ctx
} }
/* enable turbo mode - TURBO-PROG-ENABLE */ /* enable turbo mode - TURBO-PROG-ENABLE */
str9xpec_set_instr(tap2, 0xD, TAP_RTI); str9xpec_set_instr(tap2, 0xD, TAP_IDLE);
if ((retval = jtag_execute_queue()) != ERROR_OK) if ((retval = jtag_execute_queue()) != ERROR_OK)
return retval; return retval;
@ -1339,7 +1339,7 @@ int str9xpec_handle_flash_disable_turbo_command(struct command_context_s *cmd_ct
return ERROR_FAIL; return ERROR_FAIL;
/* exit turbo mode via TLR */ /* exit turbo mode via TLR */
str9xpec_set_instr(tap, ISC_NOOP, TAP_TLR); str9xpec_set_instr(tap, ISC_NOOP, TAP_RESET);
jtag_execute_queue(); jtag_execute_queue();
/* restore previous scan chain */ /* restore previous scan chain */

View File

@ -215,9 +215,9 @@ void amt_jtagaccel_runtest(int num_cycles)
enum tap_state saved_end_state = end_state; enum tap_state saved_end_state = end_state;
/* only do a state_move when we're not already in RTI */ /* only do a state_move when we're not already in RTI */
if (cur_state != TAP_RTI) if (cur_state != TAP_IDLE)
{ {
amt_jtagaccel_end_state(TAP_RTI); amt_jtagaccel_end_state(TAP_IDLE);
amt_jtagaccel_state_move(); amt_jtagaccel_state_move();
} }
@ -251,9 +251,9 @@ void amt_jtagaccel_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_s
u8 tms_scan[2]; u8 tms_scan[2];
if (ir_scan) if (ir_scan)
amt_jtagaccel_end_state(TAP_SI); amt_jtagaccel_end_state(TAP_IRSHIFT);
else else
amt_jtagaccel_end_state(TAP_SD); amt_jtagaccel_end_state(TAP_DRSHIFT);
amt_jtagaccel_state_move(); amt_jtagaccel_state_move();
amt_jtagaccel_end_state(saved_end_state); amt_jtagaccel_end_state(saved_end_state);
@ -351,7 +351,7 @@ int amt_jtagaccel_execute_queue(void)
#endif #endif
if (cmd->cmd.reset->trst == 1) if (cmd->cmd.reset->trst == 1)
{ {
cur_state = TAP_TLR; cur_state = TAP_RESET;
} }
amt_jtagaccel_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); amt_jtagaccel_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
break; break;

View File

@ -46,11 +46,11 @@ bitbang_interface_t *bitbang_interface;
* *
* If someone can submit a patch with an explanation it will be greatly * If someone can submit a patch with an explanation it will be greatly
* appreciated, but as far as I can tell (ØH) DCLK is generated upon * appreciated, but as far as I can tell (ØH) DCLK is generated upon
* clk=0 in TAP_RTI. Good luck deducing that from the ARM documentation! * clk=0 in TAP_IDLE. Good luck deducing that from the ARM documentation!
* The ARM documentation uses the term "DCLK is asserted while in the TAP_RTI * The ARM documentation uses the term "DCLK is asserted while in the TAP_IDLE
* state". With hardware there is no such thing as *while* in a state. There * state". With hardware there is no such thing as *while* in a state. There
* are only edges. So clk => 0 is in fact a very subtle state transition that * are only edges. So clk => 0 is in fact a very subtle state transition that
* happens *while* in the TAP_RTI state. "#&¤"#¤&"#&"#& * happens *while* in the TAP_IDLE state. "#&¤"#¤&"#&"#&
* *
* For "reset halt" the last thing that happens before srst is asserted * For "reset halt" the last thing that happens before srst is asserted
* is that the breakpoint is set up. If DCLK is not wiggled one last * is that the breakpoint is set up. If DCLK is not wiggled one last
@ -134,9 +134,9 @@ void bitbang_runtest(int num_cycles)
enum tap_state saved_end_state = end_state; enum tap_state saved_end_state = end_state;
/* only do a state_move when we're not already in RTI */ /* only do a state_move when we're not already in RTI */
if (cur_state != TAP_RTI) if (cur_state != TAP_IDLE)
{ {
bitbang_end_state(TAP_RTI); bitbang_end_state(TAP_IDLE);
bitbang_state_move(); bitbang_state_move();
} }
@ -159,12 +159,12 @@ void bitbang_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
enum tap_state saved_end_state = end_state; enum tap_state saved_end_state = end_state;
int bit_cnt; int bit_cnt;
if (!((!ir_scan && (cur_state == TAP_SD)) || (ir_scan && (cur_state == TAP_SI)))) if (!((!ir_scan && (cur_state == TAP_DRSHIFT)) || (ir_scan && (cur_state == TAP_IRSHIFT))))
{ {
if (ir_scan) if (ir_scan)
bitbang_end_state(TAP_SI); bitbang_end_state(TAP_IRSHIFT);
else else
bitbang_end_state(TAP_SD); bitbang_end_state(TAP_DRSHIFT);
bitbang_state_move(); bitbang_state_move();
bitbang_end_state(saved_end_state); bitbang_end_state(saved_end_state);
@ -202,7 +202,7 @@ void bitbang_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
} }
} }
/* TAP_SD & TAP_SI are illegal end states, so we always transition to the pause /* TAP_DRSHIFT & TAP_IRSHIFT are illegal end states, so we always transition to the pause
* state which is a legal stable state from which statemove will work. * state which is a legal stable state from which statemove will work.
* *
* Exit1 -> Pause * Exit1 -> Pause
@ -212,9 +212,9 @@ void bitbang_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
bitbang_interface->write(CLOCK_IDLE(), 0, 0); bitbang_interface->write(CLOCK_IDLE(), 0, 0);
if (ir_scan) if (ir_scan)
cur_state = TAP_PI; cur_state = TAP_IRPAUSE;
else else
cur_state = TAP_PD; cur_state = TAP_DRPAUSE;
if (cur_state != end_state) if (cur_state != end_state)
bitbang_state_move(); bitbang_state_move();
@ -259,7 +259,7 @@ int bitbang_execute_queue(void)
#endif #endif
if ((cmd->cmd.reset->trst == 1) || (cmd->cmd.reset->srst && (jtag_reset_config & RESET_SRST_PULLS_TRST))) if ((cmd->cmd.reset->trst == 1) || (cmd->cmd.reset->srst && (jtag_reset_config & RESET_SRST_PULLS_TRST)))
{ {
cur_state = TAP_TLR; cur_state = TAP_RESET;
} }
bitbang_interface->reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); bitbang_interface->reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
break; break;

View File

@ -195,7 +195,7 @@ void bitq_runtest(int num_cycles)
int i; int i;
/* only do a state_move when we're not already in RTI */ /* only do a state_move when we're not already in RTI */
if (cur_state != TAP_RTI) bitq_state_move(TAP_RTI); if (cur_state != TAP_IDLE) bitq_state_move(TAP_IDLE);
/* execute num_cycles */ /* execute num_cycles */
for (i = 0; i < num_cycles; i++) for (i = 0; i < num_cycles; i++)
@ -240,8 +240,8 @@ void bitq_scan_field(scan_field_t *field, int pause)
if (pause) { if (pause) {
bitq_io(0,0,0); bitq_io(0,0,0);
if (cur_state==TAP_SI) cur_state=TAP_PI; if (cur_state==TAP_IRSHIFT) cur_state=TAP_IRPAUSE;
else if (cur_state==TAP_SD) cur_state=TAP_PD; else if (cur_state==TAP_DRSHIFT) cur_state=TAP_DRPAUSE;
} }
} }
@ -250,8 +250,8 @@ void bitq_scan(scan_command_t *cmd)
{ {
int i; int i;
if (cmd->ir_scan) bitq_state_move(TAP_SI); if (cmd->ir_scan) bitq_state_move(TAP_IRSHIFT);
else bitq_state_move(TAP_SD); else bitq_state_move(TAP_DRSHIFT);
for (i=0; i < cmd->num_fields-1; i++) for (i=0; i < cmd->num_fields-1; i++)
bitq_scan_field(&cmd->fields[i], 0); bitq_scan_field(&cmd->fields[i], 0);
@ -285,7 +285,7 @@ int bitq_execute_queue(void)
#endif #endif
if ((cmd->cmd.reset->trst == 1) || (cmd->cmd.reset->srst && (jtag_reset_config & RESET_SRST_PULLS_TRST))) if ((cmd->cmd.reset->trst == 1) || (cmd->cmd.reset->srst && (jtag_reset_config & RESET_SRST_PULLS_TRST)))
{ {
cur_state = TAP_TLR; cur_state = TAP_RESET;
} }
bitq_interface->reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); bitq_interface->reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
if (bitq_interface->in_rdy()) bitq_in_proc(); if (bitq_interface->in_rdy()) bitq_in_proc();

View File

@ -547,7 +547,7 @@ void ft2232_add_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size
int cur_byte = 0; int cur_byte = 0;
int last_bit; int last_bit;
if (!((!ir_scan && (cur_state == TAP_SD)) || (ir_scan && (cur_state == TAP_SI)))) if (!((!ir_scan && (cur_state == TAP_DRSHIFT)) || (ir_scan && (cur_state == TAP_IRSHIFT))))
{ {
/* command "Clock Data to TMS/CS Pin (no Read)" */ /* command "Clock Data to TMS/CS Pin (no Read)" */
BUFFER_ADD = 0x4b; BUFFER_ADD = 0x4b;
@ -556,13 +556,13 @@ void ft2232_add_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size
/* TMS data bits */ /* TMS data bits */
if (ir_scan) if (ir_scan)
{ {
BUFFER_ADD = TAP_MOVE(cur_state, TAP_SI); BUFFER_ADD = TAP_MOVE(cur_state, TAP_IRSHIFT);
cur_state = TAP_SI; cur_state = TAP_IRSHIFT;
} }
else else
{ {
BUFFER_ADD = TAP_MOVE(cur_state, TAP_SD); BUFFER_ADD = TAP_MOVE(cur_state, TAP_DRSHIFT);
cur_state = TAP_SD; cur_state = TAP_DRSHIFT;
} }
/* LOG_DEBUG("added TMS scan (no read)"); */ /* LOG_DEBUG("added TMS scan (no read)"); */
} }
@ -641,8 +641,8 @@ void ft2232_add_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size
BUFFER_ADD = buffer[cur_byte]; BUFFER_ADD = buffer[cur_byte];
} }
if ((ir_scan && (end_state == TAP_SI)) || if ((ir_scan && (end_state == TAP_IRSHIFT)) ||
(!ir_scan && (end_state == TAP_SD))) (!ir_scan && (end_state == TAP_DRSHIFT)))
{ {
if (type == SCAN_IO) if (type == SCAN_IO)
{ {
@ -705,15 +705,15 @@ int ft2232_large_scan(scan_command_t *cmd, enum scan_type type, u8 *buffer, int
exit(-1); exit(-1);
} }
if (cur_state != TAP_SD) if (cur_state != TAP_DRSHIFT)
{ {
/* command "Clock Data to TMS/CS Pin (no Read)" */ /* command "Clock Data to TMS/CS Pin (no Read)" */
BUFFER_ADD = 0x4b; BUFFER_ADD = 0x4b;
/* scan 7 bit */ /* scan 7 bit */
BUFFER_ADD = 0x6; BUFFER_ADD = 0x6;
/* TMS data bits */ /* TMS data bits */
BUFFER_ADD = TAP_MOVE(cur_state, TAP_SD); BUFFER_ADD = TAP_MOVE(cur_state, TAP_DRSHIFT);
cur_state = TAP_SD; cur_state = TAP_DRSHIFT;
} }
if ((retval = ft2232_write(ft2232_buffer, ft2232_buffer_size, &bytes_written)) != ERROR_OK) if ((retval = ft2232_write(ft2232_buffer, ft2232_buffer_size, &bytes_written)) != ERROR_OK)
@ -824,7 +824,7 @@ int ft2232_large_scan(scan_command_t *cmd, enum scan_type type, u8 *buffer, int
thisrun_read += 2; thisrun_read += 2;
} }
if (end_state == TAP_SD) if (end_state == TAP_DRSHIFT)
{ {
if (type == SCAN_IO) if (type == SCAN_IO)
{ {
@ -897,7 +897,7 @@ int ft2232_predict_scan_out(int scan_size, enum scan_type type)
int predicted_size = 3; int predicted_size = 3;
int num_bytes = (scan_size - 1) / 8; int num_bytes = (scan_size - 1) / 8;
if (cur_state != TAP_SD) if (cur_state != TAP_DRSHIFT)
predicted_size += 3; predicted_size += 3;
if (type == SCAN_IN) /* only from device to host */ if (type == SCAN_IN) /* only from device to host */
@ -1052,7 +1052,7 @@ void axm0432_jtag_reset(int trst, int srst)
{ {
if (trst == 1) if (trst == 1)
{ {
cur_state = TAP_TLR; cur_state = TAP_RESET;
high_output &= ~nTRST; high_output &= ~nTRST;
} }
else if (trst == 0) else if (trst == 0)
@ -1227,7 +1227,7 @@ int ft2232_execute_queue()
if ((cmd->cmd.reset->trst == 1) || (cmd->cmd.reset->srst && (jtag_reset_config & RESET_SRST_PULLS_TRST))) if ((cmd->cmd.reset->trst == 1) || (cmd->cmd.reset->srst && (jtag_reset_config & RESET_SRST_PULLS_TRST)))
{ {
cur_state = TAP_TLR; cur_state = TAP_RESET;
} }
layout->reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); layout->reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
require_send = 1; require_send = 1;
@ -1239,12 +1239,12 @@ int ft2232_execute_queue()
case JTAG_RUNTEST: case JTAG_RUNTEST:
/* only send the maximum buffer size that FT2232C can handle */ /* only send the maximum buffer size that FT2232C can handle */
predicted_size = 0; predicted_size = 0;
if (cur_state != TAP_RTI) if (cur_state != TAP_IDLE)
predicted_size += 3; predicted_size += 3;
predicted_size += 3 * CEIL(cmd->cmd.runtest->num_cycles, 7); predicted_size += 3 * CEIL(cmd->cmd.runtest->num_cycles, 7);
if ((cmd->cmd.runtest->end_state != -1) && (cmd->cmd.runtest->end_state != TAP_RTI)) if ((cmd->cmd.runtest->end_state != -1) && (cmd->cmd.runtest->end_state != TAP_IDLE))
predicted_size += 3; predicted_size += 3;
if ((cmd->cmd.runtest->end_state == -1) && (end_state != TAP_RTI)) if ((cmd->cmd.runtest->end_state == -1) && (end_state != TAP_IDLE))
predicted_size += 3; predicted_size += 3;
if (ft2232_buffer_size + predicted_size + 1 > FT2232_BUFFER_SIZE) if (ft2232_buffer_size + predicted_size + 1 > FT2232_BUFFER_SIZE)
{ {
@ -1253,15 +1253,15 @@ int ft2232_execute_queue()
require_send = 0; require_send = 0;
first_unsent = cmd; first_unsent = cmd;
} }
if (cur_state != TAP_RTI) if (cur_state != TAP_IDLE)
{ {
/* command "Clock Data to TMS/CS Pin (no Read)" */ /* command "Clock Data to TMS/CS Pin (no Read)" */
BUFFER_ADD = 0x4b; BUFFER_ADD = 0x4b;
/* scan 7 bit */ /* scan 7 bit */
BUFFER_ADD = 0x6; BUFFER_ADD = 0x6;
/* TMS data bits */ /* TMS data bits */
BUFFER_ADD = TAP_MOVE(cur_state, TAP_RTI); BUFFER_ADD = TAP_MOVE(cur_state, TAP_IDLE);
cur_state = TAP_RTI; cur_state = TAP_IDLE;
require_send = 1; require_send = 1;
} }
i = cmd->cmd.runtest->num_cycles; i = cmd->cmd.runtest->num_cycles;
@ -1273,7 +1273,7 @@ int ft2232_execute_queue()
BUFFER_ADD = (i > 7) ? 6 : (i - 1); BUFFER_ADD = (i > 7) ? 6 : (i - 1);
/* TMS data bits */ /* TMS data bits */
BUFFER_ADD = 0x0; BUFFER_ADD = 0x0;
cur_state = TAP_RTI; cur_state = TAP_IDLE;
i -= (i > 7) ? 7 : i; i -= (i > 7) ? 7 : i;
/* LOG_DEBUG("added TMS scan (no read)"); */ /* LOG_DEBUG("added TMS scan (no read)"); */
} }

View File

@ -258,9 +258,9 @@ void gw16012_runtest(int num_cycles)
int i; int i;
/* only do a state_move when we're not already in RTI */ /* only do a state_move when we're not already in RTI */
if (cur_state != TAP_RTI) if (cur_state != TAP_IDLE)
{ {
gw16012_end_state(TAP_RTI); gw16012_end_state(TAP_IDLE);
gw16012_state_move(); gw16012_state_move();
} }
@ -283,12 +283,12 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
u8 scan_out, scan_in; u8 scan_out, scan_in;
/* only if we're not already in the correct Shift state */ /* only if we're not already in the correct Shift state */
if (!((!ir_scan && (cur_state == TAP_SD)) || (ir_scan && (cur_state == TAP_SI)))) if (!((!ir_scan && (cur_state == TAP_DRSHIFT)) || (ir_scan && (cur_state == TAP_IRSHIFT))))
{ {
if (ir_scan) if (ir_scan)
gw16012_end_state(TAP_SI); gw16012_end_state(TAP_IRSHIFT);
else else
gw16012_end_state(TAP_SD); gw16012_end_state(TAP_DRSHIFT);
gw16012_state_move(); gw16012_state_move();
gw16012_end_state(saved_end_state); gw16012_end_state(saved_end_state);
@ -312,8 +312,8 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
if (bits_left == 0) /* last bit */ if (bits_left == 0) /* last bit */
{ {
if ((ir_scan && (end_state == TAP_SI)) if ((ir_scan && (end_state == TAP_IRSHIFT))
|| (!ir_scan && (end_state == TAP_SD))) || (!ir_scan && (end_state == TAP_DRSHIFT)))
{ {
tms = 0; tms = 0;
} }
@ -334,14 +334,14 @@ void gw16012_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
bit_count++; bit_count++;
} }
if (!((ir_scan && (end_state == TAP_SI)) || if (!((ir_scan && (end_state == TAP_IRSHIFT)) ||
(!ir_scan && (end_state == TAP_SD)))) (!ir_scan && (end_state == TAP_DRSHIFT))))
{ {
gw16012_data(0x0); gw16012_data(0x0);
if (ir_scan) if (ir_scan)
cur_state = TAP_PI; cur_state = TAP_IRPAUSE;
else else
cur_state = TAP_PD; cur_state = TAP_DRPAUSE;
if (cur_state != end_state) if (cur_state != end_state)
gw16012_state_move(); gw16012_state_move();
@ -378,7 +378,7 @@ int gw16012_execute_queue(void)
#endif #endif
if (cmd->cmd.reset->trst == 1) if (cmd->cmd.reset->trst == 1)
{ {
cur_state = TAP_TLR; cur_state = TAP_RESET;
} }
gw16012_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); gw16012_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
break; break;

View File

@ -214,7 +214,7 @@ int jlink_execute_queue(void)
if (cmd->cmd.reset->trst == 1) if (cmd->cmd.reset->trst == 1)
{ {
cur_state = TAP_TLR; cur_state = TAP_RESET;
} }
jlink_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); jlink_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
break; break;
@ -393,9 +393,9 @@ void jlink_runtest(int num_cycles)
enum tap_state saved_end_state = end_state; enum tap_state saved_end_state = end_state;
/* only do a state_move when we're not already in RTI */ /* only do a state_move when we're not already in RTI */
if (cur_state != TAP_RTI) if (cur_state != TAP_IDLE)
{ {
jlink_end_state(TAP_RTI); jlink_end_state(TAP_IDLE);
jlink_state_move(); jlink_state_move();
} }
@ -422,7 +422,7 @@ void jlink_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, sca
saved_end_state = end_state; saved_end_state = end_state;
/* Move to appropriate scan state */ /* Move to appropriate scan state */
jlink_end_state(ir_scan ? TAP_SI : TAP_SD); jlink_end_state(ir_scan ? TAP_IRSHIFT : TAP_DRSHIFT);
jlink_state_move(); jlink_state_move();
jlink_end_state(saved_end_state); jlink_end_state(saved_end_state);
@ -433,7 +433,7 @@ void jlink_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size, sca
/* We are in Exit1, go to Pause */ /* We are in Exit1, go to Pause */
jlink_tap_append_step(0, 0); jlink_tap_append_step(0, 0);
cur_state = ir_scan ? TAP_PI : TAP_PD; cur_state = ir_scan ? TAP_IRPAUSE : TAP_DRPAUSE;
if (cur_state != end_state) if (cur_state != end_state)
{ {

View File

@ -87,22 +87,22 @@ int tap_move_map[16] = {
tap_transition_t tap_transitions[16] = tap_transition_t tap_transitions[16] =
{ {
{TAP_TLR, TAP_RTI}, /* TLR */ {TAP_RESET, TAP_IDLE}, /* TLR */
{TAP_SIS, TAP_CD}, /* SDS */ {TAP_IRSELECT, TAP_DRCAPTURE}, /* SDS */
{TAP_E1D, TAP_SD}, /* CD */ {TAP_DREXIT1, TAP_DRSHIFT}, /* CD */
{TAP_E1D, TAP_SD}, /* SD */ {TAP_DREXIT1, TAP_DRSHIFT}, /* SD */
{TAP_UD, TAP_PD}, /* E1D */ {TAP_DRUPDATE, TAP_DRPAUSE}, /* E1D */
{TAP_E2D, TAP_PD}, /* PD */ {TAP_DREXIT2, TAP_DRPAUSE}, /* PD */
{TAP_UD, TAP_SD}, /* E2D */ {TAP_DRUPDATE, TAP_DRSHIFT}, /* E2D */
{TAP_SDS, TAP_RTI}, /* UD */ {TAP_DRSELECT, TAP_IDLE}, /* UD */
{TAP_SDS, TAP_RTI}, /* RTI */ {TAP_DRSELECT, TAP_IDLE}, /* RTI */
{TAP_TLR, TAP_CI}, /* SIS */ {TAP_RESET, TAP_IRCAPTURE}, /* SIS */
{TAP_E1I, TAP_SI}, /* CI */ {TAP_IREXIT1, TAP_IRSHIFT}, /* CI */
{TAP_E1I, TAP_SI}, /* SI */ {TAP_IREXIT1, TAP_IRSHIFT}, /* SI */
{TAP_UI, TAP_PI}, /* E1I */ {TAP_IRUPDATE, TAP_IRPAUSE}, /* E1I */
{TAP_E2I, TAP_PI}, /* PI */ {TAP_IREXIT2, TAP_IRPAUSE}, /* PI */
{TAP_UI, TAP_SI}, /* E2I */ {TAP_IRUPDATE, TAP_IRSHIFT}, /* E2I */
{TAP_SDS, TAP_RTI} /* UI */ {TAP_DRSELECT, TAP_IDLE} /* UI */
}; };
char* jtag_event_strings[] = char* jtag_event_strings[] =
@ -115,8 +115,8 @@ char* jtag_event_strings[] =
* inside the drivers, but we don't want to break * inside the drivers, but we don't want to break
* linking the drivers!!!! * linking the drivers!!!!
*/ */
enum tap_state end_state = TAP_TLR; enum tap_state end_state = TAP_RESET;
enum tap_state cur_state = TAP_TLR; enum tap_state cur_state = TAP_RESET;
int jtag_trst = 0; int jtag_trst = 0;
int jtag_srst = 0; int jtag_srst = 0;
@ -125,8 +125,8 @@ jtag_command_t **last_comand_pointer = &jtag_command_queue;
static jtag_tap_t *jtag_all_taps = NULL; static jtag_tap_t *jtag_all_taps = NULL;
enum reset_types jtag_reset_config = RESET_NONE; enum reset_types jtag_reset_config = RESET_NONE;
enum tap_state cmd_queue_end_state = TAP_TLR; enum tap_state cmd_queue_end_state = TAP_RESET;
enum tap_state cmd_queue_cur_state = TAP_TLR; enum tap_state cmd_queue_cur_state = TAP_RESET;
int jtag_verify_capture_ir = 1; int jtag_verify_capture_ir = 1;
@ -543,7 +543,7 @@ static void jtag_prelude1(void)
return; return;
} }
if (cmd_queue_end_state == TAP_TLR) if (cmd_queue_end_state == TAP_RESET)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED); jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
} }
@ -959,7 +959,7 @@ int MINIDRIVER(interface_jtag_add_plain_dr_scan)(int num_fields, scan_field_t *f
void jtag_add_tlr(void) void jtag_add_tlr(void)
{ {
jtag_prelude(TAP_TLR); jtag_prelude(TAP_RESET);
int retval; int retval;
retval=interface_jtag_add_tlr(); retval=interface_jtag_add_tlr();
@ -969,7 +969,7 @@ void jtag_add_tlr(void)
int MINIDRIVER(interface_jtag_add_tlr)() int MINIDRIVER(interface_jtag_add_tlr)()
{ {
enum tap_state state = TAP_TLR; enum tap_state state = TAP_RESET;
jtag_command_t **last_cmd = jtag_get_last_command_p(); jtag_command_t **last_cmd = jtag_get_last_command_p();
/* allocate memory for a new list member */ /* allocate memory for a new list member */
@ -1000,9 +1000,9 @@ void jtag_add_pathmove(int num_states, enum tap_state *path)
for (i=0; i<num_states; i++) for (i=0; i<num_states; i++)
{ {
if (path[i] == TAP_TLR) if (path[i] == TAP_RESET)
{ {
LOG_ERROR("BUG: TAP_TLR is not a valid state for pathmove sequences"); LOG_ERROR("BUG: TAP_RESET is not a valid state for pathmove sequences");
exit(-1); exit(-1);
} }
if ((tap_transitions[cur_state].low != path[i])&& if ((tap_transitions[cur_state].low != path[i])&&
@ -1154,7 +1154,7 @@ void jtag_add_reset(int req_tlr_or_trst, int req_srst)
if (trst_with_tlr) if (trst_with_tlr)
{ {
LOG_DEBUG("JTAG reset with TLR instead of TRST"); LOG_DEBUG("JTAG reset with TLR instead of TRST");
jtag_add_end_state(TAP_TLR); jtag_add_end_state(TAP_RESET);
jtag_add_tlr(); jtag_add_tlr();
jtag_call_event_callbacks(JTAG_TRST_ASSERTED); jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
return; return;
@ -1166,7 +1166,7 @@ void jtag_add_reset(int req_tlr_or_trst, int req_srst)
* and inform possible listeners about this * and inform possible listeners about this
*/ */
LOG_DEBUG("TRST line asserted"); LOG_DEBUG("TRST line asserted");
cmd_queue_cur_state = TAP_TLR; cmd_queue_cur_state = TAP_RESET;
jtag_call_event_callbacks(JTAG_TRST_ASSERTED); jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
} }
else else
@ -1196,9 +1196,9 @@ int MINIDRIVER(interface_jtag_add_reset)(int req_trst, int req_srst)
void jtag_add_end_state(enum tap_state state) void jtag_add_end_state(enum tap_state state)
{ {
cmd_queue_end_state = state; cmd_queue_end_state = state;
if ((cmd_queue_end_state == TAP_SD)||(cmd_queue_end_state == TAP_SI)) if ((cmd_queue_end_state == TAP_DRSHIFT)||(cmd_queue_end_state == TAP_IRSHIFT))
{ {
LOG_ERROR("BUG: TAP_SD/SI can't be end state. Calling code should use a larger scan field"); LOG_ERROR("BUG: TAP_DRSHIFT/SI can't be end state. Calling code should use a larger scan field");
} }
} }
@ -1491,7 +1491,7 @@ int jtag_examine_chain(void)
buf_set_u32(idcode_buffer, i * 32, 32, 0x000000FF); buf_set_u32(idcode_buffer, i * 32, 32, 0x000000FF);
} }
jtag_add_plain_dr_scan(1, &field, TAP_TLR); jtag_add_plain_dr_scan(1, &field, TAP_RESET);
jtag_execute_queue(); jtag_execute_queue();
for (i = 0; i < JTAG_MAX_CHAIN_SIZE * 4; i++) for (i = 0; i < JTAG_MAX_CHAIN_SIZE * 4; i++)
@ -1662,7 +1662,7 @@ int jtag_validate_chain(void)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_plain_ir_scan(1, &field, TAP_TLR); jtag_add_plain_ir_scan(1, &field, TAP_RESET);
jtag_execute_queue(); jtag_execute_queue();
tap = NULL; tap = NULL;

View File

@ -33,20 +33,15 @@
#define _DEBUG_JTAG_IO_ #define _DEBUG_JTAG_IO_
#endif #endif
/* Tap States /* 16 Tap States, from page 21 of ASSET InterTech, Inc.'s svf.pdf
* TLR - Test-Logic-Reset, RTI - Run-Test/Idle,
* SDS - Select-DR-Scan, CD - Capture-DR, SD - Shift-DR, E1D - Exit1-DR,
* PD - Pause-DR, E2D - Exit2-DR, UD - Update-DR,
* SIS - Select-IR-Scan, CI - Capture-IR, SI - Shift-IR, E1I - Exit1-IR,
* PI - Pause-IR, E2I - Exit2-IR, UI - Update-IR
*/ */
enum tap_state enum tap_state
{ {
TAP_TLR = 0x0, TAP_RTI = 0x8, TAP_RESET = 0x0, TAP_IDLE = 0x8,
TAP_SDS = 0x1, TAP_CD = 0x2, TAP_SD = 0x3, TAP_E1D = 0x4, TAP_DRSELECT = 0x1, TAP_DRCAPTURE = 0x2, TAP_DRSHIFT = 0x3, TAP_DREXIT1 = 0x4,
TAP_PD = 0x5, TAP_E2D = 0x6, TAP_UD = 0x7, TAP_DRPAUSE = 0x5, TAP_DREXIT2 = 0x6, TAP_DRUPDATE = 0x7,
TAP_SIS = 0x9, TAP_CI = 0xa, TAP_SI = 0xb, TAP_E1I = 0xc, TAP_IRSELECT = 0x9, TAP_IRCAPTURE = 0xa, TAP_IRSHIFT = 0xb, TAP_IREXIT1 = 0xc,
TAP_PI = 0xd, TAP_E2I = 0xe, TAP_UI = 0xf TAP_IRPAUSE = 0xd, TAP_IREXIT2 = 0xe, TAP_IRUPDATE = 0xf
}; };
typedef struct tap_transition_s typedef struct tap_transition_s
@ -325,7 +320,7 @@ extern int jtag_register_commands(struct command_context_s *cmd_ctx);
/* JTAG interface, can be implemented with a software or hardware fifo /* JTAG interface, can be implemented with a software or hardware fifo
* *
* TAP_SD and TAP_SI are illegal end states. TAP_SD/SI as end states * TAP_DRSHIFT and TAP_IRSHIFT are illegal end states. TAP_DRSHIFT/SI as end states
* can be emulated by using a larger scan. * can be emulated by using a larger scan.
* *
* Code that is relatively insensitive to the path(as long * Code that is relatively insensitive to the path(as long
@ -343,7 +338,7 @@ extern void jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum ta
extern int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state endstate); extern int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state endstate);
extern void jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state endstate); extern void jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state endstate);
extern int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state endstate); extern int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state endstate);
/* run a TAP_TLR reset. End state is TAP_TLR, regardless /* run a TAP_RESET reset. End state is TAP_RESET, regardless
* of start state. * of start state.
*/ */
extern void jtag_add_tlr(void); extern void jtag_add_tlr(void);
@ -364,7 +359,7 @@ extern int interface_jtag_add_tlr(void);
* all drivers can support this, but it is required for e.g. * all drivers can support this, but it is required for e.g.
* XScale and Xilinx support * XScale and Xilinx support
* *
* Note! TAP_TLR must not be used in the path! * Note! TAP_RESET must not be used in the path!
* *
* Note that the first on the list must be reachable * Note that the first on the list must be reachable
* via a single transition from the current state. * via a single transition from the current state.
@ -380,12 +375,12 @@ extern int interface_jtag_add_tlr(void);
*/ */
extern void jtag_add_pathmove(int num_states, enum tap_state *path); extern void jtag_add_pathmove(int num_states, enum tap_state *path);
extern int interface_jtag_add_pathmove(int num_states, enum tap_state *path); extern int interface_jtag_add_pathmove(int num_states, enum tap_state *path);
/* go to TAP_RTI, if we're not already there and cycle /* go to TAP_IDLE, if we're not already there and cycle
* precisely num_cycles in the TAP_RTI after which move * precisely num_cycles in the TAP_IDLE after which move
* to the end state, if it is != TAP_RTI * to the end state, if it is != TAP_IDLE
* *
* nb! num_cycles can be 0, in which case the fn will navigate * nb! num_cycles can be 0, in which case the fn will navigate
* to endstate via TAP_RTI * to endstate via TAP_IDLE
*/ */
extern void jtag_add_runtest(int num_cycles, enum tap_state endstate); extern void jtag_add_runtest(int num_cycles, enum tap_state endstate);
extern int interface_jtag_add_runtest(int num_cycles, enum tap_state endstate); extern int interface_jtag_add_runtest(int num_cycles, enum tap_state endstate);
@ -488,7 +483,7 @@ extern int jtag_verify_capture_ir;
#define MINIDRIVER(a) a #define MINIDRIVER(a) a
/* jtag_add_dr_out() is a faster version of jtag_add_dr_scan() /* jtag_add_dr_out() is a faster version of jtag_add_dr_scan()
* *
* Current or end_state can not be TAP_TLR. end_state can be -1 * Current or end_state can not be TAP_RESET. end_state can be -1
* *
* num_bits[i] is the number of bits to clock out from value[i] LSB first. * num_bits[i] is the number of bits to clock out from value[i] LSB first.
* *

View File

@ -151,7 +151,7 @@ int usbprog_execute_queue(void)
#endif #endif
if (cmd->cmd.reset->trst == 1) if (cmd->cmd.reset->trst == 1)
{ {
cur_state = TAP_TLR; cur_state = TAP_RESET;
} }
usbprog_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst); usbprog_reset(cmd->cmd.reset->trst, cmd->cmd.reset->srst);
break; break;
@ -299,9 +299,9 @@ void usbprog_runtest(int num_cycles)
int i; int i;
/* only do a state_move when we're not already in RTI */ /* only do a state_move when we're not already in RTI */
if (cur_state != TAP_RTI) if (cur_state != TAP_IDLE)
{ {
usbprog_end_state(TAP_RTI); usbprog_end_state(TAP_IDLE);
usbprog_state_move(); usbprog_state_move();
} }
@ -336,9 +336,9 @@ void usbprog_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
enum tap_state saved_end_state = end_state; enum tap_state saved_end_state = end_state;
if (ir_scan) if (ir_scan)
usbprog_end_state(TAP_SI); usbprog_end_state(TAP_IRSHIFT);
else else
usbprog_end_state(TAP_SD); usbprog_end_state(TAP_DRSHIFT);
/* usbprog_jtag_tms_send(usbprog_jtag_handle); */ /* usbprog_jtag_tms_send(usbprog_jtag_handle); */
@ -361,9 +361,9 @@ void usbprog_scan(int ir_scan, enum scan_type type, u8 *buffer, int scan_size)
} }
if (ir_scan) if (ir_scan)
cur_state = TAP_PI; cur_state = TAP_IRPAUSE;
else else
cur_state = TAP_PD; cur_state = TAP_DRPAUSE;
if (cur_state != end_state) if (cur_state != end_state)
usbprog_state_move(); usbprog_state_move();

View File

@ -158,7 +158,7 @@ void zy1000_reset(int trst, int srst)
else else
{ {
/* Danger!!! if clk!=0 when in /* Danger!!! if clk!=0 when in
* idle in TAP_RTI, reset halt on str912 will fail. * idle in TAP_IDLE, reset halt on str912 will fail.
*/ */
ZY1000_POKE(ZY1000_JTAG_BASE+0x10, 0x00000001); ZY1000_POKE(ZY1000_JTAG_BASE+0x10, 0x00000001);
} }
@ -177,7 +177,7 @@ void zy1000_reset(int trst, int srst)
{ {
waitIdle(); waitIdle();
/* we're now in the TLR state until trst is deasserted */ /* we're now in the TLR state until trst is deasserted */
ZY1000_POKE(ZY1000_JTAG_BASE+0x20, TAP_TLR); ZY1000_POKE(ZY1000_JTAG_BASE+0x20, TAP_RESET);
} else } else
{ {
/* We'll get RCLK failure when we assert TRST, so clear any false positives here */ /* We'll get RCLK failure when we assert TRST, so clear any false positives here */
@ -429,7 +429,7 @@ static __inline void scanFields(int num_fields, scan_field_t *fields, enum tap_s
enum tap_state pause_state; enum tap_state pause_state;
int l; int l;
k=num_bits-j; k=num_bits-j;
pause_state=(shiftState==TAP_SD)?TAP_SD:TAP_SI; pause_state=(shiftState==TAP_DRSHIFT)?TAP_DRSHIFT:TAP_IRSHIFT;
if (k>32) if (k>32)
{ {
k=32; k=32;
@ -437,7 +437,7 @@ static __inline void scanFields(int num_fields, scan_field_t *fields, enum tap_s
} else if (pause&&(i == num_fields-1)) } else if (pause&&(i == num_fields-1))
{ {
/* this was the last to shift out this time */ /* this was the last to shift out this time */
pause_state=(shiftState==TAP_SD)?TAP_PD:TAP_PI; pause_state=(shiftState==TAP_DRSHIFT)?TAP_DRPAUSE:TAP_IRPAUSE;
} }
// we have (num_bits+7)/8 bytes of bits to toggle out. // we have (num_bits+7)/8 bytes of bits to toggle out.
@ -520,7 +520,7 @@ int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_st
fields[j].in_check_mask = tap->expected_mask; fields[j].in_check_mask = tap->expected_mask;
} }
scanFields(1, fields+j, TAP_SI, pause); scanFields(1, fields+j, TAP_IRSHIFT, pause);
/* update device information */ /* update device information */
buf_cpy(fields[j].out_value, tap->cur_instr, scan_size); buf_cpy(fields[j].out_value, tap->cur_instr, scan_size);
@ -538,7 +538,7 @@ int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_st
memset(&tmp, 0, sizeof(tmp)); memset(&tmp, 0, sizeof(tmp));
tmp.out_value = ones; tmp.out_value = ones;
tmp.num_bits = scan_size; tmp.num_bits = scan_size;
scanFields(1, &tmp, TAP_SI, pause); scanFields(1, &tmp, TAP_IRSHIFT, pause);
/* update device information */ /* update device information */
buf_cpy(tmp.out_value, tap->cur_instr, scan_size); buf_cpy(tmp.out_value, tap->cur_instr, scan_size);
tap->bypass = 1; tap->bypass = 1;
@ -555,7 +555,7 @@ int interface_jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_st
int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state) int interface_jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
{ {
scanFields(num_fields, fields, TAP_SI, 1); scanFields(num_fields, fields, TAP_IRSHIFT, 1);
gotoEndState(); gotoEndState();
return ERROR_OK; return ERROR_OK;
@ -580,7 +580,7 @@ int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_st
{ {
found = 1; found = 1;
scanFields(1, fields+j, TAP_SD, pause); scanFields(1, fields+j, TAP_DRSHIFT, pause);
} }
} }
if (!found) if (!found)
@ -596,7 +596,7 @@ int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_st
tmp.in_handler = NULL; tmp.in_handler = NULL;
tmp.in_handler_priv = NULL; tmp.in_handler_priv = NULL;
scanFields(1, &tmp, TAP_SD, pause); scanFields(1, &tmp, TAP_DRSHIFT, pause);
} }
else else
{ {
@ -608,7 +608,7 @@ int interface_jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_st
int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state state) int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state state)
{ {
scanFields(num_fields, fields, TAP_SD, 1); scanFields(num_fields, fields, TAP_DRSHIFT, 1);
gotoEndState(); gotoEndState();
return ERROR_OK; return ERROR_OK;
} }
@ -616,7 +616,7 @@ int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum
int interface_jtag_add_tlr() int interface_jtag_add_tlr()
{ {
setCurrentState(TAP_TLR); setCurrentState(TAP_RESET);
return ERROR_OK; return ERROR_OK;
} }
@ -635,7 +635,7 @@ int interface_jtag_add_reset(int req_trst, int req_srst)
int interface_jtag_add_runtest(int num_cycles, enum tap_state state) int interface_jtag_add_runtest(int num_cycles, enum tap_state state)
{ {
/* num_cycles can be 0 */ /* num_cycles can be 0 */
setCurrentState(TAP_RTI); setCurrentState(TAP_IDLE);
/* execute num_cycles, 32 at the time. */ /* execute num_cycles, 32 at the time. */
int i; int i;
@ -647,14 +647,14 @@ int interface_jtag_add_runtest(int num_cycles, enum tap_state state)
{ {
num=num_cycles-i; num=num_cycles-i;
} }
shiftValueInner(TAP_RTI, TAP_RTI, num, 0); shiftValueInner(TAP_IDLE, TAP_IDLE, num, 0);
} }
#if !TEST_MANUAL() #if !TEST_MANUAL()
/* finish in end_state */ /* finish in end_state */
setCurrentState(state); setCurrentState(state);
#else #else
enum tap_state t=TAP_RTI; enum tap_state t=TAP_IDLE;
/* test manual drive code on any target */ /* test manual drive code on any target */
int tms; int tms;
u8 tms_scan = TAP_MOVE(t, state); u8 tms_scan = TAP_MOVE(t, state);
@ -734,8 +734,8 @@ void embeddedice_write_dcc(jtag_tap_t *tap, int reg_addr, u8 *buffer, int little
int i; int i;
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
shiftValueInner(TAP_SD, TAP_SD, 32, fast_target_buffer_get_u32(buffer, 1)); shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, 32, fast_target_buffer_get_u32(buffer, 1));
shiftValueInner(TAP_SD, end_state, 6, reg_addr|(1<<5)); shiftValueInner(TAP_DRSHIFT, end_state, 6, reg_addr|(1<<5));
buffer+=4; buffer+=4;
} }
} else } else
@ -743,8 +743,8 @@ void embeddedice_write_dcc(jtag_tap_t *tap, int reg_addr, u8 *buffer, int little
int i; int i;
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
{ {
shiftValueInner(TAP_SD, TAP_SD, 32, fast_target_buffer_get_u32(buffer, 0)); shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, 32, fast_target_buffer_get_u32(buffer, 0));
shiftValueInner(TAP_SD, end_state, 6, reg_addr|(1<<5)); shiftValueInner(TAP_DRSHIFT, end_state, 6, reg_addr|(1<<5));
buffer+=4; buffer+=4;
} }
} }

View File

@ -63,7 +63,7 @@ int virtex2_set_instr(jtag_tap_t *tap, u32 new_instr)
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
jtag_add_ir_scan(1, &field, TAP_RTI); jtag_add_ir_scan(1, &field, TAP_IDLE);
free(field.out_value); free(field.out_value);
} }
@ -95,7 +95,7 @@ int virtex2_send_32(struct pld_device_s *pld_device, int num_words, u32 *words)
virtex2_set_instr(virtex2_info->tap, 0x5); /* CFG_IN */ virtex2_set_instr(virtex2_info->tap, 0x5); /* CFG_IN */
jtag_add_dr_scan(1, &scan_field, TAP_PD); jtag_add_dr_scan(1, &scan_field, TAP_DRPAUSE);
free(values); free(values);
@ -128,7 +128,7 @@ int virtex2_receive_32(struct pld_device_s *pld_device, int num_words, u32 *word
while (num_words--) while (num_words--)
{ {
scan_field.in_handler_priv = words++; scan_field.in_handler_priv = words++;
jtag_add_dr_scan(1, &scan_field, TAP_PD); jtag_add_dr_scan(1, &scan_field, TAP_DRPAUSE);
} }
return ERROR_OK; return ERROR_OK;
@ -176,7 +176,7 @@ int virtex2_load(struct pld_device_s *pld_device, char *filename)
if ((retval = xilinx_read_bit_file(&bit_file, filename)) != ERROR_OK) if ((retval = xilinx_read_bit_file(&bit_file, filename)) != ERROR_OK)
return retval; return retval;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
virtex2_set_instr(virtex2_info->tap, 0xb); /* JPROG_B */ virtex2_set_instr(virtex2_info->tap, 0xb); /* JPROG_B */
jtag_execute_queue(); jtag_execute_queue();
jtag_add_sleep(1000); jtag_add_sleep(1000);
@ -190,18 +190,18 @@ int virtex2_load(struct pld_device_s *pld_device, char *filename)
field.num_bits = bit_file.length * 8; field.num_bits = bit_file.length * 8;
field.out_value = bit_file.data; field.out_value = bit_file.data;
jtag_add_dr_scan(1, &field, TAP_PD); jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
jtag_add_tlr(); jtag_add_tlr();
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
virtex2_set_instr(virtex2_info->tap, 0xc); /* JSTART */ virtex2_set_instr(virtex2_info->tap, 0xc); /* JSTART */
jtag_add_runtest(13, TAP_RTI); jtag_add_runtest(13, TAP_IDLE);
virtex2_set_instr(virtex2_info->tap, 0x3f); /* BYPASS */ virtex2_set_instr(virtex2_info->tap, 0x3f); /* BYPASS */
virtex2_set_instr(virtex2_info->tap, 0x3f); /* BYPASS */ virtex2_set_instr(virtex2_info->tap, 0x3f); /* BYPASS */
virtex2_set_instr(virtex2_info->tap, 0xc); /* JSTART */ virtex2_set_instr(virtex2_info->tap, 0xc); /* JSTART */
jtag_add_runtest(13, TAP_RTI); jtag_add_runtest(13, TAP_IDLE);
virtex2_set_instr(virtex2_info->tap, 0x3f); /* BYPASS */ virtex2_set_instr(virtex2_info->tap, 0x3f); /* BYPASS */
jtag_execute_queue(); jtag_execute_queue();

View File

@ -393,7 +393,7 @@ static void arm11_on_enter_debug_state(arm11_common_t * arm11)
arm11_setup_field(arm11, 1, NULL, NULL, chain5_fields + 1); arm11_setup_field(arm11, 1, NULL, NULL, chain5_fields + 1);
arm11_setup_field(arm11, 1, NULL, NULL, chain5_fields + 2); arm11_setup_field(arm11, 1, NULL, NULL, chain5_fields + 2);
arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_PD); arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_DRPAUSE);
} }
else else
{ {
@ -627,7 +627,7 @@ void arm11_leave_debug_state(arm11_common_t * arm11)
arm11_setup_field(arm11, 1, &Ready, NULL, chain5_fields + 1); arm11_setup_field(arm11, 1, &Ready, NULL, chain5_fields + 1);
arm11_setup_field(arm11, 1, &Valid, NULL, chain5_fields + 2); arm11_setup_field(arm11, 1, &Valid, NULL, chain5_fields + 2);
arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_PD); arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_DRPAUSE);
} }
arm11_record_register_history(arm11); arm11_record_register_history(arm11);
@ -735,7 +735,7 @@ int arm11_halt(struct target_s *target)
return ERROR_OK; return ERROR_OK;
} }
arm11_add_IR(arm11, ARM11_HALT, TAP_RTI); arm11_add_IR(arm11, ARM11_HALT, TAP_IDLE);
if((retval = jtag_execute_queue()) != ERROR_OK) if((retval = jtag_execute_queue()) != ERROR_OK)
{ {
@ -841,7 +841,7 @@ int arm11_resume(struct target_s *target, int current, u32 address, int handle_b
arm11_leave_debug_state(arm11); arm11_leave_debug_state(arm11);
arm11_add_IR(arm11, ARM11_RESTART, TAP_RTI); arm11_add_IR(arm11, ARM11_RESTART, TAP_IDLE);
if((retval = jtag_execute_queue()) != ERROR_OK) if((retval = jtag_execute_queue()) != ERROR_OK)
{ {
@ -956,7 +956,7 @@ int arm11_step(struct target_s *target, int current, u32 address, int handle_bre
arm11_leave_debug_state(arm11); arm11_leave_debug_state(arm11);
arm11_add_IR(arm11, ARM11_RESTART, TAP_RTI); arm11_add_IR(arm11, ARM11_RESTART, TAP_IDLE);
if((retval = jtag_execute_queue()) != ERROR_OK) if((retval = jtag_execute_queue()) != ERROR_OK)
{ {
@ -1571,7 +1571,7 @@ int arm11_examine(struct target_s *target)
arm11_setup_field(arm11, 32, NULL, &arm11->device_id, &idcode_field); arm11_setup_field(arm11, 32, NULL, &arm11->device_id, &idcode_field);
arm11_add_dr_scan_vc(1, &idcode_field, TAP_PD); arm11_add_dr_scan_vc(1, &idcode_field, TAP_DRPAUSE);
/* check DIDR */ /* check DIDR */
@ -1584,7 +1584,7 @@ int arm11_examine(struct target_s *target)
arm11_setup_field(arm11, 32, NULL, &arm11->didr, chain0_fields + 0); arm11_setup_field(arm11, 32, NULL, &arm11->didr, chain0_fields + 0);
arm11_setup_field(arm11, 8, NULL, &arm11->implementor, chain0_fields + 1); arm11_setup_field(arm11, 8, NULL, &arm11->implementor, chain0_fields + 1);
arm11_add_dr_scan_vc(asizeof(chain0_fields), chain0_fields, TAP_RTI); arm11_add_dr_scan_vc(asizeof(chain0_fields), chain0_fields, TAP_IDLE);
if ((retval=jtag_execute_queue())!=ERROR_OK) if ((retval=jtag_execute_queue())!=ERROR_OK)
return retval; return retval;

View File

@ -38,13 +38,13 @@
enum tap_state arm11_move_pi_to_si_via_ci[] = enum tap_state arm11_move_pi_to_si_via_ci[] =
{ {
TAP_E2I, TAP_UI, TAP_SDS, TAP_SIS, TAP_CI, TAP_SI TAP_IREXIT2, TAP_IRUPDATE, TAP_DRSELECT, TAP_IRSELECT, TAP_IRCAPTURE, TAP_IRSHIFT
}; };
int arm11_add_ir_scan_vc(int num_fields, scan_field_t *fields, enum tap_state state) int arm11_add_ir_scan_vc(int num_fields, scan_field_t *fields, enum tap_state state)
{ {
if (cmd_queue_cur_state == TAP_PI) if (cmd_queue_cur_state == TAP_IRPAUSE)
jtag_add_pathmove(asizeof(arm11_move_pi_to_si_via_ci), arm11_move_pi_to_si_via_ci); jtag_add_pathmove(asizeof(arm11_move_pi_to_si_via_ci), arm11_move_pi_to_si_via_ci);
jtag_add_ir_scan(num_fields, fields, state); jtag_add_ir_scan(num_fields, fields, state);
@ -53,12 +53,12 @@ int arm11_add_ir_scan_vc(int num_fields, scan_field_t *fields, enum tap_state st
enum tap_state arm11_move_pd_to_sd_via_cd[] = enum tap_state arm11_move_pd_to_sd_via_cd[] =
{ {
TAP_E2D, TAP_UD, TAP_SDS, TAP_CD, TAP_SD TAP_DREXIT2, TAP_DRUPDATE, TAP_DRSELECT, TAP_DRCAPTURE, TAP_DRSHIFT
}; };
int arm11_add_dr_scan_vc(int num_fields, scan_field_t *fields, enum tap_state state) int arm11_add_dr_scan_vc(int num_fields, scan_field_t *fields, enum tap_state state)
{ {
if (cmd_queue_cur_state == TAP_PD) if (cmd_queue_cur_state == TAP_DRPAUSE)
jtag_add_pathmove(asizeof(arm11_move_pd_to_sd_via_cd), arm11_move_pd_to_sd_via_cd); jtag_add_pathmove(asizeof(arm11_move_pd_to_sd_via_cd), arm11_move_pd_to_sd_via_cd);
jtag_add_dr_scan(num_fields, fields, state); jtag_add_dr_scan(num_fields, fields, state);
@ -120,7 +120,7 @@ void arm11_add_IR(arm11_common_t * arm11, u8 instr, enum tap_state state)
arm11_setup_field(arm11, 5, &instr, NULL, &field); arm11_setup_field(arm11, 5, &instr, NULL, &field);
arm11_add_ir_scan_vc(1, &field, state == -1 ? TAP_PI : state); arm11_add_ir_scan_vc(1, &field, state == -1 ? TAP_IRPAUSE : state);
} }
/** Verify shifted out data from Scan Chain Register (SCREG) /** Verify shifted out data from Scan Chain Register (SCREG)
@ -179,7 +179,7 @@ void arm11_add_debug_SCAN_N(arm11_common_t * arm11, u8 chain, enum tap_state sta
field.in_handler = arm11_in_handler_SCAN_N; field.in_handler = arm11_in_handler_SCAN_N;
arm11_add_dr_scan_vc(1, &field, state == -1 ? TAP_PD : state); arm11_add_dr_scan_vc(1, &field, state == -1 ? TAP_DRPAUSE : state);
} }
/** Write an instruction into the ITR register /** Write an instruction into the ITR register
@ -194,7 +194,7 @@ void arm11_add_debug_SCAN_N(arm11_common_t * arm11, u8 chain, enum tap_state sta
* \remarks By default this ends with Run-Test/Idle state * \remarks By default this ends with Run-Test/Idle state
* and causes the instruction to be executed. If * and causes the instruction to be executed. If
* a subsequent write to DTR is needed before * a subsequent write to DTR is needed before
* executing the instruction then TAP_PD should be * executing the instruction then TAP_DRPAUSE should be
* passed to \p state. * passed to \p state.
* *
* \remarks This adds to the JTAG command queue but does \em not execute it. * \remarks This adds to the JTAG command queue but does \em not execute it.
@ -208,7 +208,7 @@ void arm11_add_debug_INST(arm11_common_t * arm11, u32 inst, u8 * flag, enum tap_
arm11_setup_field(arm11, 32, &inst, NULL, itr + 0); arm11_setup_field(arm11, 32, &inst, NULL, itr + 0);
arm11_setup_field(arm11, 1, NULL, flag, itr + 1); arm11_setup_field(arm11, 1, NULL, flag, itr + 1);
arm11_add_dr_scan_vc(asizeof(itr), itr, state == -1 ? TAP_RTI : state); arm11_add_dr_scan_vc(asizeof(itr), itr, state == -1 ? TAP_IDLE : state);
} }
/** Read the Debug Status and Control Register (DSCR) /** Read the Debug Status and Control Register (DSCR)
@ -231,7 +231,7 @@ u32 arm11_read_DSCR(arm11_common_t * arm11)
arm11_setup_field(arm11, 32, NULL, &dscr, &chain1_field); arm11_setup_field(arm11, 32, NULL, &dscr, &chain1_field);
arm11_add_dr_scan_vc(1, &chain1_field, TAP_PD); arm11_add_dr_scan_vc(1, &chain1_field, TAP_DRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
@ -262,7 +262,7 @@ void arm11_write_DSCR(arm11_common_t * arm11, u32 dscr)
arm11_setup_field(arm11, 32, &dscr, NULL, &chain1_field); arm11_setup_field(arm11, 32, &dscr, NULL, &chain1_field);
arm11_add_dr_scan_vc(1, &chain1_field, TAP_PD); arm11_add_dr_scan_vc(1, &chain1_field, TAP_DRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
@ -369,13 +369,13 @@ void arm11_run_instr_no_data(arm11_common_t * arm11, u32 * opcode, size_t count)
while (count--) while (count--)
{ {
arm11_add_debug_INST(arm11, *opcode++, NULL, TAP_RTI); arm11_add_debug_INST(arm11, *opcode++, NULL, TAP_IDLE);
while (1) while (1)
{ {
u8 flag; u8 flag;
arm11_add_debug_INST(arm11, 0, &flag, count ? TAP_RTI : TAP_PD); arm11_add_debug_INST(arm11, 0, &flag, count ? TAP_IDLE : TAP_DRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
@ -416,7 +416,7 @@ void arm11_run_instr_data_to_core(arm11_common_t * arm11, u32 opcode, u32 * data
{ {
arm11_add_IR(arm11, ARM11_ITRSEL, -1); arm11_add_IR(arm11, ARM11_ITRSEL, -1);
arm11_add_debug_INST(arm11, opcode, NULL, TAP_PD); arm11_add_debug_INST(arm11, opcode, NULL, TAP_DRPAUSE);
arm11_add_IR(arm11, ARM11_EXTEST, -1); arm11_add_IR(arm11, ARM11_EXTEST, -1);
@ -436,7 +436,7 @@ void arm11_run_instr_data_to_core(arm11_common_t * arm11, u32 opcode, u32 * data
{ {
Data = *data; Data = *data;
arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_RTI); arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_IDLE);
jtag_execute_queue(); jtag_execute_queue();
JTAG_DEBUG("DTR Ready %d nRetry %d", Ready, nRetry); JTAG_DEBUG("DTR Ready %d nRetry %d", Ready, nRetry);
@ -452,7 +452,7 @@ void arm11_run_instr_data_to_core(arm11_common_t * arm11, u32 opcode, u32 * data
{ {
Data = 0; Data = 0;
arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_PD); arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_DRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
JTAG_DEBUG("DTR Data %08x Ready %d nRetry %d", Data, Ready, nRetry); JTAG_DEBUG("DTR Data %08x Ready %d nRetry %d", Data, Ready, nRetry);
@ -462,18 +462,18 @@ void arm11_run_instr_data_to_core(arm11_common_t * arm11, u32 opcode, u32 * data
/** JTAG path for arm11_run_instr_data_to_core_noack /** JTAG path for arm11_run_instr_data_to_core_noack
* *
* The repeated TAP_RTI's do not cause a repeated execution * The repeated TAP_IDLE's do not cause a repeated execution
* if passed without leaving the state. * if passed without leaving the state.
* *
* Since this is more than 7 bits (adjustable via adding more * Since this is more than 7 bits (adjustable via adding more
* TAP_RTI's) it produces an artificial delay in the lower * TAP_IDLE's) it produces an artificial delay in the lower
* layer (FT2232) that is long enough to finish execution on * layer (FT2232) that is long enough to finish execution on
* the core but still shorter than any manually inducible delays. * the core but still shorter than any manually inducible delays.
* *
*/ */
enum tap_state arm11_MOVE_PD_RTI_PD_with_delay[] = enum tap_state arm11_MOVE_PD_RTI_PD_with_delay[] =
{ {
TAP_E2D, TAP_UD, TAP_RTI, TAP_RTI, TAP_RTI, TAP_SDS, TAP_CD, TAP_SD TAP_DREXIT2, TAP_DRUPDATE, TAP_IDLE, TAP_IDLE, TAP_IDLE, TAP_DRSELECT, TAP_DRCAPTURE, TAP_DRSHIFT
}; };
@ -497,7 +497,7 @@ void arm11_run_instr_data_to_core_noack(arm11_common_t * arm11, u32 opcode, u32
{ {
arm11_add_IR(arm11, ARM11_ITRSEL, -1); arm11_add_IR(arm11, ARM11_ITRSEL, -1);
arm11_add_debug_INST(arm11, opcode, NULL, TAP_PD); arm11_add_debug_INST(arm11, opcode, NULL, TAP_DRPAUSE);
arm11_add_IR(arm11, ARM11_EXTEST, -1); arm11_add_IR(arm11, ARM11_EXTEST, -1);
@ -517,13 +517,13 @@ void arm11_run_instr_data_to_core_noack(arm11_common_t * arm11, u32 opcode, u32
if (count) if (count)
{ {
jtag_add_dr_scan(asizeof(chain5_fields), chain5_fields, TAP_PD); jtag_add_dr_scan(asizeof(chain5_fields), chain5_fields, TAP_DRPAUSE);
jtag_add_pathmove(asizeof(arm11_MOVE_PD_RTI_PD_with_delay), jtag_add_pathmove(asizeof(arm11_MOVE_PD_RTI_PD_with_delay),
arm11_MOVE_PD_RTI_PD_with_delay); arm11_MOVE_PD_RTI_PD_with_delay);
} }
else else
{ {
jtag_add_dr_scan(asizeof(chain5_fields), chain5_fields, TAP_RTI); jtag_add_dr_scan(asizeof(chain5_fields), chain5_fields, TAP_IDLE);
} }
} }
@ -532,7 +532,7 @@ void arm11_run_instr_data_to_core_noack(arm11_common_t * arm11, u32 opcode, u32
chain5_fields[0].out_value = 0; chain5_fields[0].out_value = 0;
chain5_fields[1].in_value = ReadyPos++; chain5_fields[1].in_value = ReadyPos++;
arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_PD); arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, TAP_DRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
@ -586,7 +586,7 @@ void arm11_run_instr_data_from_core(arm11_common_t * arm11, u32 opcode, u32 * da
{ {
arm11_add_IR(arm11, ARM11_ITRSEL, -1); arm11_add_IR(arm11, ARM11_ITRSEL, -1);
arm11_add_debug_INST(arm11, opcode, NULL, TAP_RTI); arm11_add_debug_INST(arm11, opcode, NULL, TAP_IDLE);
arm11_add_IR(arm11, ARM11_INTEST, -1); arm11_add_IR(arm11, ARM11_INTEST, -1);
@ -604,7 +604,7 @@ void arm11_run_instr_data_from_core(arm11_common_t * arm11, u32 opcode, u32 * da
{ {
do do
{ {
arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, count ? TAP_RTI : TAP_PD); arm11_add_dr_scan_vc(asizeof(chain5_fields), chain5_fields, count ? TAP_IDLE : TAP_DRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
JTAG_DEBUG("DTR Data %08x Ready %d nRetry %d", Data, Ready, nRetry); JTAG_DEBUG("DTR Data %08x Ready %d nRetry %d", Data, Ready, nRetry);
@ -703,7 +703,7 @@ void arm11_sc7_run(arm11_common_t * arm11, arm11_sc7_action_t * actions, size_t
{ {
JTAG_DEBUG("SC7 <= Address %02x Data %08x nRW %d", AddressOut, DataOut, nRW); JTAG_DEBUG("SC7 <= Address %02x Data %08x nRW %d", AddressOut, DataOut, nRW);
arm11_add_dr_scan_vc(asizeof(chain7_fields), chain7_fields, TAP_PD); arm11_add_dr_scan_vc(asizeof(chain7_fields), chain7_fields, TAP_DRPAUSE);
jtag_execute_queue(); jtag_execute_queue();
JTAG_DEBUG("SC7 => Address %02x Data %08x Ready %d", AddressIn, DataIn, Ready); JTAG_DEBUG("SC7 => Address %02x Data %08x Ready %d", AddressIn, DataIn, Ready);

View File

@ -99,7 +99,7 @@ int arm720t_scan_cp15(target_t *target, u32 out, u32 *in, int instruction, int c
buf_set_u32(out_buf, 0, 32, flip_u32(out, 32)); buf_set_u32(out_buf, 0, 32, flip_u32(out, 32));
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK)
{ {
return retval; return retval;

View File

@ -584,7 +584,7 @@ int arm7_9_execute_sys_speed(struct target_s *target)
reg_t *dbg_stat = &arm7_9->eice_cache->reg_list[EICE_DBG_STAT]; reg_t *dbg_stat = &arm7_9->eice_cache->reg_list[EICE_DBG_STAT];
/* set RESTART instruction */ /* set RESTART instruction */
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
if (arm7_9->need_bypass_before_restart) { if (arm7_9->need_bypass_before_restart) {
arm7_9->need_bypass_before_restart = 0; arm7_9->need_bypass_before_restart = 0;
arm_jtag_set_instr(jtag_info, 0xf, NULL); arm_jtag_set_instr(jtag_info, 0xf, NULL);
@ -630,7 +630,7 @@ int arm7_9_execute_fast_sys_speed(struct target_s *target)
reg_t *dbg_stat = &arm7_9->eice_cache->reg_list[EICE_DBG_STAT]; reg_t *dbg_stat = &arm7_9->eice_cache->reg_list[EICE_DBG_STAT];
/* set RESTART instruction */ /* set RESTART instruction */
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
if (arm7_9->need_bypass_before_restart) { if (arm7_9->need_bypass_before_restart) {
arm7_9->need_bypass_before_restart = 0; arm7_9->need_bypass_before_restart = 0;
arm_jtag_set_instr(jtag_info, 0xf, NULL); arm_jtag_set_instr(jtag_info, 0xf, NULL);
@ -1492,14 +1492,14 @@ int arm7_9_restart_core(struct target_s *target)
arm_jtag_t *jtag_info = &arm7_9->jtag_info; arm_jtag_t *jtag_info = &arm7_9->jtag_info;
/* set RESTART instruction */ /* set RESTART instruction */
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
if (arm7_9->need_bypass_before_restart) { if (arm7_9->need_bypass_before_restart) {
arm7_9->need_bypass_before_restart = 0; arm7_9->need_bypass_before_restart = 0;
arm_jtag_set_instr(jtag_info, 0xf, NULL); arm_jtag_set_instr(jtag_info, 0xf, NULL);
} }
arm_jtag_set_instr(jtag_info, 0x4, NULL); arm_jtag_set_instr(jtag_info, 0x4, NULL);
jtag_add_runtest(1, TAP_RTI); jtag_add_runtest(1, TAP_IDLE);
return jtag_execute_queue(); return jtag_execute_queue();
} }

View File

@ -110,7 +110,7 @@ int arm7tdmi_examine_debug_reason(target_t *target)
u8 databus[4]; u8 databus[4];
u8 breakpoint; u8 breakpoint;
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
fields[0].tap = arm7_9->jtag_info.tap; fields[0].tap = arm7_9->jtag_info.tap;
fields[0].num_bits = 1; fields[0].num_bits = 1;
@ -138,7 +138,7 @@ int arm7tdmi_examine_debug_reason(target_t *target)
} }
arm_jtag_set_instr(&arm7_9->jtag_info, arm7_9->jtag_info.intest_instr, NULL); arm_jtag_set_instr(&arm7_9->jtag_info, arm7_9->jtag_info.intest_instr, NULL);
jtag_add_dr_scan(2, fields, TAP_PD); jtag_add_dr_scan(2, fields, TAP_DRPAUSE);
if((retval = jtag_execute_queue()) != ERROR_OK) if((retval = jtag_execute_queue()) != ERROR_OK)
{ {
return retval; return retval;
@ -149,7 +149,7 @@ int arm7tdmi_examine_debug_reason(target_t *target)
fields[1].in_value = NULL; fields[1].in_value = NULL;
fields[1].out_value = databus; fields[1].out_value = databus;
jtag_add_dr_scan(2, fields, TAP_PD); jtag_add_dr_scan(2, fields, TAP_DRPAUSE);
if (breakpoint & 1) if (breakpoint & 1)
target->debug_reason = DBG_REASON_WATCHPOINT; target->debug_reason = DBG_REASON_WATCHPOINT;
@ -179,7 +179,7 @@ static __inline int arm7tdmi_clock_out_inner(arm_jtag_t *jtag_info, u32 out, int
/* put an instruction in the ARM7TDMI pipeline or write the data bus, and optionally read data */ /* put an instruction in the ARM7TDMI pipeline or write the data bus, and optionally read data */
static __inline int arm7tdmi_clock_out(arm_jtag_t *jtag_info, u32 out, u32 *deprecated, int breakpoint) static __inline int arm7tdmi_clock_out(arm_jtag_t *jtag_info, u32 out, u32 *deprecated, int breakpoint)
{ {
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
arm_jtag_scann(jtag_info, 0x1); arm_jtag_scann(jtag_info, 0x1);
arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL); arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL);
@ -192,7 +192,7 @@ int arm7tdmi_clock_data_in(arm_jtag_t *jtag_info, u32 *in)
int retval = ERROR_OK; int retval = ERROR_OK;
scan_field_t fields[2]; scan_field_t fields[2];
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK)
{ {
return retval; return retval;
@ -253,7 +253,7 @@ int arm7tdmi_clock_data_in_endianness(arm_jtag_t *jtag_info, void *in, int size,
int retval = ERROR_OK; int retval = ERROR_OK;
scan_field_t fields[2]; scan_field_t fields[2];
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK)
{ {
return retval; return retval;

View File

@ -106,7 +106,7 @@ int arm920t_read_cp15_physical(target_t *target, int reg_addr, u32 *value)
u8 reg_addr_buf = reg_addr & 0x3f; u8 reg_addr_buf = reg_addr & 0x3f;
u8 nr_w_buf = 0; u8 nr_w_buf = 0;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(jtag_info, 0xf); arm_jtag_scann(jtag_info, 0xf);
arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL); arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL);
@ -178,7 +178,7 @@ int arm920t_write_cp15_physical(target_t *target, int reg_addr, u32 value)
buf_set_u32(value_buf, 0, 32, value); buf_set_u32(value_buf, 0, 32, value);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(jtag_info, 0xf); arm_jtag_scann(jtag_info, 0xf);
arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL); arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL);
@ -243,7 +243,7 @@ int arm920t_execute_cp15(target_t *target, u32 cp15_opcode, u32 arm_opcode)
u8 nr_w_buf = 0; u8 nr_w_buf = 0;
u8 cp15_opcode_buf[4]; u8 cp15_opcode_buf[4];
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(jtag_info, 0xf); arm_jtag_scann(jtag_info, 0xf);
arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL); arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL);

View File

@ -132,7 +132,7 @@ int arm926ejs_cp15_read(target_t *target, u32 op1, u32 op2, u32 CRn, u32 CRm, u3
buf_set_u32(address_buf, 0, 14, address); buf_set_u32(address_buf, 0, 14, address);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK)
{ {
return retval; return retval;
@ -222,7 +222,7 @@ int arm926ejs_cp15_write(target_t *target, u32 op1, u32 op2, u32 CRn, u32 CRm, u
buf_set_u32(address_buf, 0, 14, address); buf_set_u32(address_buf, 0, 14, address);
buf_set_u32(value_buf, 0, 32, value); buf_set_u32(value_buf, 0, 32, value);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK)
{ {
return retval; return retval;

View File

@ -178,7 +178,7 @@ int arm966e_read_cp15(target_t *target, int reg_addr, u32 *value)
u8 reg_addr_buf = reg_addr & 0x3f; u8 reg_addr_buf = reg_addr & 0x3f;
u8 nr_w_buf = 0; u8 nr_w_buf = 0;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK)
{ {
return retval; return retval;
@ -246,7 +246,7 @@ int arm966e_write_cp15(target_t *target, int reg_addr, u32 value)
buf_set_u32(value_buf, 0, 32, value); buf_set_u32(value_buf, 0, 32, value);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0xf)) != ERROR_OK)
{ {
return retval; return retval;

View File

@ -125,7 +125,7 @@ int arm9tdmi_examine_debug_reason(target_t *target)
u8 instructionbus[4]; u8 instructionbus[4];
u8 debug_reason; u8 debug_reason;
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
fields[0].tap = arm7_9->jtag_info.tap; fields[0].tap = arm7_9->jtag_info.tap;
fields[0].num_bits = 32; fields[0].num_bits = 32;
@ -163,7 +163,7 @@ int arm9tdmi_examine_debug_reason(target_t *target)
} }
arm_jtag_set_instr(&arm7_9->jtag_info, arm7_9->jtag_info.intest_instr, NULL); arm_jtag_set_instr(&arm7_9->jtag_info, arm7_9->jtag_info.intest_instr, NULL);
jtag_add_dr_scan(3, fields, TAP_PD); jtag_add_dr_scan(3, fields, TAP_DRPAUSE);
if((retval = jtag_execute_queue()) != ERROR_OK) if((retval = jtag_execute_queue()) != ERROR_OK)
{ {
return retval; return retval;
@ -176,7 +176,7 @@ int arm9tdmi_examine_debug_reason(target_t *target)
fields[2].in_value = NULL; fields[2].in_value = NULL;
fields[2].out_value = instructionbus; fields[2].out_value = instructionbus;
jtag_add_dr_scan(3, fields, TAP_PD); jtag_add_dr_scan(3, fields, TAP_DRPAUSE);
if (debug_reason & 0x4) if (debug_reason & 0x4)
if (debug_reason & 0x2) if (debug_reason & 0x2)
@ -207,7 +207,7 @@ int arm9tdmi_clock_out(arm_jtag_t *jtag_info, u32 instr, u32 out, u32 *in, int s
if (sysspeed) if (sysspeed)
buf_set_u32(&sysspeed_buf, 2, 1, 1); buf_set_u32(&sysspeed_buf, 2, 1, 1);
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK)
{ {
return retval; return retval;
@ -282,7 +282,7 @@ int arm9tdmi_clock_data_in(arm_jtag_t *jtag_info, u32 *in)
int retval = ERROR_OK;; int retval = ERROR_OK;;
scan_field_t fields[3]; scan_field_t fields[3];
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK)
{ {
return retval; return retval;
@ -354,7 +354,7 @@ int arm9tdmi_clock_data_in_endianness(arm_jtag_t *jtag_info, void *in, int size,
int retval = ERROR_OK; int retval = ERROR_OK;
scan_field_t fields[3]; scan_field_t fields[3];
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK) if((retval = arm_jtag_scann(jtag_info, 0x1)) != ERROR_OK)
{ {
return retval; return retval;

View File

@ -64,7 +64,7 @@ int swjdp_scan(arm_jtag_t *jtag_info, u8 instr, u8 reg_addr, u8 RnW, u8 *outvalu
scan_field_t fields[2]; scan_field_t fields[2];
u8 out_addr_buf; u8 out_addr_buf;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_set_instr(jtag_info, instr, NULL); arm_jtag_set_instr(jtag_info, instr, NULL);
fields[0].tap = jtag_info->tap; fields[0].tap = jtag_info->tap;
@ -100,7 +100,7 @@ int swjdp_scan_u32(arm_jtag_t *jtag_info, u8 instr, u8 reg_addr, u8 RnW, u32 out
u8 out_value_buf[4]; u8 out_value_buf[4];
u8 out_addr_buf; u8 out_addr_buf;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_set_instr(jtag_info, instr, NULL); arm_jtag_set_instr(jtag_info, instr, NULL);
fields[0].tap = jtag_info->tap; fields[0].tap = jtag_info->tap;

View File

@ -246,7 +246,7 @@ int embeddedice_read_reg_w_check(reg_t *reg, u8* check_value, u8* check_mask)
u8 field1_out[1]; u8 field1_out[1];
u8 field2_out[1]; u8 field2_out[1];
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(ice_reg->jtag_info, 0x2); arm_jtag_scann(ice_reg->jtag_info, 0x2);
arm_jtag_set_instr(ice_reg->jtag_info, ice_reg->jtag_info->intest_instr, NULL); arm_jtag_set_instr(ice_reg->jtag_info, ice_reg->jtag_info->intest_instr, NULL);
@ -309,7 +309,7 @@ int embeddedice_receive(arm_jtag_t *jtag_info, u32 *data, u32 size)
u8 field1_out[1]; u8 field1_out[1];
u8 field2_out[1]; u8 field2_out[1];
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(jtag_info, 0x2); arm_jtag_scann(jtag_info, 0x2);
arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL); arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL);
@ -400,7 +400,7 @@ void embeddedice_write_reg(reg_t *reg, u32 value)
LOG_DEBUG("%i: 0x%8.8x", ice_reg->addr, value); LOG_DEBUG("%i: 0x%8.8x", ice_reg->addr, value);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(ice_reg->jtag_info, 0x2); arm_jtag_scann(ice_reg->jtag_info, 0x2);
arm_jtag_set_instr(ice_reg->jtag_info, ice_reg->jtag_info->intest_instr, NULL); arm_jtag_set_instr(ice_reg->jtag_info, ice_reg->jtag_info->intest_instr, NULL);
@ -426,7 +426,7 @@ int embeddedice_send(arm_jtag_t *jtag_info, u32 *data, u32 size)
u8 field1_out[1]; u8 field1_out[1];
u8 field2_out[1]; u8 field2_out[1];
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(jtag_info, 0x2); arm_jtag_scann(jtag_info, 0x2);
arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL); arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL);
@ -495,7 +495,7 @@ int embeddedice_handshake(arm_jtag_t *jtag_info, int hsbit, u32 timeout)
else else
return ERROR_INVALID_ARGUMENTS; return ERROR_INVALID_ARGUMENTS;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(jtag_info, 0x2); arm_jtag_scann(jtag_info, 0x2);
arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL); arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL);

View File

@ -184,7 +184,7 @@ int etb_read_ram(etb_t *etb, u32 *data, int num_frames)
scan_field_t fields[3]; scan_field_t fields[3];
int i; int i;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
etb_scann(etb, 0x0); etb_scann(etb, 0x0);
etb_set_instr(etb, 0xc); etb_set_instr(etb, 0xc);
@ -255,7 +255,7 @@ int etb_read_reg_w_check(reg_t *reg, u8* check_value, u8* check_mask)
LOG_DEBUG("%i", etb_reg->addr); LOG_DEBUG("%i", etb_reg->addr);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
etb_scann(etb_reg->etb, 0x0); etb_scann(etb_reg->etb, 0x0);
etb_set_instr(etb_reg->etb, 0xc); etb_set_instr(etb_reg->etb, 0xc);
@ -351,7 +351,7 @@ int etb_write_reg(reg_t *reg, u32 value)
LOG_DEBUG("%i: 0x%8.8x", etb_reg->addr, value); LOG_DEBUG("%i: 0x%8.8x", etb_reg->addr, value);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
etb_scann(etb_reg->etb, 0x0); etb_scann(etb_reg->etb, 0x0);
etb_set_instr(etb_reg->etb, 0xc); etb_set_instr(etb_reg->etb, 0xc);

View File

@ -335,7 +335,7 @@ int etm_read_reg_w_check(reg_t *reg, u8* check_value, u8* check_mask)
LOG_DEBUG("%i", etm_reg->addr); LOG_DEBUG("%i", etm_reg->addr);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(etm_reg->jtag_info, 0x6); arm_jtag_scann(etm_reg->jtag_info, 0x6);
arm_jtag_set_instr(etm_reg->jtag_info, etm_reg->jtag_info->intest_instr, NULL); arm_jtag_set_instr(etm_reg->jtag_info, etm_reg->jtag_info->intest_instr, NULL);
@ -426,7 +426,7 @@ int etm_write_reg(reg_t *reg, u32 value)
LOG_DEBUG("%i: 0x%8.8x", etm_reg->addr, value); LOG_DEBUG("%i: 0x%8.8x", etm_reg->addr, value);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
arm_jtag_scann(etm_reg->jtag_info, 0x6); arm_jtag_scann(etm_reg->jtag_info, 0x6);
arm_jtag_set_instr(etm_reg->jtag_info, etm_reg->jtag_info->intest_instr, NULL); arm_jtag_set_instr(etm_reg->jtag_info, etm_reg->jtag_info->intest_instr, NULL);

View File

@ -127,7 +127,7 @@ int feroceon_dummy_clock_out(arm_jtag_t *jtag_info, u32 instr)
buf_set_u32(instr_buf, 0, 32, flip_u32(instr, 32)); buf_set_u32(instr_buf, 0, 32, flip_u32(instr, 32));
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
arm_jtag_scann(jtag_info, 0x1); arm_jtag_scann(jtag_info, 0x1);
arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL); arm_jtag_set_instr(jtag_info, jtag_info->intest_instr, NULL);

View File

@ -65,7 +65,7 @@ int mips_ejtag_get_idcode(mips_ejtag_t *ejtag_info, u32 *idcode, in_handler_t ha
{ {
scan_field_t field; scan_field_t field;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_IDCODE, NULL); mips_ejtag_set_instr(ejtag_info, EJTAG_INST_IDCODE, NULL);
@ -92,7 +92,7 @@ int mips_ejtag_get_impcode(mips_ejtag_t *ejtag_info, u32 *impcode, in_handler_t
{ {
scan_field_t field; scan_field_t field;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_IMPCODE, NULL); mips_ejtag_set_instr(ejtag_info, EJTAG_INST_IMPCODE, NULL);
@ -202,7 +202,7 @@ int mips_ejtag_config_step(mips_ejtag_t *ejtag_info, int enable_step)
int mips_ejtag_enter_debug(mips_ejtag_t *ejtag_info) int mips_ejtag_enter_debug(mips_ejtag_t *ejtag_info)
{ {
u32 ejtag_ctrl; u32 ejtag_ctrl;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL, NULL); mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL, NULL);
/* set debug break bit */ /* set debug break bit */

View File

@ -163,7 +163,7 @@ int mips_m4k_poll(target_t *target)
u32 ejtag_ctrl = ejtag_info->ejtag_ctrl; u32 ejtag_ctrl = ejtag_info->ejtag_ctrl;
/* read ejtag control reg */ /* read ejtag control reg */
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL, NULL); mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL, NULL);
mips_ejtag_drscan_32(ejtag_info, &ejtag_ctrl); mips_ejtag_drscan_32(ejtag_info, &ejtag_ctrl);
@ -173,7 +173,7 @@ int mips_m4k_poll(target_t *target)
{ {
/* we have detected a reset, clear flag /* we have detected a reset, clear flag
* otherwise ejtag will not work */ * otherwise ejtag will not work */
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
ejtag_ctrl = ejtag_info->ejtag_ctrl & ~EJTAG_CTRL_ROCC; ejtag_ctrl = ejtag_info->ejtag_ctrl & ~EJTAG_CTRL_ROCC;
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL, NULL); mips_ejtag_set_instr(ejtag_info, EJTAG_INST_CONTROL, NULL);
@ -186,7 +186,7 @@ int mips_m4k_poll(target_t *target)
{ {
if ((target->state == TARGET_RUNNING) || (target->state == TARGET_RESET)) if ((target->state == TARGET_RUNNING) || (target->state == TARGET_RESET))
{ {
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_NORMALBOOT, NULL); mips_ejtag_set_instr(ejtag_info, EJTAG_INST_NORMALBOOT, NULL);
target->state = TARGET_HALTED; target->state = TARGET_HALTED;
@ -279,12 +279,12 @@ int mips_m4k_assert_reset(target_t *target)
if (target->reset_halt) if (target->reset_halt)
{ {
/* use hardware to catch reset */ /* use hardware to catch reset */
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_EJTAGBOOT, NULL); mips_ejtag_set_instr(ejtag_info, EJTAG_INST_EJTAGBOOT, NULL);
} }
else else
{ {
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
mips_ejtag_set_instr(ejtag_info, EJTAG_INST_NORMALBOOT, NULL); mips_ejtag_set_instr(ejtag_info, EJTAG_INST_NORMALBOOT, NULL);
} }

View File

@ -252,7 +252,7 @@ int xscale_read_dcsr(target_t *target)
u8 field2_check_value = 0x0; u8 field2_check_value = 0x0;
u8 field2_check_mask = 0x1; u8 field2_check_mask = 0x1;
jtag_add_end_state(TAP_PD); jtag_add_end_state(TAP_DRPAUSE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dcsr); xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dcsr);
buf_set_u32(&field0, 1, 1, xscale->hold_rst); buf_set_u32(&field0, 1, 1, xscale->hold_rst);
@ -300,7 +300,7 @@ int xscale_read_dcsr(target_t *target)
fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value; fields[1].out_value = xscale->reg_cache->reg_list[XSCALE_DCSR].value;
fields[1].in_value = NULL; fields[1].in_value = NULL;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
jtag_add_dr_scan(3, fields, -1); jtag_add_dr_scan(3, fields, -1);
@ -332,9 +332,9 @@ int xscale_receive(target_t *target, u32 *buffer, int num_words)
int i; int i;
path[0] = TAP_SDS; path[0] = TAP_DRSELECT;
path[1] = TAP_CD; path[1] = TAP_DRCAPTURE;
path[2] = TAP_SD; path[2] = TAP_DRSHIFT;
fields[0].tap = xscale->jtag_info.tap; fields[0].tap = xscale->jtag_info.tap;
fields[0].num_bits = 3; fields[0].num_bits = 3;
@ -362,9 +362,9 @@ int xscale_receive(target_t *target, u32 *buffer, int num_words)
fields[2].in_value = NULL; fields[2].in_value = NULL;
jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL); jtag_set_check_value(fields+2, &field2_check_value, &field2_check_mask, NULL);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgtx); xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgtx);
jtag_add_runtest(1, -1); /* ensures that we're in the TAP_RTI state as the above could be a no-op */ jtag_add_runtest(1, -1); /* ensures that we're in the TAP_IDLE state as the above could be a no-op */
/* repeat until all words have been collected */ /* repeat until all words have been collected */
int attempts=0; int attempts=0;
@ -379,7 +379,7 @@ int xscale_receive(target_t *target, u32 *buffer, int num_words)
fields[1].in_handler_priv = (u8*)&field1[i]; fields[1].in_handler_priv = (u8*)&field1[i];
jtag_add_pathmove(3, path); jtag_add_pathmove(3, path);
jtag_add_dr_scan(3, fields, TAP_RTI); jtag_add_dr_scan(3, fields, TAP_IDLE);
words_scheduled++; words_scheduled++;
} }
@ -442,20 +442,20 @@ int xscale_read_tx(target_t *target, int consume)
u8 field2_check_value = 0x0; u8 field2_check_value = 0x0;
u8 field2_check_mask = 0x1; u8 field2_check_mask = 0x1;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgtx); xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgtx);
path[0] = TAP_SDS; path[0] = TAP_DRSELECT;
path[1] = TAP_CD; path[1] = TAP_DRCAPTURE;
path[2] = TAP_SD; path[2] = TAP_DRSHIFT;
noconsume_path[0] = TAP_SDS; noconsume_path[0] = TAP_DRSELECT;
noconsume_path[1] = TAP_CD; noconsume_path[1] = TAP_DRCAPTURE;
noconsume_path[2] = TAP_E1D; noconsume_path[2] = TAP_DREXIT1;
noconsume_path[3] = TAP_PD; noconsume_path[3] = TAP_DRPAUSE;
noconsume_path[4] = TAP_E2D; noconsume_path[4] = TAP_DREXIT2;
noconsume_path[5] = TAP_SD; noconsume_path[5] = TAP_DRSHIFT;
fields[0].tap = xscale->jtag_info.tap; fields[0].tap = xscale->jtag_info.tap;
fields[0].num_bits = 3; fields[0].num_bits = 3;
@ -499,7 +499,7 @@ int xscale_read_tx(target_t *target, int consume)
jtag_add_pathmove(sizeof(noconsume_path)/sizeof(*noconsume_path), noconsume_path); jtag_add_pathmove(sizeof(noconsume_path)/sizeof(*noconsume_path), noconsume_path);
} }
jtag_add_dr_scan(3, fields, TAP_RTI); jtag_add_dr_scan(3, fields, TAP_IDLE);
if ((retval = jtag_execute_queue()) != ERROR_OK) if ((retval = jtag_execute_queue()) != ERROR_OK)
{ {
@ -551,7 +551,7 @@ int xscale_write_rx(target_t *target)
u8 field2_check_value = 0x0; u8 field2_check_value = 0x0;
u8 field2_check_mask = 0x1; u8 field2_check_mask = 0x1;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgrx); xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgrx);
@ -588,7 +588,7 @@ int xscale_write_rx(target_t *target)
LOG_DEBUG("polling RX"); LOG_DEBUG("polling RX");
for (;;) for (;;)
{ {
jtag_add_dr_scan(3, fields, TAP_RTI); jtag_add_dr_scan(3, fields, TAP_IDLE);
if ((retval = jtag_execute_queue()) != ERROR_OK) if ((retval = jtag_execute_queue()) != ERROR_OK)
{ {
@ -617,7 +617,7 @@ int xscale_write_rx(target_t *target)
/* set rx_valid */ /* set rx_valid */
field2 = 0x1; field2 = 0x1;
jtag_add_dr_scan(3, fields, TAP_RTI); jtag_add_dr_scan(3, fields, TAP_IDLE);
if ((retval = jtag_execute_queue()) != ERROR_OK) if ((retval = jtag_execute_queue()) != ERROR_OK)
{ {
@ -640,7 +640,7 @@ int xscale_send(target_t *target, u8 *buffer, int count, int size)
int done_count = 0; int done_count = 0;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgrx); xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dbgrx);
@ -683,7 +683,7 @@ int xscale_send(target_t *target, u8 *buffer, int count, int size)
3, 3,
bits, bits,
t, t,
TAP_RTI); TAP_IDLE);
buffer += size; buffer += size;
} }
@ -726,7 +726,7 @@ int xscale_write_dcsr(target_t *target, int hold_rst, int ext_dbg_brk)
if (ext_dbg_brk != -1) if (ext_dbg_brk != -1)
xscale->external_debug_break = ext_dbg_brk; xscale->external_debug_break = ext_dbg_brk;
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dcsr); xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dcsr);
buf_set_u32(&field0, 1, 1, xscale->hold_rst); buf_set_u32(&field0, 1, 1, xscale->hold_rst);
@ -796,7 +796,7 @@ int xscale_load_ic(target_t *target, int mini, u32 va, u32 buffer[8])
LOG_DEBUG("loading miniIC at 0x%8.8x", va); LOG_DEBUG("loading miniIC at 0x%8.8x", va);
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.ldic); /* LDIC */ xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.ldic); /* LDIC */
/* CMD is b010 for Main IC and b011 for Mini IC */ /* CMD is b010 for Main IC and b011 for Mini IC */
@ -859,7 +859,7 @@ int xscale_invalidate_ic_line(target_t *target, u32 va)
scan_field_t fields[2]; scan_field_t fields[2];
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.ldic); /* LDIC */ xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.ldic); /* LDIC */
/* CMD for invalidate IC line b000, bits [6:4] b000 */ /* CMD for invalidate IC line b000, bits [6:4] b000 */
@ -1597,7 +1597,7 @@ int xscale_assert_reset(target_t *target)
/* select DCSR instruction (set endstate to R-T-I to ensure we don't /* select DCSR instruction (set endstate to R-T-I to ensure we don't
* end up in T-L-R, which would reset JTAG * end up in T-L-R, which would reset JTAG
*/ */
jtag_add_end_state(TAP_RTI); jtag_add_end_state(TAP_IDLE);
xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dcsr); xscale_jtag_set_instr(xscale->jtag_info.tap, xscale->jtag_info.dcsr);
/* set Hold reset, Halt mode and Trap Reset */ /* set Hold reset, Halt mode and Trap Reset */
@ -1671,7 +1671,7 @@ int xscale_deassert_reset(target_t *target)
/* wait 300ms; 150 and 100ms were not enough */ /* wait 300ms; 150 and 100ms were not enough */
jtag_add_sleep(300*1000); jtag_add_sleep(300*1000);
jtag_add_runtest(2030, TAP_RTI); jtag_add_runtest(2030, TAP_IDLE);
jtag_execute_queue(); jtag_execute_queue();
/* set Hold reset, Halt mode and Trap Reset */ /* set Hold reset, Halt mode and Trap Reset */
@ -1734,7 +1734,7 @@ int xscale_deassert_reset(target_t *target)
xscale_load_ic(target, 1, 0x0, xscale->low_vectors); xscale_load_ic(target, 1, 0x0, xscale->low_vectors);
xscale_load_ic(target, 1, 0xffff0000, xscale->high_vectors); xscale_load_ic(target, 1, 0xffff0000, xscale->high_vectors);
jtag_add_runtest(30, TAP_RTI); jtag_add_runtest(30, TAP_IDLE);
jtag_add_sleep(100000); jtag_add_sleep(100000);

View File

@ -62,9 +62,9 @@ int xenddr = 0;
enum tap_state xsvf_to_tap[] = enum tap_state xsvf_to_tap[] =
{ {
TAP_TLR, TAP_RTI, TAP_RESET, TAP_IDLE,
TAP_SDS, TAP_CD, TAP_SD, TAP_E1D, TAP_PD, TAP_E2D, TAP_UD, TAP_DRSELECT, TAP_DRCAPTURE, TAP_DRSHIFT, TAP_DREXIT1, TAP_DRPAUSE, TAP_DREXIT2, TAP_DRUPDATE,
TAP_SIS, TAP_CI, TAP_SI, TAP_E1I, TAP_PI, TAP_E2I, TAP_UI, TAP_IRSELECT, TAP_IRCAPTURE, TAP_IRSHIFT, TAP_IREXIT1, TAP_IRPAUSE, TAP_IREXIT2, TAP_IRUPDATE,
}; };
int tap_to_xsvf[] = int tap_to_xsvf[] =
@ -86,10 +86,10 @@ void xsvf_add_statemove(enum tap_state state)
enum tap_state curstate = cmd_queue_cur_state; enum tap_state curstate = cmd_queue_cur_state;
u8 move = TAP_MOVE(cmd_queue_cur_state, state); u8 move = TAP_MOVE(cmd_queue_cur_state, state);
if ((state != TAP_TLR) && (state == cmd_queue_cur_state)) if ((state != TAP_RESET) && (state == cmd_queue_cur_state))
return; return;
if(state==TAP_TLR) if(state==TAP_RESET)
{ {
jtag_add_tlr(); jtag_add_tlr();
return; return;
@ -239,9 +239,9 @@ int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
field.in_handler = NULL; field.in_handler = NULL;
field.in_handler_priv = NULL; field.in_handler_priv = NULL;
if (tap == NULL) if (tap == NULL)
jtag_add_plain_ir_scan(1, &field, TAP_PI); jtag_add_plain_ir_scan(1, &field, TAP_IRPAUSE);
else else
jtag_add_ir_scan(1, &field, TAP_PI); jtag_add_ir_scan(1, &field, TAP_IRPAUSE);
if (jtag_execute_queue() != ERROR_OK) if (jtag_execute_queue() != ERROR_OK)
{ {
tdo_mismatch = 1; tdo_mismatch = 1;
@ -254,7 +254,7 @@ int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
jtag_add_runtest(xruntest, xsvf_to_tap[xendir]); jtag_add_runtest(xruntest, xsvf_to_tap[xendir]);
else else
{ {
xsvf_add_statemove(TAP_RTI); xsvf_add_statemove(TAP_IDLE);
jtag_add_sleep(xruntest); jtag_add_sleep(xruntest);
xsvf_add_statemove(xsvf_to_tap[xendir]); xsvf_add_statemove(xsvf_to_tap[xendir]);
} }
@ -279,9 +279,9 @@ int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
field.in_value = NULL; field.in_value = NULL;
jtag_set_check_value(&field, dr_in_buf, dr_in_mask, NULL); jtag_set_check_value(&field, dr_in_buf, dr_in_mask, NULL);
if (tap == NULL) if (tap == NULL)
jtag_add_plain_dr_scan(1, &field, TAP_PD); jtag_add_plain_dr_scan(1, &field, TAP_DRPAUSE);
else else
jtag_add_dr_scan(1, &field, TAP_PD); jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
if (jtag_execute_queue() != ERROR_OK) if (jtag_execute_queue() != ERROR_OK)
{ {
tdo_mismatch = 1; tdo_mismatch = 1;
@ -293,7 +293,7 @@ int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
jtag_add_runtest(xruntest, xsvf_to_tap[xenddr]); jtag_add_runtest(xruntest, xsvf_to_tap[xenddr]);
else else
{ {
xsvf_add_statemove(TAP_RTI); xsvf_add_statemove(TAP_IDLE);
jtag_add_sleep(xruntest); jtag_add_sleep(xruntest);
xsvf_add_statemove(xsvf_to_tap[xenddr]); xsvf_add_statemove(xsvf_to_tap[xenddr]);
} }
@ -353,9 +353,9 @@ int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
field.in_value = NULL; field.in_value = NULL;
jtag_set_check_value(&field, dr_in_buf, dr_in_mask, NULL); jtag_set_check_value(&field, dr_in_buf, dr_in_mask, NULL);
if (tap == NULL) if (tap == NULL)
jtag_add_plain_dr_scan(1, &field, TAP_PD); jtag_add_plain_dr_scan(1, &field, TAP_DRPAUSE);
else else
jtag_add_dr_scan(1, &field, TAP_PD); jtag_add_dr_scan(1, &field, TAP_DRPAUSE);
if (jtag_execute_queue() != ERROR_OK) if (jtag_execute_queue() != ERROR_OK)
{ {
tdo_mismatch = 1; tdo_mismatch = 1;
@ -367,7 +367,7 @@ int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
jtag_add_runtest(xruntest, xsvf_to_tap[xenddr]); jtag_add_runtest(xruntest, xsvf_to_tap[xenddr]);
else else
{ {
xsvf_add_statemove(TAP_RTI); xsvf_add_statemove(TAP_IDLE);
jtag_add_sleep(xruntest); jtag_add_sleep(xruntest);
xsvf_add_statemove(xsvf_to_tap[xenddr]); xsvf_add_statemove(xsvf_to_tap[xenddr]);
} }
@ -423,7 +423,7 @@ int handle_xsvf_command(struct command_context_s *cmd_ctx, char *cmd, char **arg
*/ */
for(i=0,lasti=0;i<path_len;i++) for(i=0,lasti=0;i<path_len;i++)
{ {
if(path[i]==TAP_TLR) if(path[i]==TAP_RESET)
{ {
if(i>lasti) if(i>lasti)
{ {