summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpencer Oliver <ntfreak@users.sourceforge.net>2010-07-02 17:00:57 +0100
committerSpencer Oliver <ntfreak@users.sourceforge.net>2010-07-02 17:00:57 +0100
commitdeb176d33514eb6b702b14043c338b2d0053f11d (patch)
treeefd852e785899cd212c2e30aa1e0d4ea8ec425d0
parentf97b6b59abc878745bb54e8f44ec82897bacaf7d (diff)
downloadopenocd+libswd-deb176d33514eb6b702b14043c338b2d0053f11d.tar.gz
openocd+libswd-deb176d33514eb6b702b14043c338b2d0053f11d.tar.bz2
openocd+libswd-deb176d33514eb6b702b14043c338b2d0053f11d.tar.xz
openocd+libswd-deb176d33514eb6b702b14043c338b2d0053f11d.zip
ft2232: revert ft2232_read_scan changes
Revert change made in commit dd88b461da1cb8642200dd5c96fb1ff384ca9f7b. Caused segfaults when using ftdi driver under win32. Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
-rw-r--r--src/jtag/drivers/ft2232.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c
index 90516a09..f315d699 100644
--- a/src/jtag/drivers/ft2232.c
+++ b/src/jtag/drivers/ft2232.c
@@ -714,24 +714,23 @@ static void ft2232_end_state(tap_state_t state)
static void ft2232_read_scan(enum scan_type type, uint8_t* buffer, int scan_size)
{
- int num_bytes = scan_size / 8;
- int bits_left = scan_size % 8;
- int cur_byte;
+ int num_bytes = (scan_size + 7) / 8;
+ int bits_left = scan_size;
+ int cur_byte = 0;
- for (cur_byte = 0; cur_byte < num_bytes; cur_byte++)
+ while (num_bytes-- > 1)
{
- buffer[cur_byte] = buffer_read();
+ buffer[cur_byte++] = buffer_read();
+ bits_left -= 8;
}
- /* Manage partial byte left from the clock data in/out instructions, if any */
+ buffer[cur_byte] = 0x0;
+
+ /* There is one more partial byte left from the clock data in/out instructions */
if (bits_left > 1)
{
buffer[cur_byte] = buffer_read() >> 1;
}
- else
- {
- buffer[cur_byte] = 0x0;
- }
/* This shift depends on the length of the clock data to tms instruction, insterted at end of the scan, now fixed to a two step transition in ft2232_add_scan */
buffer[cur_byte] = (buffer[cur_byte] | (((buffer_read()) << 1) & 0x80)) >> (8 - bits_left);
}