Browse Source

JTAG_TRST_ASSERTED event cleanup. More clear where and when it is invoked and some duplicate(harmless) invocations avoided.

git-svn-id: svn://svn.berlios.de/openocd/trunk@2040 b42882b7-edfa-0310-969c-e2dbd0fdcd60
tags/v0.2.0
oharboe 15 years ago
parent
commit
9ab49135c6
2 changed files with 17 additions and 8 deletions
  1. +6
    -8
      src/jtag/jtag.c
  2. +11
    -0
      src/jtag/jtag.h

+ 6
- 8
src/jtag/jtag.c View File

@@ -385,17 +385,14 @@ int jtag_call_event_callbacks(enum jtag_event event)
return ERROR_OK;
}

static void jtag_prelude1(void)
static void jtag_checks(void)
{
assert(jtag_trst == 0);

if (cmd_queue_end_state == TAP_RESET)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
}

static void jtag_prelude(tap_state_t state)
{
jtag_prelude1();
jtag_checks();

if (state != TAP_INVALID)
jtag_add_end_state(state);
@@ -596,6 +593,8 @@ void jtag_add_tlr(void)
retval=interface_jtag_add_tlr();
if (retval!=ERROR_OK)
jtag_error=retval;
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
}

void jtag_add_pathmove(int num_states, const tap_state_t *path)
@@ -628,7 +627,7 @@ void jtag_add_pathmove(int num_states, const tap_state_t *path)
cur_state = path[i];
}

jtag_prelude1();
jtag_checks();

retval = interface_jtag_add_pathmove(num_states, path);
cmd_queue_cur_state = path[num_states - 1];
@@ -663,7 +662,7 @@ void jtag_add_clocks( int num_cycles )

if( num_cycles > 0 )
{
jtag_prelude1();
jtag_checks();

retval = interface_jtag_add_clocks(num_cycles);
if (retval != ERROR_OK)
@@ -755,7 +754,6 @@ void jtag_add_reset(int req_tlr_or_trst, int req_srst)
LOG_DEBUG("JTAG reset with RESET instead of TRST");
jtag_add_end_state(TAP_RESET);
jtag_add_tlr();
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
return;
}



+ 11
- 0
src/jtag/jtag.h View File

@@ -218,6 +218,17 @@ enum reset_line_mode {
LINE_PUSH_PULL = 0x1,
};

/*
* There are three cases when JTAG_TRST_ASSERTED callback is invoked. The
* event is invoked *after* TRST is asserted(or queued rather). It is illegal
* to communicate with the JTAG interface during the callback(as there is
* currently a queue being built).
*
* - TMS reset
* - SRST pulls TRST
* - TRST asserted
*
**/
enum jtag_event {
JTAG_TRST_ASSERTED
};


Loading…
Cancel
Save