summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormifi <mifi@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-02-10 12:58:24 +0000
committermifi <mifi@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2008-02-10 12:58:24 +0000
commit8f6d142b953da8838bd50357b8fa70d86e839dad (patch)
tree1f862f91346691047c349008c3f824e2d422dde1 /src
parent70b2de2a63f3655891c71781fa4027965e1b0293 (diff)
downloadopenocd+libswd-8f6d142b953da8838bd50357b8fa70d86e839dad.tar.gz
openocd+libswd-8f6d142b953da8838bd50357b8fa70d86e839dad.tar.bz2
openocd+libswd-8f6d142b953da8838bd50357b8fa70d86e839dad.tar.xz
openocd+libswd-8f6d142b953da8838bd50357b8fa70d86e839dad.zip
- added patch to change pathmove handling
https://lists.berlios.de/pipermail/openocd-development/2008-January/000678.html (thanks to Øyvind for the patch) git-svn-id: svn://svn.berlios.de/openocd/trunk@286 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src')
-rw-r--r--src/jtag/amt_jtagaccel.c2
-rw-r--r--src/jtag/at91rm9200.c2
-rw-r--r--src/jtag/ep93xx.c2
-rw-r--r--src/jtag/ft2232.c2
-rw-r--r--src/jtag/gw16012.c2
-rw-r--r--src/jtag/jtag.c56
-rw-r--r--src/jtag/jtag.h4
-rw-r--r--src/jtag/parport.c2
-rw-r--r--src/jtag/presto.c1
-rw-r--r--src/jtag/usbprog.c1
10 files changed, 11 insertions, 63 deletions
diff --git a/src/jtag/amt_jtagaccel.c b/src/jtag/amt_jtagaccel.c
index f005be65..500f1797 100644
--- a/src/jtag/amt_jtagaccel.c
+++ b/src/jtag/amt_jtagaccel.c
@@ -119,8 +119,6 @@ jtag_interface_t amt_jtagaccel_interface =
.execute_queue = amt_jtagaccel_execute_queue,
- .support_pathmove = 0,
-
.speed = amt_jtagaccel_speed,
.register_commands = amt_jtagaccel_register_commands,
.init = amt_jtagaccel_init,
diff --git a/src/jtag/at91rm9200.c b/src/jtag/at91rm9200.c
index b1ddb2df..8c91171d 100644
--- a/src/jtag/at91rm9200.c
+++ b/src/jtag/at91rm9200.c
@@ -134,8 +134,6 @@ jtag_interface_t at91rm9200_interface =
.execute_queue = bitbang_execute_queue,
- .support_pathmove = 0,
-
.speed = at91rm9200_speed,
.register_commands = at91rm9200_register_commands,
.init = at91rm9200_init,
diff --git a/src/jtag/ep93xx.c b/src/jtag/ep93xx.c
index 7311c19a..f2e176fd 100644
--- a/src/jtag/ep93xx.c
+++ b/src/jtag/ep93xx.c
@@ -66,8 +66,6 @@ jtag_interface_t ep93xx_interface =
.execute_queue = bitbang_execute_queue,
- .support_pathmove = 0,
-
.speed = ep93xx_speed,
.register_commands = ep93xx_register_commands,
.init = ep93xx_init,
diff --git a/src/jtag/ft2232.c b/src/jtag/ft2232.c
index 2194694b..76741d9e 100644
--- a/src/jtag/ft2232.c
+++ b/src/jtag/ft2232.c
@@ -160,8 +160,6 @@ jtag_interface_t ft2232_interface =
.execute_queue = ft2232_execute_queue,
- .support_pathmove = 1,
-
.speed = ft2232_speed,
.register_commands = ft2232_register_commands,
.init = ft2232_init,
diff --git a/src/jtag/gw16012.c b/src/jtag/gw16012.c
index 0d5c3f66..aff43de1 100644
--- a/src/jtag/gw16012.c
+++ b/src/jtag/gw16012.c
@@ -107,8 +107,6 @@ jtag_interface_t gw16012_interface =
.execute_queue = gw16012_execute_queue,
- .support_pathmove = 0,
-
.speed = gw16012_speed,
.register_commands = gw16012_register_commands,
.init = gw16012_init,
diff --git a/src/jtag/jtag.c b/src/jtag/jtag.c
index e413b9f3..11011a16 100644
--- a/src/jtag/jtag.c
+++ b/src/jtag/jtag.c
@@ -728,52 +728,18 @@ int jtag_add_pathmove(int num_states, enum tap_state *path)
return ERROR_JTAG_NOT_IMPLEMENTED;
}
- if (jtag->support_pathmove)
- {
- /* allocate memory for a new list member */
- *last_cmd = cmd_queue_alloc(sizeof(jtag_command_t));
- last_comand_pointer = &((*last_cmd)->next);
- (*last_cmd)->next = NULL;
- (*last_cmd)->type = JTAG_PATHMOVE;
+ /* allocate memory for a new list member */
+ *last_cmd = cmd_queue_alloc(sizeof(jtag_command_t));
+ last_comand_pointer = &((*last_cmd)->next);
+ (*last_cmd)->next = NULL;
+ (*last_cmd)->type = JTAG_PATHMOVE;
+
+ (*last_cmd)->cmd.pathmove = cmd_queue_alloc(sizeof(pathmove_command_t));
+ (*last_cmd)->cmd.pathmove->num_states = num_states;
+ (*last_cmd)->cmd.pathmove->path = cmd_queue_alloc(sizeof(enum tap_state) * num_states);
- (*last_cmd)->cmd.pathmove = cmd_queue_alloc(sizeof(pathmove_command_t));
- (*last_cmd)->cmd.pathmove->num_states = num_states;
- (*last_cmd)->cmd.pathmove->path = cmd_queue_alloc(sizeof(enum tap_state) * num_states);
-
- for (i = 0; i < num_states; i++)
- (*last_cmd)->cmd.pathmove->path[i] = path[i];
- }
- else
- {
- /* validate the desired path, and see if it fits a default path */
- int begin = 0;
- int end = 0;
- int j;
-
- for (i = 0; i < num_states; i++)
- {
- for (j = i; j < num_states; j++)
- {
- if (tap_move_map[path[j]] != -1)
- {
- end = j;
- break;
- }
- }
-
- if (begin - end <= 7) /* a default path spans no more than 7 states */
- {
- jtag_add_statemove(path[end]);
- }
- else
- {
- ERROR("encountered a TAP path that can't be fulfilled by default paths");
- return ERROR_JTAG_NOT_IMPLEMENTED;
- }
-
- i = end;
- }
- }
+ for (i = 0; i < num_states; i++)
+ (*last_cmd)->cmd.pathmove->path[i] = path[i];
if (cmd_queue_cur_state == TAP_TLR && cmd_queue_end_state != TAP_TLR)
jtag_call_event_callbacks(JTAG_TRST_RELEASED);
diff --git a/src/jtag/jtag.h b/src/jtag/jtag.h
index 0458e2d5..7435617e 100644
--- a/src/jtag/jtag.h
+++ b/src/jtag/jtag.h
@@ -187,10 +187,6 @@ typedef struct jtag_interface_s
*/
int (*execute_queue)(void);
- /* optional command support
- */
- int support_pathmove;
-
/* interface initalization
*/
int (*speed)(int speed);
diff --git a/src/jtag/parport.c b/src/jtag/parport.c
index 7ed95d8e..f9d7b029 100644
--- a/src/jtag/parport.c
+++ b/src/jtag/parport.c
@@ -159,8 +159,6 @@ jtag_interface_t parport_interface =
.execute_queue = bitbang_execute_queue,
- .support_pathmove = 1,
-
.speed = parport_speed,
.register_commands = parport_register_commands,
.init = parport_init,
diff --git a/src/jtag/presto.c b/src/jtag/presto.c
index 62a9746b..1e21c22b 100644
--- a/src/jtag/presto.c
+++ b/src/jtag/presto.c
@@ -61,7 +61,6 @@ jtag_interface_t presto_interface =
{
.name = "presto",
.execute_queue = bitq_execute_queue,
- .support_pathmove = 1,
.speed = presto_jtag_speed,
.register_commands = presto_jtag_register_commands,
.init = presto_jtag_init,
diff --git a/src/jtag/usbprog.c b/src/jtag/usbprog.c
index 661b3b34..ab4fe77a 100644
--- a/src/jtag/usbprog.c
+++ b/src/jtag/usbprog.c
@@ -64,7 +64,6 @@ jtag_interface_t usbprog_interface =
{
.name = "usbprog",
.execute_queue = usbprog_execute_queue,
- .support_pathmove = 0,
.speed = usbprog_speed,
.register_commands = usbprog_register_commands,
.init = usbprog_init,