From: Hans de Goede <hdego...@redhat.com>

This is a preparation patch for teaching usb-storage to not bind to
uas devices.

Signed-off-by: Hans de Goede <hdego...@redhat.com>
Signed-off-by: Sarah Sharp <sarah.a.sh...@linux.intel.com>
---
 drivers/usb/storage/uas.c | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
index 3f021f2fafdf..54db36541b93 100644
--- a/drivers/usb/storage/uas.c
+++ b/drivers/usb/storage/uas.c
@@ -892,10 +892,10 @@ static int uas_isnt_supported(struct usb_device *udev)
        return -ENODEV;
 }
 
-static int uas_switch_interface(struct usb_device *udev,
-                                               struct usb_interface *intf)
+static int uas_find_uas_alt_setting(struct usb_interface *intf)
 {
        int i;
+       struct usb_device *udev = interface_to_usbdev(intf);
        int sg_supported = udev->bus->sg_tablesize != 0;
 
        for (i = 0; i < intf->num_altsetting; i++) {
@@ -904,15 +904,26 @@ static int uas_switch_interface(struct usb_device *udev,
                if (uas_is_interface(alt)) {
                        if (!sg_supported)
                                return uas_isnt_supported(udev);
-                       return usb_set_interface(udev,
-                                               alt->desc.bInterfaceNumber,
-                                               alt->desc.bAlternateSetting);
+                       return alt->desc.bAlternateSetting;
                }
        }
 
        return -ENODEV;
 }
 
+static int uas_switch_interface(struct usb_device *udev,
+                               struct usb_interface *intf)
+{
+       int alt;
+
+       alt = uas_find_uas_alt_setting(intf);
+       if (alt < 0)
+               return alt;
+
+       return usb_set_interface(udev,
+                       intf->altsetting[0].desc.bInterfaceNumber, alt);
+}
+
 static void uas_configure_endpoints(struct uas_dev_info *devinfo)
 {
        struct usb_host_endpoint *eps[4] = { };
-- 
1.8.5.5

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to