libftdi Archives

Subject: Any reason to call usb_set_configuration()

From: Uwe Bonnes <bon@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
To: libftdi@xxxxxxxxxxxxxxxxxxxxxxx
Date: Thu, 23 Jul 2009 16:25:27 +0200
Hello,

working with interface 0 of the FT2232(H) on Linux, I get zillions of
kernel-log messages like:  

kernel: usb 6-3: usbfs: interface 1 claimed by ftdi_sio while 'a.out' sets 
config #1

I understand as follows:
ftdi_usb_open_dev() 
first detaches the driver for interface 0
Now  usb_set_configuration() is called, but interface 1 is still attached to
the kernel driver. This results in above kernel log.

Do we really need to set the configuaration? Does any device have a
alternative configuration at all?

I propose appended patch, tested on Linux with and without ftdi_sio.ko
loaded. No other change seen, beside no more kernel log messages like above.

Bye

-- 
Uwe Bonnes                bon@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
>From fcb2609f0dae14c5616c34242177959cf226a5f2 Mon Sep 17 00:00:00 2001
From: Uwe Bonnes <bon@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 23 Jul 2009 16:21:08 +0200
Subject: usb_set_configuration() not needed on Linux

---
 src/ftdi.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/ftdi.c b/src/ftdi.c
index f89e352..a65da20 100644
--- a/src/ftdi.c
+++ b/src/ftdi.c
@@ -392,6 +392,7 @@ int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct 
usb_device *dev)
         detach_errno = errno;
 #endif
 
+#ifdef __WIN32__
     // set configuration (needed especially for windows)
     // tolerate EBUSY: one device with one configuration, but two interfaces
     //    and libftdi sessions to both interfaces (e.g. FT2232)
@@ -409,6 +410,7 @@ int ftdi_usb_open_dev(struct ftdi_context *ftdi, struct 
usb_device *dev)
             ftdi_error_return(-3, "unable to set usb configuration. Make sure 
ftdi_sio is unloaded!");
         }
     }
+#endif
 
     if (usb_claim_interface(ftdi->usb_dev, ftdi->interface) != 0)
     {
-- 
1.6.0.2


--
libftdi - see http://www.intra2net.com/en/developer/libftdi for details.
To unsubscribe send a mail to libftdi+unsubscribe@xxxxxxxxxxxxxxxxxxxxxxx   

Current Thread