tty: resolve some sierra breakage
authorAlan Cox <alan@linux.intel.com>
Thu, 11 Jun 2009 13:29:29 +0000 (14:29 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 11 Jun 2009 15:51:07 +0000 (08:51 -0700)
The various merges into the sierra driver inadvertently undid
commit 212b8f0c3f5a2280bfa1d6ab13a6fe98552becaa by Elina Pasheva
<epasheva@sierrawireless.com>. Put it back so the OBEX port works again.

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/usb/serial/sierra.c

index 1319b8968d82e6034d8541a3fb07e51077826d4c..222a6230276b4179f5d80cc6459255ea5c3cfed3 100644 (file)
@@ -257,8 +257,19 @@ static int sierra_send_setup(struct usb_serial_port *port)
                val |= 0x02;
 
        /* If composite device then properly report interface */
-       if (serial->num_ports == 1)
+       if (serial->num_ports == 1) {
                interface = sierra_calc_interface(serial);
+               /* Control message is sent only to interfaces with
+                * interrupt_in endpoints
+                */
+               if (port->interrupt_in_urb) {
+                       /* send control message */
+                       return usb_control_msg(serial->dev,
+                               usb_rcvctrlpipe(serial->dev, 0),
+                               0x22, 0x21, val, interface,
+                               NULL, 0, USB_CTRL_SET_TIMEOUT);
+               }
+       }
 
        /* Otherwise the need to do non-composite mapping */
        else {
@@ -268,11 +279,11 @@ static int sierra_send_setup(struct usb_serial_port *port)
                        interface = 1;
                else if (port->bulk_out_endpointAddress == 5)
                        interface = 2;
-       }
-       return usb_control_msg(serial->dev,
+               return usb_control_msg(serial->dev,
                        usb_rcvctrlpipe(serial->dev, 0),
                        0x22, 0x21, val, interface,
                        NULL, 0, USB_CTRL_SET_TIMEOUT);
+       }
        return 0;
 }