aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/jtag/drivers/amt_jtagaccel.c5
-rw-r--r--src/jtag/drivers/arm-jtag-ew.c5
-rw-r--r--src/jtag/drivers/buspirate.c5
3 files changed, 12 insertions, 3 deletions
diff --git a/src/jtag/drivers/amt_jtagaccel.c b/src/jtag/drivers/amt_jtagaccel.c
index d89e5ffa..5005e763 100644
--- a/src/jtag/drivers/amt_jtagaccel.c
+++ b/src/jtag/drivers/amt_jtagaccel.c
@@ -264,7 +264,10 @@ static void amt_jtagaccel_scan(bool ir_scan, enum scan_type type, uint8_t *buffe
else
amt_jtagaccel_end_state(TAP_DRSHIFT);
- amt_jtagaccel_state_move();
+ /* Only move if we're not already there */
+ if (tap_get_state() != tap_get_end_state())
+ amt_jtagaccel_state_move();
+
amt_jtagaccel_end_state(saved_end_state);
/* handle unaligned bits at the beginning */
diff --git a/src/jtag/drivers/arm-jtag-ew.c b/src/jtag/drivers/arm-jtag-ew.c
index 35b6b929..16245102 100644
--- a/src/jtag/drivers/arm-jtag-ew.c
+++ b/src/jtag/drivers/arm-jtag-ew.c
@@ -355,7 +355,10 @@ static void armjtagew_scan(bool ir_scan,
/* Move to appropriate scan state */
armjtagew_end_state(ir_scan ? TAP_IRSHIFT : TAP_DRSHIFT);
- armjtagew_state_move();
+ /* Only move if we're not already there */
+ if (tap_get_state() != tap_get_end_state())
+ armjtagew_state_move();
+
armjtagew_end_state(saved_end_state);
/* Scan */
diff --git a/src/jtag/drivers/buspirate.c b/src/jtag/drivers/buspirate.c
index 86b98823..10b5e0fd 100644
--- a/src/jtag/drivers/buspirate.c
+++ b/src/jtag/drivers/buspirate.c
@@ -520,7 +520,10 @@ static void buspirate_scan(bool ir_scan, enum scan_type type,
saved_end_state = tap_get_end_state();
buspirate_end_state(ir_scan ? TAP_IRSHIFT : TAP_DRSHIFT);
- buspirate_state_move();
+
+ /* Only move if we're not already there */
+ if (tap_get_state() != tap_get_end_state())
+ buspirate_state_move();
buspirate_tap_append_scan(scan_size, buffer, command);