diff --git a/ChangeLog b/ChangeLog index d9a3e243..f357537c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-09-16 Joerg Wunsch + + * usb_libusb.c (usbdev_drain): actually implement draining to aid + synchronizing against a JTAG ICE in weird state. + 2005-09-16 Joerg Wunsch * butterfly.c: improve the butterfly initialization so it is more likely diff --git a/usb_libusb.c b/usb_libusb.c index e801e727..8ffb1ef4 100644 --- a/usb_libusb.c +++ b/usb_libusb.c @@ -259,6 +259,16 @@ static int usbdev_recv(int fd, unsigned char *buf, size_t nbytes) static int usbdev_drain(int fd, int display) { + usb_dev_handle *udev = (usb_dev_handle *)fd; + int rv; + + do { + rv = usb_bulk_read(udev, JTAGICE_BULK_EP, usbbuf, JTAGICE_MAX_XFER, 100); + if (rv > 0 && verbose >= 4) + fprintf(stderr, "%s: usbdev_drain(): flushed %d characters\n", + progname, rv); + } while (rv > 0); + return 0; }