aboutsummaryrefslogtreecommitdiff
path: root/src/jtag/drivers/buspirate.c
diff options
context:
space:
mode:
authorSpencer Oliver <spen@spen-soft.co.uk>2013-01-16 11:57:57 +0000
committerFreddie Chopin <freddie.chopin@gmail.com>2013-01-27 14:16:52 +0000
commitf54a639b28514bf8c8faabc39c6434db1e886fed (patch)
tree92302e84b66e3c8d69db432e51a8d4df1e2cde77 /src/jtag/drivers/buspirate.c
parentf807d6ab3dc86cd258fb459546b52d9b07fe7986 (diff)
downloadriscv-openocd-f54a639b28514bf8c8faabc39c6434db1e886fed.zip
riscv-openocd-f54a639b28514bf8c8faabc39c6434db1e886fed.tar.gz
riscv-openocd-f54a639b28514bf8c8faabc39c6434db1e886fed.tar.bz2
jtag: only change state if necessary
All the other drivers will only change the state if required. This brings all the other drivers inline with this behaviour. The original issue relates to problems on xscale commit 7989000e0969c1ccf69acbc3ce649a020bc1ee66 Change-Id: Ifc90ec2eef68a70a14f37c00931a07982bfa200c Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk> Reviewed-on: http://openocd.zylin.com/1114 Tested-by: jenkins Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
Diffstat (limited to 'src/jtag/drivers/buspirate.c')
-rw-r--r--src/jtag/drivers/buspirate.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/jtag/drivers/buspirate.c b/src/jtag/drivers/buspirate.c
index 86b9882..10b5e0f 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);