Re: [RFC PATCH 6/8] usb: xhci: Fix port minor revision

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sergei Shtylyov wrote:
> Hello!
>
> On 02.02.2021 6:42, Thinh Nguyen wrote:
>
>> Some hosts incorrectly use sub-minor version for minor version (i.e.
>> 0x02 instead of 0x20 for bcdUSB 0x320 and 0x01 for bcdUSB 0x310).
>> Currently the xHCI driver works around this by just checking for minor
>> revision > 0x01 for USB 3.1 everywhere. With the addition of USB 3.2,
>> checking this gets a bit cumbersome. Since there is no USB release with
>> bcdUSB 0x301 to 0x309, we can assume that sub-minor version 01 to 09 is
>> incorrect. Let's try to fix this and use the minor revision that matches
>> with the USB/xHCI spec to help with the version checking within the
>> driver.
>>
>> Signed-off-by: Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx>
>> ---
>>   drivers/usb/host/xhci-mem.c | 9 +++++++++
>>   1 file changed, 9 insertions(+)
>>
>> diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
>> index f2c4ee7c4786..34105b477c62 100644
>> --- a/drivers/usb/host/xhci-mem.c
>> +++ b/drivers/usb/host/xhci-mem.c
>> @@ -2129,6 +2129,15 @@ static void xhci_add_in_port(struct xhci_hcd
>> *xhci, unsigned int num_ports,
>>         if (major_revision == 0x03) {
>>           rhub = &xhci->usb3_rhub;
>> +        /*
>> +         * Some hosts incorrectly use sub-minor version for minor
>> +         * version (i.e. 0x02 instead of 0x20 for bcdUSB 0x320 and 0x01
>> +         * for bcdUSB 0x310). Since there is no USB release with sub
>> +         * minor version 0x301 to 0x309, we can assume that they are
>> +         * incorrect and fix it here.
>> +         */
>> +        if (!(minor_revision & 0xf0) && (minor_revision & 0x0f))
>> +            minor_revision = minor_revision << 4;
>
>    Why not:
>
>             minor_revision <<= 4;
>
> [...]
>
> MBR, Sergei

Sure, we can do that.

Thanks,
Thinh




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux