Am Montag, den 28.08.2017, 17:08 +0200 schrieb Oliver Neukum:
> Am Donnerstag, den 24.08.2017, 14:05 +0200 schrieb Massimo Burcheri:
> > 
> > 
> > Bus 004 Device 005: ID 174c:5106 ASMedia Technology Inc. ASM1051 SATA 3Gb/s 
> > bridge
> > Device Descriptor:
> >   bLength                18
> >   bDescriptorType         1
> >   bcdUSB               3.00
> >   bDeviceClass            0 
> >   bDeviceSubClass         0 
> >   bDeviceProtocol         0 
> >   bMaxPacketSize0         9
> >   idVendor           0x174c ASMedia Technology Inc.
> >   idProduct          0x5106 ASM1051 SATA 3Gb/s bridge
> 
> Good
> 
> > 
> >   bcdDevice           80.00
> >   iManufacturer           2 StoreJet Transcend
> >   iProduct                3 StoreJet Transcend
> >   iSerial                 1 S36VJ9CH307FOO
> >   bNumConfigurations      1
> >   Configuration Descriptor:
> >     bLength                 9
> >     bDescriptorType         2
> >     wTotalLength           44
> >     bNumInterfaces          1
> >     bConfigurationValue     1
> >     iConfiguration          0 
> >     bmAttributes         0xc0
> >       Self Powered
> >     MaxPower                0mA
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        0
> >       bAlternateSetting       0
> >       bNumEndpoints           2
> >       bInterfaceClass         8 Mass Storage
> >       bInterfaceSubClass      6 SCSI
> >       bInterfaceProtocol     80 Bulk-Only
> >       iInterface              0
> 
> This device advertises itself as Bulk-only, not UAS.
> 
> We can try, but I am not confident of the outcome. Is this the full
> descriptor?
> 
>       Regards
>               Oliver

Sorry, wrong patch. Attached corrected version.

        Regards
                Oliver
From 46fba5579a9fcdb3949a557a32e087893346d8bf Mon Sep 17 00:00:00 2001
From: Oliver Neukum <oneu...@suse.com>
Date: Mon, 28 Aug 2017 17:06:58 +0200
Subject: [PATCH] USB: uas: force UAS probing for ASMedia 1153

This forces the device into uas with a sledge hammer.
---
 drivers/usb/storage/uas-detect.h | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/storage/uas-detect.h b/drivers/usb/storage/uas-detect.h
index f58caa9e6a27..d2a2da5527d2 100644
--- a/drivers/usb/storage/uas-detect.h
+++ b/drivers/usb/storage/uas-detect.h
@@ -2,8 +2,14 @@
 #include <linux/usb/hcd.h>
 #include "usb.h"
 
-static int uas_is_interface(struct usb_host_interface *intf)
+static int uas_is_interface(struct usb_interface *inf, struct usb_host_interface *intf)
 {
+	struct usb_device *udev = interface_to_usbdev(inf);
+
+	if (le16_to_cpu(udev->descriptor.idVendor) == 0x174c &&
+		le16_to_cpu(udev->descriptor.idProduct) == 0x5106)
+		return 1;
+ 
 	return (intf->desc.bInterfaceClass == USB_CLASS_MASS_STORAGE &&
 		intf->desc.bInterfaceSubClass == USB_SC_SCSI &&
 		intf->desc.bInterfaceProtocol == USB_PR_UAS);
@@ -16,7 +22,7 @@ static int uas_find_uas_alt_setting(struct usb_interface *intf)
 	for (i = 0; i < intf->num_altsetting; i++) {
 		struct usb_host_interface *alt = &intf->altsetting[i];
 
-		if (uas_is_interface(alt))
+		if (uas_is_interface(intf, alt))
 			return alt->desc.bAlternateSetting;
 	}
 
-- 
2.12.3

Reply via email to