From 23b1798d31f9736b9b809af6794150298203ddb2 Mon Sep 17 00:00:00 2001 From: Thomas Jarosch Date: Fri, 25 Apr 2008 09:55:56 +0000 Subject: [PATCH] libftdi: (tomj) always set usb configuration --- ChangeLog | 1 + src/ftdi.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 0 deletions(-) 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) { -- 1.7.1