From: Thomas Jarosch Date: Fri, 25 Apr 2008 09:55:56 +0000 (+0000) Subject: libftdi: (tomj) always set usb configuration X-Git-Tag: v0.13~6 X-Git-Url: http://developer.intra2net.com/git/?p=libftdi;a=commitdiff_plain;h=23b1798d31f9736b9b809af6794150298203ddb2 libftdi: (tomj) always set usb configuration --- diff --git a/ChangeLog b/ChangeLog index eccc094..60b4d7d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ New in 0.13 ----------- +* Always set usb configuration (Mike Frysinger) * Improved libusb-win32 support (Mike Frysinger) New in 0.12 diff --git a/src/ftdi.c b/src/ftdi.c index 043d24a..56fea0c 100644 --- a/src/ftdi.c +++ b/src/ftdi.c @@ -341,6 +341,7 @@ int ftdi_usb_get_strings(struct ftdi_context * ftdi, struct usb_device * dev, \param dev libusb usb_dev to use \retval 0: all fine + \retval -3: unable to config device \retval -4: unable to open device \retval -5: unable to claim device \retval -6: reset failed @@ -359,6 +360,15 @@ int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct usb_device *dev) detach_errno = errno; #endif + if (usb_set_configuration(ftdi->usb_dev, dev->config[0].bConfigurationValue)) { + usb_close (ftdi->usb_dev); + if (detach_errno == EPERM) { + ftdi_error_return(-8, "inappropriate permissions on device!"); + } else { + ftdi_error_return(-3, "unable to set usb configuration. Make sure ftdi_sio is unloaded!"); + } + } + if (usb_claim_interface(ftdi->usb_dev, ftdi->interface) != 0) { usb_close (ftdi->usb_dev); if (detach_errno == EPERM) {