some more performance improvements
This commit is contained in:
parent
a270f1e37a
commit
3f5287b7f7
25
jtagkey.c
25
jtagkey.c
@ -208,10 +208,35 @@ int jtagkey_transfer(WD_TRANSFER *tr, int fd, unsigned int request, int ppbase,
|
|||||||
{
|
{
|
||||||
DPRINTF("writing %d bytes\n", writepos-writebuf);
|
DPRINTF("writing %d bytes\n", writepos-writebuf);
|
||||||
for (i=0; i<writepos-writebuf; i++) {
|
for (i=0; i<writepos-writebuf; i++) {
|
||||||
|
#if 1
|
||||||
|
int combine = i;
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (combine > 0 &&
|
||||||
|
tr[combine-1].cmdTrans == PP_READ) {
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
combine++;
|
||||||
|
}
|
||||||
|
} while (combine < writepos-writebuf);
|
||||||
|
|
||||||
|
DPRINTF("combined writes before read: %d\n", combine);
|
||||||
|
|
||||||
|
if ((combine-i)-1 > 0) {
|
||||||
|
ftdi_write_data(&ftdic, writebuf+i, (combine-i)-1);
|
||||||
|
i = combine-1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
ftdi_write_data(&ftdic, writebuf+i, 1);
|
ftdi_write_data(&ftdic, writebuf+i, 1);
|
||||||
|
|
||||||
if (i > 0 && tr[i].cmdTrans == PP_WRITE && tr[i-1].cmdTrans == PP_READ)
|
if (i > 0 && tr[i].cmdTrans == PP_WRITE && tr[i-1].cmdTrans == PP_READ)
|
||||||
ftdi_read_pins(&ftdic, readbuf+i);
|
ftdi_read_pins(&ftdic, readbuf+i);
|
||||||
|
|
||||||
|
if (i == (writepos-writebuf)-1 && tr[i].cmdTrans == PP_READ) {
|
||||||
|
ftdi_write_data(&ftdic, writebuf+i, 1);
|
||||||
|
ftdi_read_pins(&ftdic, readbuf+i+1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
Reference in New Issue
Block a user