ft2232: simplify ft2232_read_scan

__archive__
Marc Pignat 2010-06-17 10:07:22 +02:00 committed by Øyvind Harboe
parent cd7f443103
commit dd88b461da
1 changed files with 10 additions and 9 deletions

View File

@ -714,23 +714,24 @@ static void ft2232_end_state(tap_state_t state)
static void ft2232_read_scan(enum scan_type type, uint8_t* buffer, int scan_size) static void ft2232_read_scan(enum scan_type type, uint8_t* buffer, int scan_size)
{ {
int num_bytes = (scan_size + 7) / 8; int num_bytes = scan_size / 8;
int bits_left = scan_size; int bits_left = scan_size % 8;
int cur_byte = 0; int cur_byte;
while (num_bytes-- > 1) for (cur_byte = 0; cur_byte < num_bytes; cur_byte++)
{ {
buffer[cur_byte++] = buffer_read(); buffer[cur_byte] = buffer_read();
bits_left -= 8;
} }
buffer[cur_byte] = 0x0; /* Manage partial byte left from the clock data in/out instructions, if any */
/* There is one more partial byte left from the clock data in/out instructions */
if (bits_left > 1) if (bits_left > 1)
{ {
buffer[cur_byte] = buffer_read() >> 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 */ /* 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); buffer[cur_byte] = (buffer[cur_byte] | (((buffer_read()) << 1) & 0x80)) >> (8 - bits_left);
} }