- fix bug in ft2232 pathmove (thanks to Michael Bruck for the patch)
authordrath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 27 Feb 2008 06:59:35 +0000 (06:59 +0000)
committerdrath <drath@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Wed, 27 Feb 2008 06:59:35 +0000 (06:59 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@357 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/jtag/ft2232.c

index d5c4af25421d994a49ab21696b754e905b0a56fd..1a058675cd3b88f6c9ed8f1e256a2606012c213c 100644 (file)
@@ -459,12 +459,14 @@ void ft2232_add_pathmove(pathmove_command_t *cmd)
                tms_byte = 0x0;
                int bit_count = 0;
                
+               int num_states_batch = num_states > 7 ? 7 : num_states;
+
                /* command "Clock Data to TMS/CS Pin (no Read)" */
                BUFFER_ADD = 0x4b;
                /* number of states remaining */
-               BUFFER_ADD = (num_states % 7) - 1;
+               BUFFER_ADD = num_states_batch - 1;
                
-               while (num_states % 7)
+               while (num_states_batch--)
                {
                        if (tap_transitions[cur_state].low == cmd->path[state_count])
                                buf_set_u32(&tms_byte, bit_count++, 1, 0x0);