xhci(4): Properly define all basic USB port speeds.

MFC after:	1 week
Sponsored by:	NVIDIA Networking
This commit is contained in:
Hans Petter Selasky 2022-05-03 22:19:35 +02:00
parent c4585b938a
commit d730333c80
2 changed files with 8 additions and 4 deletions

View file

@ -3479,13 +3479,13 @@ xhci_roothub_exec(struct usb_device *udev,
i = UPS_PORT_LINK_STATE_SET(XHCI_PS_PLS_GET(v));
switch (XHCI_PS_SPEED_GET(v)) {
case 3:
case XHCI_PS_SPEED_HIGH:
i |= UPS_HIGH_SPEED;
break;
case 2:
case XHCI_PS_SPEED_LOW:
i |= UPS_LOW_SPEED;
break;
case 1:
case XHCI_PS_SPEED_FULL:
/* FULL speed */
break;
default:
@ -3586,7 +3586,7 @@ xhci_roothub_exec(struct usb_device *udev,
case UHF_PORT_SUSPEND:
DPRINTFN(6, "suspend port %u (LPM=%u)\n", index, i);
j = XHCI_PS_SPEED_GET(v);
if ((j < 1) || (j > 3)) {
if (j == 0 || j >= XHCI_PS_SPEED_SS) {
/* non-supported speed */
err = USB_ERR_IOERROR;
goto done;

View file

@ -124,6 +124,10 @@
#define XHCI_PS_PLS_SET(x) (((x) & 0xF) << 5) /* RW - port link state */
#define XHCI_PS_PP 0x00000200 /* RW - port power */
#define XHCI_PS_SPEED_GET(x) (((x) >> 10) & 0xF) /* RO - port speed */
#define XHCI_PS_SPEED_FULL 0x1 /* Full Speed USB */
#define XHCI_PS_SPEED_LOW 0x2 /* Low Speed USB */
#define XHCI_PS_SPEED_HIGH 0x3 /* High Speed USB */
#define XHCI_PS_SPEED_SS 0x4 /* Super Speed USB */
#define XHCI_PS_PIC_GET(x) (((x) >> 14) & 0x3) /* RW - port indicator */
#define XHCI_PS_PIC_SET(x) (((x) & 0x3) << 14) /* RW - port indicator */
#define XHCI_PS_LWS 0x00010000 /* RW - port link state write strobe */