jtag: only change state if necessary 14/1114/2
authorSpencer Oliver <spen@spen-soft.co.uk>
Wed, 16 Jan 2013 11:57:57 +0000 (11:57 +0000)
committerFreddie Chopin <freddie.chopin@gmail.com>
Sun, 27 Jan 2013 14:16:52 +0000 (14:16 +0000)
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>
src/jtag/drivers/amt_jtagaccel.c
src/jtag/drivers/arm-jtag-ew.c
src/jtag/drivers/buspirate.c

index d89e5ffa91b3f56dba17c2ea8c2dec1baa6b4797..5005e7633f62be950681bf0bb89f0882c4f8fc84 100644 (file)
@@ -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 */
index 35b6b929f18420343eb820578ce6ce6a18beb129..16245102dd6ce976de74388a50c83bc37120618b 100644 (file)
@@ -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 */
index 86b98823567c3dbbfbeb284accccf0c7b7c03ea8..10b5e0fde6d19c8c0ef22abf8504755728aa34d9 100644 (file)
@@ -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);
 

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)