+       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;
+       }