Skip to content
Snippets Groups Projects
Commit 9bf8a4e4 authored by oharboe's avatar oharboe
Browse files

This moves common code into functions so as to make it clear

that all the jtag_add_xxx() are indeed intended to do the same thing.


git-svn-id: svn://svn.berlios.de/openocd/trunk@504 b42882b7-edfa-0310-969c-e2dbd0fdcd60
parent 10c3b1c9
Branches
No related tags found
No related merge requests found
......@@ -391,7 +391,7 @@ void cmd_queue_free()
cmd_queue_pages = NULL;
}
void jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
static void jtag_prelude1()
{
if (jtag_trst == 1)
{
......@@ -400,13 +400,23 @@ void jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state
return;
}
if (state != -1)
cmd_queue_end_state = state;
if (cmd_queue_end_state == TAP_TLR)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
}
static void jtag_prelude(enum tap_state state)
{
jtag_prelude1();
if (state != -1)
cmd_queue_end_state = state;
cmd_queue_cur_state = cmd_queue_end_state;
}
void jtag_add_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
{
jtag_prelude(state);
int retval=interface_jtag_add_ir_scan(num_fields, fields, cmd_queue_end_state);
if (retval!=ERROR_OK)
......@@ -492,20 +502,7 @@ int MINIDRIVER(interface_jtag_add_ir_scan)(int num_fields, scan_field_t *fields,
void jtag_add_plain_ir_scan(int num_fields, scan_field_t *fields, enum tap_state state)
{
if (jtag_trst == 1)
{
WARNING("JTAG command queued, while TRST is low (TAP in reset)");
jtag_error=ERROR_JTAG_TRST_ASSERTED;
return;
}
if (state != -1)
cmd_queue_end_state = state;
if (cmd_queue_end_state == TAP_TLR)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
cmd_queue_cur_state = cmd_queue_end_state;
jtag_prelude(state);
int retval=interface_jtag_add_plain_ir_scan(num_fields, fields, cmd_queue_end_state);
if (retval!=ERROR_OK)
......@@ -551,20 +548,7 @@ int MINIDRIVER(interface_jtag_add_plain_ir_scan)(int num_fields, scan_field_t *f
void jtag_add_dr_scan(int num_fields, scan_field_t *fields, enum tap_state state)
{
if (jtag_trst == 1)
{
WARNING("JTAG command queued, while TRST is low (TAP in reset)");
jtag_error=ERROR_JTAG_TRST_ASSERTED;
return;
}
if (state != -1)
cmd_queue_end_state = state;
if (cmd_queue_end_state == TAP_TLR)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
cmd_queue_cur_state = cmd_queue_end_state;
jtag_prelude(state);
int retval=interface_jtag_add_dr_scan(num_fields, fields, cmd_queue_end_state);
if (retval!=ERROR_OK)
......@@ -749,20 +733,7 @@ void MINIDRIVER(interface_jtag_add_dr_out)(int device_num,
void jtag_add_plain_dr_scan(int num_fields, scan_field_t *fields, enum tap_state state)
{
if (jtag_trst == 1)
{
WARNING("JTAG command queued, while TRST is low (TAP in reset)");
jtag_error=ERROR_JTAG_TRST_ASSERTED;
return;
}
if (state != -1)
cmd_queue_end_state = state;
if (cmd_queue_end_state == TAP_TLR)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
cmd_queue_cur_state = cmd_queue_end_state;
jtag_prelude(state);
int retval=interface_jtag_add_plain_dr_scan(num_fields, fields, cmd_queue_end_state);
if (retval!=ERROR_OK)
......@@ -806,20 +777,7 @@ int MINIDRIVER(interface_jtag_add_plain_dr_scan)(int num_fields, scan_field_t *f
}
void jtag_add_statemove(enum tap_state state)
{
if (jtag_trst == 1)
{
WARNING("JTAG command queued, while TRST is low (TAP in reset)");
jtag_error=ERROR_JTAG_TRST_ASSERTED;
return;
}
if (state != -1)
cmd_queue_end_state = state;
if (cmd_queue_end_state == TAP_TLR)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
cmd_queue_cur_state = cmd_queue_end_state;
jtag_prelude(state);
int retval;
retval=interface_jtag_add_statemove(cmd_queue_end_state);
......@@ -846,22 +804,11 @@ int MINIDRIVER(interface_jtag_add_statemove)(enum tap_state state)
void jtag_add_pathmove(int num_states, enum tap_state *path)
{
if (jtag_trst == 1)
{
WARNING("JTAG command queued, while TRST is low (TAP in reset)");
jtag_error=ERROR_JTAG_TRST_ASSERTED;
return;
}
if (cmd_queue_end_state == TAP_TLR)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
/* the last state has to be a stable state */
if (tap_move_map[path[num_states - 1]] == -1)
{
ERROR("TAP path doesn't finish in a stable state");
jtag_error=ERROR_JTAG_NOT_IMPLEMENTED;
return;
ERROR("BUG: TAP path doesn't finish in a stable state");
exit(-1);
}
enum tap_state cur_state=cmd_queue_cur_state;
......@@ -877,6 +824,8 @@ void jtag_add_pathmove(int num_states, enum tap_state *path)
cur_state = path[i];
}
jtag_prelude1();
cmd_queue_cur_state = path[num_states - 1];
int retval=interface_jtag_add_pathmove(num_states, path);
......@@ -925,20 +874,7 @@ int MINIDRIVER(interface_jtag_add_runtest)(int num_cycles, enum tap_state state)
void jtag_add_runtest(int num_cycles, enum tap_state state)
{
if (jtag_trst == 1)
{
WARNING("JTAG command queued, while TRST is low (TAP in reset)");
jtag_error=ERROR_JTAG_TRST_ASSERTED;
return;
}
if (state != -1)
cmd_queue_end_state = state;
if (cmd_queue_end_state == TAP_TLR)
jtag_call_event_callbacks(JTAG_TRST_ASSERTED);
cmd_queue_cur_state = cmd_queue_end_state;
jtag_prelude(state);
/* executed by sw or hw fifo */
int retval=interface_jtag_add_runtest(num_cycles, cmd_queue_end_state);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment