uas: Fix uas not working when plugged into an ehci port
authorHans de Goede <hdegoede@redhat.com>
Thu, 17 Oct 2013 20:20:54 +0000 (22:20 +0200)
committerSarah Sharp <sarah.a.sharp@linux.intel.com>
Tue, 4 Mar 2014 23:38:09 +0000 (15:38 -0800)
I thought it would be a good idea to also test uas with usb-2, and it turns out
it was, as it did not work. The problem is that the uas driver was passing the
bEndpointAddress' direction bit to usb_rcvbulkpipe, the xhci code seems to not
care about this, but with the ehci code this causes usb_submit_urb failure.

With this fixed the uas code works nicely with an uas device plugged into
an ehci port.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
drivers/usb/storage/uas.c

index 5eacb8054457c2e2553266319191bf8da0e6b26f..6ad5de9639d56b2e2805aad37b67df0f79b978a5 100644 (file)
@@ -948,13 +948,13 @@ static void uas_configure_endpoints(struct uas_dev_info *devinfo)
                eps[3] = usb_pipe_endpoint(udev, devinfo->data_out_pipe);
        } else {
                devinfo->cmd_pipe = usb_sndbulkpipe(udev,
-                                               eps[0]->desc.bEndpointAddress);
+                                            usb_endpoint_num(&eps[0]->desc));
                devinfo->status_pipe = usb_rcvbulkpipe(udev,
-                                               eps[1]->desc.bEndpointAddress);
+                                            usb_endpoint_num(&eps[1]->desc));
                devinfo->data_in_pipe = usb_rcvbulkpipe(udev,
-                                               eps[2]->desc.bEndpointAddress);
+                                            usb_endpoint_num(&eps[2]->desc));
                devinfo->data_out_pipe = usb_sndbulkpipe(udev,
-                                               eps[3]->desc.bEndpointAddress);
+                                            usb_endpoint_num(&eps[3]->desc));
        }
 
        devinfo->qdepth = usb_alloc_streams(devinfo->intf, eps + 1, 3, 256,