aboutsummaryrefslogtreecommitdiff
path: root/src/jtag/jtag.c
diff options
context:
space:
mode:
authorkc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-12-14 20:33:01 +0000
committerkc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-12-14 20:33:01 +0000
commit508ed7a7c69f74ed889e1b471929d9e68e5c1194 (patch)
tree548c4c33a9314cf23cfca7ea955a2427cd782f19 /src/jtag/jtag.c
parent4238dd5053f009eb409c278f60c72bf1e6a79399 (diff)
- Update tap_state_strings to correspond to SVF state names
- Use new jtag_state_name() instead of global tap_state_strings[] git-svn-id: svn://svn.berlios.de/openocd/trunk@1240 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/jtag/jtag.c')
-rw-r--r--src/jtag/jtag.c45
1 files changed, 34 insertions, 11 deletions
diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c
index ca52872f..467ab7ae 100644
--- a/src/jtag/jtag.c
+++ b/src/jtag/jtag.c
@@ -41,14 +41,6 @@
int jtag_error=ERROR_OK;
-char* tap_state_strings[16] =
-{
- "tlr",
- "sds", "cd", "sd", "e1d", "pd", "e2d", "ud",
- "rti",
- "sis", "ci", "si", "e1i", "pi", "e2i", "ui"
-};
-
typedef struct cmd_queue_page_s
{
void *address;
@@ -1004,7 +996,7 @@ void jtag_add_pathmove(int num_states, enum tap_state *path)
if ((tap_transitions[cur_state].low != path[i])&&
(tap_transitions[cur_state].high != path[i]))
{
- LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", tap_state_strings[cur_state], tap_state_strings[path[i]]);
+ LOG_ERROR("BUG: %s -> %s isn't a valid TAP transition", jtag_state_name(cur_state), jtag_state_name(path[i]));
exit(-1);
}
cur_state = path[i];
@@ -2656,14 +2648,14 @@ int handle_endstate_command(struct command_context_s *cmd_ctx, char *cmd, char *
{
for (state = 0; state < 16; state++)
{
- if (strcmp(args[0], tap_state_strings[state]) == 0)
+ if (strcmp(args[0], jtag_state_name(state)) == 0)
{
jtag_add_end_state(state);
jtag_execute_queue();
}
}
}
- command_print(cmd_ctx, "current endstate: %s", tap_state_strings[cmd_queue_end_state]);
+ command_print(cmd_ctx, "current endstate: %s", jtag_state_name(cmd_queue_end_state));
return ERROR_OK;
}
@@ -2915,3 +2907,34 @@ void jtag_tap_handle_event( jtag_tap_t * tap, enum jtag_tap_event e)
Jim_Nvp_value2name_simple( nvp_jtag_tap_event, e)->name);
}
}
+
+
+/* map state number to SVF state string */
+const char* jtag_state_name(enum tap_state state)
+{
+ const char* ret;
+
+ switch( state )
+ {
+ case TAP_RESET: ret = "RESET"; break;
+ case TAP_IDLE: ret = "IDLE"; break;
+ case TAP_DRSELECT: ret = "DRSELECT"; break;
+ case TAP_DRCAPTURE: ret = "DRCAPTURE"; break;
+ case TAP_DRSHIFT: ret = "DRSHIFT"; break;
+ case TAP_DREXIT1: ret = "DREXIT1"; break;
+ case TAP_DRPAUSE: ret = "DRPAUSE"; break;
+ case TAP_DREXIT2: ret = "DREXIT2"; break;
+ case TAP_DRUPDATE: ret = "DRUPDATE"; break;
+ case TAP_IRSELECT: ret = "IRSELECT"; break;
+ case TAP_IRCAPTURE: ret = "IRCAPTURE"; break;
+ case TAP_IRSHIFT: ret = "IRSHIFT"; break;
+ case TAP_IREXIT1: ret = "IREXIT1"; break;
+ case TAP_IRPAUSE: ret = "IRPAUSE"; break;
+ case TAP_IREXIT2: ret = "IREXIT2"; break;
+ case TAP_IRUPDATE: ret = "IRUPDATE"; break;
+ default: ret = "???";
+ }
+
+ return ret;
+}
+