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>
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 */
/* 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 */
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);