zy1000: fix optimisaion bug in dcc writes
authorØyvind Harboe <oyvind.harboe@zylin.com>
Mon, 22 Mar 2010 07:27:03 +0000 (08:27 +0100)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Mon, 22 Mar 2010 07:28:19 +0000 (08:28 +0100)
Introduced & corrected since 0.4.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
src/jtag/zy1000/zy1000.c

index 6f75e59bcc76e0c21f31b9525b577c06fbfcc06c..b8abc8944d879962290f76fd0e59ac4de4426c93 100644 (file)
@@ -828,23 +828,17 @@ void embeddedice_write_dcc(struct jtag_tap *tap, int reg_addr, uint8_t *buffer,
                }
        } else
        {
-               tap_state_t end_state = TAP_IDLE;
-               tap_state_t shift_end_state = TAP_DRSHIFT;
-               if (post_bits == 0)
-                       shift_end_state = end_state;
-
                shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, pre_bits, 0);
                int i;
                for (i = 0; i < count - 1; i++)
                {
                        /* Fewer pokes means we get to use the FIFO more efficiently */
                        shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, 32, fast_target_buffer_get_u32(buffer, little));
-                       shiftValueInner(TAP_DRSHIFT, shift_end_state, 6 + post_bits + pre_bits, (reg_addr | (1 << 5)));
+                       shiftValueInner(TAP_DRSHIFT, TAP_IDLE, 6 + post_bits + pre_bits, (reg_addr | (1 << 5)));
                        buffer += 4;
                }
                shiftValueInner(TAP_DRSHIFT, TAP_DRSHIFT, 32, fast_target_buffer_get_u32(buffer, little));
-               shiftValueInner(TAP_DRSHIFT, shift_end_state, 6, reg_addr | (1 << 5));
-               shiftValueInner(shift_end_state, end_state, post_bits, 0);
+               shiftValueInner(TAP_DRSHIFT, TAP_IDLE, 6 + post_bits, (reg_addr | (1 << 5)));
        }
 }