diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/jtag/ft2232.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/src/jtag/ft2232.c b/src/jtag/ft2232.c index 10fa1b42..9265b436 100644 --- a/src/jtag/ft2232.c +++ b/src/jtag/ft2232.c @@ -773,11 +773,9 @@ static void ft2232_add_pathmove(tap_state_t* path, int num_states) /* this loop verifies that the path is legal and logs each state in the path */ while (num_states) { - unsigned char tms_byte = 0; /* zero this on each MPSSE batch */ - - int bit_count = 0; - - int num_states_batch = num_states > 7 ? 7 : num_states; + unsigned char tms_byte = 0; /* zero this on each MPSSE batch */ + int bit_count = 0; + int num_states_batch = num_states > 7 ? 7 : num_states; /* command "Clock Data to TMS/CS Pin (no Read)" */ buffer_write(0x4b); @@ -785,26 +783,31 @@ static void ft2232_add_pathmove(tap_state_t* path, int num_states) /* number of states remaining */ buffer_write(num_states_batch - 1); - while (num_states_batch--) - { - if (tap_state_transition(tap_get_state(), false) == path[state_count]) + while (num_states_batch--) { + /* either TMS=0 or TMS=1 must work ... */ + if (tap_state_transition(tap_get_state(), false) + == path[state_count]) buf_set_u32(&tms_byte, bit_count++, 1, 0x0); - else if (tap_state_transition(tap_get_state(), true) == path[state_count]) + else if (tap_state_transition(tap_get_state(), true) + == path[state_count]) buf_set_u32(&tms_byte, bit_count++, 1, 0x1); - else - { - LOG_ERROR( "BUG: %s -> %s isn't a valid TAP transition", tap_state_name( - tap_get_state() ), tap_state_name(path[state_count]) ); + + /* ... or else the caller goofed BADLY */ + else { + LOG_ERROR("BUG: %s -> %s isn't a valid " + "TAP state transition", + tap_state_name(tap_get_state()), + tap_state_name(path[state_count])); exit(-1); } - tap_set_state(path[state_count]); + tap_set_state(path[state_count]); state_count++; num_states--; } buffer_write(tms_byte); - } + } tap_set_end_state(tap_get_state()); } |