From 40ba2619826378b80bb975253d3048958078f60e Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Thu, 31 May 2018 13:10:47 +0200 Subject: [PATCH] libftdi: Use asynchronous transfers if header indicate newer libftdi1. This is a hack to keep travis happy. Setting up travis to use a recent libftdi1 is a major issue. --- src/platforms/hosted/Makefile.inc | 1 + src/platforms/hosted/ftdi_bmp.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/platforms/hosted/Makefile.inc b/src/platforms/hosted/Makefile.inc index 05158ba..d1700d0 100644 --- a/src/platforms/hosted/Makefile.inc +++ b/src/platforms/hosted/Makefile.inc @@ -1,5 +1,6 @@ SYS = $(shell $(CC) -dumpmachine) CFLAGS += -DENABLE_DEBUG -DPLATFORM_HAS_DEBUG +CFLAGS += -DUSE_USB_VERSION_BIT CFLAGS +=-I ./target -I./platforms/pc ifneq (, $(findstring linux, $(SYS))) diff --git a/src/platforms/hosted/ftdi_bmp.c b/src/platforms/hosted/ftdi_bmp.c index 1cc9b66..2d2cc63 100644 --- a/src/platforms/hosted/ftdi_bmp.c +++ b/src/platforms/hosted/ftdi_bmp.c @@ -343,8 +343,15 @@ bool libftdi_srst_get_val(void) void libftdi_buffer_flush(void) { +#if defined(USE_USB_VERSION_BIT) +static struct ftdi_transfer_control *tc_write = NULL; + if (tc_write) + ftdi_transfer_data_done(tc_write); + tc_write = ftdi_write_data_submit(ftdic, outbuf, bufptr); +#else assert(ftdi_write_data(ftdic, outbuf, bufptr) == bufptr); DEBUG_WIRE("FT2232 libftdi_buffer flush: %d bytes\n", bufptr); +#endif bufptr = 0; } @@ -358,10 +365,18 @@ int libftdi_buffer_write(const uint8_t *data, int size) int libftdi_buffer_read(uint8_t *data, int size) { +#if defined(USE_USB_VERSION_BIT) + struct ftdi_transfer_control *tc; + outbuf[bufptr++] = SEND_IMMEDIATE; + libftdi_buffer_flush(); + tc = ftdi_read_data_submit(ftdic, data, size); + ftdi_transfer_data_done(tc); +#else int index = 0; outbuf[bufptr++] = SEND_IMMEDIATE; libftdi_buffer_flush(); while((index += ftdi_read_data(ftdic, data + index, size-index)) != size); +#endif return size; }