Browse Source

Pavel pointed out that jtag_add_tlr() is better than jtag_add_tms().

git-svn-id: svn://svn.berlios.de/openocd/trunk@547 b42882b7-edfa-0310-969c-e2dbd0fdcd60
tags/v0.1.0
oharboe 16 years ago
parent
commit
eabb49b570
3 changed files with 22 additions and 22 deletions
  1. +16
    -16
      src/jtag/jtag.c
  2. +4
    -4
      src/jtag/jtag.h
  3. +2
    -2
      src/pld/virtex2.c

+ 16
- 16
src/jtag/jtag.c View File

@@ -785,17 +785,17 @@ int MINIDRIVER(interface_jtag_add_plain_dr_scan)(int num_fields, scan_field_t *f
return ERROR_OK;
}

void jtag_add_tms()
void jtag_add_tlr()
{
jtag_prelude(TAP_TLR);
int retval;
retval=interface_jtag_add_tms();
retval=interface_jtag_add_tlr();
if (retval!=ERROR_OK)
jtag_error=retval;
}

int MINIDRIVER(interface_jtag_add_tms)()
int MINIDRIVER(interface_jtag_add_tlr)()
{
enum tap_state state = TAP_TLR;
jtag_command_t **last_cmd = jtag_get_last_command_p();
@@ -893,14 +893,14 @@ void jtag_add_runtest(int num_cycles, enum tap_state state)
jtag_error=retval;
}

void jtag_add_reset(int req_tms_or_trst, int req_srst)
void jtag_add_reset(int req_tlr_or_trst, int req_srst)
{
int trst_with_tms = 0;
int trst_with_tlr = 0;
int retval;
/* Make sure that jtag_reset_config allows the requested reset */
/* if SRST pulls TRST, we can't fulfill srst == 1 with trst == 0 */
if (((jtag_reset_config & RESET_SRST_PULLS_TRST) && (req_srst == 1)) && (!req_tms_or_trst))
if (((jtag_reset_config & RESET_SRST_PULLS_TRST) && (req_srst == 1)) && (!req_tlr_or_trst))
{
LOG_ERROR("BUG: requested reset would assert trst");
jtag_error=ERROR_FAIL;
@@ -908,9 +908,9 @@ void jtag_add_reset(int req_tms_or_trst, int req_srst)
}
/* if TRST pulls SRST, we reset with TAP T-L-R */
if (((jtag_reset_config & RESET_TRST_PULLS_SRST) && (req_tms_or_trst)) && (req_srst == 0))
if (((jtag_reset_config & RESET_TRST_PULLS_SRST) && (req_tlr_or_trst)) && (req_srst == 0))
{
trst_with_tms = 1;
trst_with_tlr = 1;
}
if (req_srst && !(jtag_reset_config & RESET_HAS_SRST))
@@ -920,14 +920,14 @@ void jtag_add_reset(int req_tms_or_trst, int req_srst)
return;
}
if (req_tms_or_trst)
if (req_tlr_or_trst)
{
if (!trst_with_tms && (jtag_reset_config & RESET_HAS_TRST))
if (!trst_with_tlr && (jtag_reset_config & RESET_HAS_TRST))
{
jtag_trst = 1;
} else
{
trst_with_tms = 1;
trst_with_tlr = 1;
}
} else
{
@@ -954,11 +954,11 @@ void jtag_add_reset(int req_tms_or_trst, int req_srst)
jtag_add_sleep(jtag_nsrst_delay * 1000);
}
if (trst_with_tms)
if (trst_with_tlr)
{
LOG_DEBUG("JTAG reset with tms instead of TRST");
jtag_add_end_state(TAP_TLR);
jtag_add_tms();
jtag_add_tlr();
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
return;
}
@@ -1427,9 +1427,9 @@ int jtag_register_commands(struct command_context_s *cmd_ctx)
register_command(cmd_ctx, NULL, "reset_config", handle_reset_config_command,
COMMAND_CONFIG, NULL);
register_command(cmd_ctx, NULL, "jtag_nsrst_delay", handle_jtag_nsrst_delay_command,
COMMAND_CONFIG, NULL);
COMMAND_ANY, "jtag_nsrst_delay <ms> - delay after deasserting srst in ms");
register_command(cmd_ctx, NULL, "jtag_ntrst_delay", handle_jtag_ntrst_delay_command,
COMMAND_CONFIG, NULL);
COMMAND_ANY, "jtag_ntrst_delay <ms> - delay after deasserting trst in ms");
register_command(cmd_ctx, NULL, "scan_chain", handle_scan_chain_command,
COMMAND_EXEC, "print current scan chain configuration");
@@ -1497,7 +1497,7 @@ int jtag_init(struct command_context_s *cmd_ctx)
device = device->next;
}
jtag_add_tms();
jtag_add_tlr();
jtag_execute_queue();

/* examine chain first, as this could discover the real chain layout */


+ 4
- 4
src/jtag/jtag.h View File

@@ -268,8 +268,8 @@ extern int interface_jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields
/* run a TAP_TLR reset. End state is TAP_TLR, regardless
* of start state.
*/
extern void jtag_add_tms();
extern int interface_jtag_add_tms();
extern void jtag_add_tlr();
extern int interface_jtag_add_tlr();
/* Do not use jtag_add_pathmove() unless you need to, but do use it
* if you have to.
*
@@ -326,12 +326,12 @@ extern int interface_jtag_add_runtest(int num_cycles, enum tap_state endstate);
* are supported.
*
*/
extern void jtag_add_reset(int req_tms_or_trst, int srst);
extern void jtag_add_reset(int req_tlr_or_trst, int srst);
/* this drives the actual srst and trst pins. srst will always be 0
* if jtag_reset_config & RESET_SRST_PULLS_TRST != 0 and ditto for
* trst.
*
* the higher level jtag_add_reset will invoke jtag_add_tms() if
* the higher level jtag_add_reset will invoke jtag_add_tlr() if
* approperiate
*/
extern int interface_jtag_add_reset(int trst, int srst);


+ 2
- 2
src/pld/virtex2.c View File

@@ -137,7 +137,7 @@ int virtex2_read_stat(struct pld_device_s *pld_device, u32 *status)
{
u32 data[5];
jtag_add_tms();
jtag_add_tlr();
data[0] = 0xaa995566; /* synch word */
data[1] = 0x2800E001; /* Type 1, read, address 7, 1 word */
@@ -192,7 +192,7 @@ int virtex2_load(struct pld_device_s *pld_device, char *filename)
jtag_add_dr_scan(1, &field, TAP_PD);
jtag_execute_queue();
jtag_add_tms();
jtag_add_tlr();
jtag_add_end_state(TAP_RTI);
virtex2_set_instr(virtex2_info->chain_pos, 0xc); /* JSTART */


Loading…
Cancel
Save