+ static unsigned char last_write = 0x00;
+
+ /* Count writes */
+ for (i = 0; i < num; i++)
+ if (tr[i].cmdTrans == 10)
+ nread++;
+
+ /* Write combining */
+ if ((writepos-writebuf > sizeof(writebuf)-num) || (nread && writepos-writebuf)) {
+ DPRINTF("writing %d bytes due to %d following reads in %d chunks or full buffer\n", writepos-writebuf, nread, num);
+
+ ftdi_write_data(&ftdic, writebuf, writepos-writebuf);
+
+ i = 0;
+ while (i < writepos-writebuf) {
+ i += ftdi_read_data(&ftdic, readbuf, sizeof(readbuf));
+ };
+ DPRINTF("read %d/%d bytes\n", i, writepos-writebuf);
+ writepos = writebuf;
+ }