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

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

 



From: Thinh Nguyen
> Sent: 03 February 2021 01:16
> 
> 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.

Isn't it just:
		if (minor_revision < 0x10)
			minor_revision <<= 4;

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)




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

  Powered by Linux