According to the USB CDC class specification, line state control
is an optional feature for ACM devices. However, the cdc-acm driver
bails out when acm_set_control() fails while opening the device.

The proposed patch changes that behaviour: Failure of acm_set_control
is now only considered an error if the device is advertising the line
control feature in its capability mask.

Signed-off-by: Joris van Rantwijk <[EMAIL PROTECTED]>


diff -ur -U5 linux-2.6.19.2-orig/drivers/usb/class/cdc-acm.c 
linux-2.6.19.2/drivers/usb/class/cdc-acm.c
--- linux-2.6.19.2-orig/drivers/usb/class/cdc-acm.c     2007-01-10 
20:10:37.000000000 +0100
+++ linux-2.6.19.2/drivers/usb/class/cdc-acm.c  2007-02-01 21:07:36.000000000 
+0100
@@ -465,11 +465,12 @@
        if (usb_submit_urb(acm->ctrlurb, GFP_KERNEL)) {
                dbg("usb_submit_urb(ctrl irq) failed");
                goto bail_out;
        }
 
-       if (0 > acm_set_control(acm, acm->ctrlout = ACM_CTRL_DTR | 
ACM_CTRL_RTS))
+       if (0 > acm_set_control(acm, acm->ctrlout = ACM_CTRL_DTR | 
ACM_CTRL_RTS) &&
+           (acm->ctrl_caps & ACM_CTRL_CAP_LINE))
                goto full_bailout;
 
        INIT_LIST_HEAD(&acm->spare_read_urbs);
        INIT_LIST_HEAD(&acm->spare_read_bufs);
        INIT_LIST_HEAD(&acm->filled_read_bufs);
diff -ur -U5 linux-2.6.19.2-orig/drivers/usb/class/cdc-acm.h 
linux-2.6.19.2/drivers/usb/class/cdc-acm.h
--- linux-2.6.19.2-orig/drivers/usb/class/cdc-acm.h     2007-01-10 
20:10:37.000000000 +0100
+++ linux-2.6.19.2/drivers/usb/class/cdc-acm.h  2007-02-01 21:06:24.000000000 
+0100
@@ -45,10 +45,13 @@
 
 #define ACM_CTRL_FRAMING       0x10
 #define ACM_CTRL_PARITY                0x20
 #define ACM_CTRL_OVERRUN       0x40
 
+#define ACM_CTRL_CAP_LINE      0x02
+#define ACM_CTRL_CAP_BRK       0x04
+
 /*
  * Internal driver structures.
  */
 
 /*

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to