I checked the usb/core/quirks.c and other various source code under
driver/usb/storage, but only one file sticks out as targeting the
vendor, and it doesn't have code related to this device.


https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/storage/uas-detect.h?h=v4.15-rc7

/*
 * ASMedia has a number of usb3 to sata bridge chips, at the time of
 * this writing the following versions exist:
 * ASM1051 - no uas support version
 * ASM1051 - with broken (*) uas support
 * ASM1053 - with working uas support, but problems with large xfers
 * ASM1153 - with working uas support
 *
 * Devices with these chips re-use a number of device-ids over the
 * entire line, so the device-id is useless to determine if we're
 * dealing with an ASM1051 (which we want to avoid).
 *
 * The ASM1153 can be identified by config.MaxPower == 0,
 * where as the ASM105x models have config.MaxPower == 36.
 *
 * Differentiating between the ASM1053 and ASM1051 is trickier, when
 * connected over USB-3 we can look at the number of streams supported,
 * ASM1051 supports 32 streams, where as early ASM1053 versions support
 * 16 streams, newer ASM1053-s also support 32 streams, but have a
 * different prod-id.
 *
 * (*) ASM1051 chips do work with UAS with some disks (with the
 *     US_FL_NO_REPORT_OPCODES quirk), but are broken with other disks
 */
if (le16_to_cpu(udev->descriptor.idVendor) == 0x174c &&
                (le16_to_cpu(udev->descriptor.idProduct) == 0x5106 ||
                 le16_to_cpu(udev->descriptor.idProduct) == 0x55aa)) {
        if (udev->actconfig->desc.bMaxPower == 0) {
                /* ASM1153, do nothing */
        } else if (udev->speed < USB_SPEED_SUPER) {
                /* No streams info, assume ASM1051 */
                flags |= US_FL_IGNORE_UAS;
        } else if (usb_ss_max_streams(&eps[1]->ss_ep_comp) == 32) {
                /* Possibly an ASM1051, disable uas */
                flags |= US_FL_IGNORE_UAS;
        } else {
                /* ASM1053, these have issues with large transfers */
                flags |= US_FL_MAX_SECTORS_240;
        }
}

It seems to be a case of simply adding this device into the routine.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1742318

Title:
  USB-Storage Quirk for 174c:1356

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742318/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to