audk/MdeModulePkg/Bus
Sean Rhodes ec25e904c7 MdeModulePkg/Bus/Pci/XhciDxe: Check port is compatible before getting PSIV
On some platforms, including Sky Lake and Kaby Lake, the PSIV (Protocol
Speed ID Value) indices are shared between Protocol Speed ID DWORD' in
the extended capabilities registers for both USB2 (Full Speed) and USB3
(Super Speed).

An example can be found below:

    XhcCheckUsbPortSpeedUsedPsic: checking for USB2 ext caps
    XhciPsivGetPsid: found 3 PSID entries
    XhciPsivGetPsid: looking for port speed 1
    XhciPsivGetPsid: PSIV 1 PSIE 2 PLT 0 PSIM 12
    XhciPsivGetPsid: PSIV 2 PSIE 1 PLT 0 PSIM 1500
    XhciPsivGetPsid: PSIV 3 PSIE 2 PLT 0 PSIM 480
    XhcCheckUsbPortSpeedUsedPsic: checking for USB3 ext caps
    XhciPsivGetPsid: found 3 PSID entries
    XhciPsivGetPsid: looking for port speed 1
    XhciPsivGetPsid: PSIV 1 PSIE 3 PLT 0 PSIM 5
    XhciPsivGetPsid: PSIV 2 PSIE 3 PLT 0 PSIM 10
    XhciPsivGetPsid: PSIV 34 PSIE 2 PLT 0 PSIM 1248

The result is edk2 detecting USB2 devices as USB3 devices, which
consequently causes enumeration to fail.

To avoid incorrect detection, check the Compatible Port Offset to find
the starting Port of Root Hubs that support the protocol.

Signed-off-by: Sean Rhodes <sean@starlabs.systems>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
2022-12-21 00:46:58 +00:00
..
Ata MdeModulePkg/Ata: Fix command status reporting 2022-12-12 01:53:49 +00:00
I2c/I2cDxe MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Isa Ps2KbdCtrller: Make wait for SUCCESS after BAT non-fatal 2022-10-25 15:58:27 +08:00
Pci MdeModulePkg/Bus/Pci/XhciDxe: Check port is compatible before getting PSIV 2022-12-21 00:46:58 +00:00
Scsi MdeModulePkg/scsi :Coverity scan flags multiple issues in edk2-stable202205 2022-11-04 03:59:20 +00:00
Sd MdeModulePkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
Ufs MdeModulePkg/Ufs :Coverity scan flags multiple issues in edk2-stable202205 2022-11-04 03:59:20 +00:00
Usb MdeModulePkg: Fix imbalanced debug macros 2022-09-09 01:42:39 +00:00