USB: visor: fix initialisation of UX50/TH55 devices
Johan Hovold [Mon, 11 Oct 2010 23:07:05 +0000 (01:07 +0200)]
Fix regression introduced by commit
214916f2ec6701e1c9972f26c60b3dc37d3153c6 (USB: visor: reimplement using
generic framework) which broke initialisation of UX50/TH55 devices that
used re-mapped bulk-out endpoint addresses.

Reported-by: Robert Gadsdon <rgadsdon@bayarea.net>
Tested-by: Robert Gadsdon <rgadsdon@bayarea.net>
Cc: stable <stable@kernel.org>
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

drivers/usb/serial/visor.c

index eb76aae..15a5d89 100644 (file)
@@ -606,6 +606,10 @@ static int treo_attach(struct usb_serial *serial)
 
 static int clie_5_attach(struct usb_serial *serial)
 {
+       struct usb_serial_port *port;
+       unsigned int pipe;
+       int j;
+
        dbg("%s", __func__);
 
        /* TH55 registers 2 ports.
@@ -621,9 +625,14 @@ static int clie_5_attach(struct usb_serial *serial)
                return -1;
 
        /* port 0 now uses the modified endpoint Address */
-       serial->port[0]->bulk_out_endpointAddress =
+       port = serial->port[0];
+       port->bulk_out_endpointAddress =
                                serial->port[1]->bulk_out_endpointAddress;
 
+       pipe = usb_sndbulkpipe(serial->dev, port->bulk_out_endpointAddress);
+       for (j = 0; j < ARRAY_SIZE(port->write_urbs); ++j)
+               port->write_urbs[j]->pipe = pipe;
+
        return 0;
 }