mirror of https://github.com/acidanthera/audk.git
ShellPkg: add the last PCIe extended capability decodings
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15097 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
e1c9edd6b6
commit
9f7f0697b7
|
@ -5042,6 +5042,220 @@ PrintInterpretedExtendedCompatibilityAer (
|
||||||
return (EFI_SUCCESS);
|
return (EFI_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Function to interpret and print out the multicast structure
|
||||||
|
|
||||||
|
@param[in] HeaderAddress The Address of this capability header.
|
||||||
|
@param[in] HeadersBaseAddress The address of all the extended capability headers.
|
||||||
|
@param[in] PciExpressCapPtr The address of the PCIe capabilities structure.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
PrintInterpretedExtendedCompatibilityMulticast (
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeaderAddress,
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress,
|
||||||
|
IN CONST PCIE_CAP_STURCTURE *PciExpressCapPtr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_MULTICAST *Header;
|
||||||
|
Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_MULTICAST*)HeaderAddress;
|
||||||
|
|
||||||
|
ShellPrintHiiEx(
|
||||||
|
-1, -1, NULL,
|
||||||
|
STRING_TOKEN (STR_PCI_EXT_CAP_MULTICAST),
|
||||||
|
gShellDebug1HiiHandle,
|
||||||
|
Header->MultiCastCapability,
|
||||||
|
Header->MulticastControl,
|
||||||
|
Header->McBaseAddress,
|
||||||
|
Header->McReceiveAddress,
|
||||||
|
Header->McBlockAll,
|
||||||
|
Header->McBlockUntranslated,
|
||||||
|
Header->McOverlayBar
|
||||||
|
);
|
||||||
|
|
||||||
|
DumpHex (
|
||||||
|
4,
|
||||||
|
EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),
|
||||||
|
sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_MULTICAST),
|
||||||
|
(VOID *) (HeaderAddress)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (EFI_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Function to interpret and print out the virtual channel and multi virtual channel structure
|
||||||
|
|
||||||
|
@param[in] HeaderAddress The Address of this capability header.
|
||||||
|
@param[in] HeadersBaseAddress The address of all the extended capability headers.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
PrintInterpretedExtendedCompatibilityVirtualChannel (
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeaderAddress,
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_CAPABILITY *Header;
|
||||||
|
CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_VC *CapabilityItem;
|
||||||
|
UINT32 ItemCount;
|
||||||
|
Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_CAPABILITY*)HeaderAddress;
|
||||||
|
|
||||||
|
ShellPrintHiiEx(
|
||||||
|
-1, -1, NULL,
|
||||||
|
STRING_TOKEN (STR_PCI_EXT_CAP_VC_BASE),
|
||||||
|
gShellDebug1HiiHandle,
|
||||||
|
Header->ExtendedVcCount,
|
||||||
|
Header->PortVcCapability1,
|
||||||
|
Header->PortVcCapability2,
|
||||||
|
Header->VcArbTableOffset,
|
||||||
|
Header->PortVcControl,
|
||||||
|
Header->PortVcStatus
|
||||||
|
);
|
||||||
|
for (ItemCount = 0 ; ItemCount < Header->ExtendedVcCount ; ItemCount++) {
|
||||||
|
CapabilityItem = &Header->Capability[ItemCount];
|
||||||
|
ShellPrintHiiEx(
|
||||||
|
-1, -1, NULL,
|
||||||
|
STRING_TOKEN (STR_PCI_EXT_CAP_VC_ITEM),
|
||||||
|
gShellDebug1HiiHandle,
|
||||||
|
ItemCount+1,
|
||||||
|
CapabilityItem->VcResourceCapability,
|
||||||
|
CapabilityItem->PortArbTableOffset,
|
||||||
|
CapabilityItem->VcResourceControl,
|
||||||
|
CapabilityItem->VcResourceStatus
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
DumpHex (
|
||||||
|
4,
|
||||||
|
EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),
|
||||||
|
sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_VC) + (Header->ExtendedVcCount - 1) * sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_CAPABILITY),
|
||||||
|
(VOID *) (HeaderAddress)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (EFI_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Function to interpret and print out the resizeable bar structure
|
||||||
|
|
||||||
|
@param[in] HeaderAddress The Address of this capability header.
|
||||||
|
@param[in] HeadersBaseAddress The address of all the extended capability headers.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
PrintInterpretedExtendedCompatibilityResizeableBar (
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeaderAddress,
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR *Header;
|
||||||
|
UINT32 ItemCount;
|
||||||
|
Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR*)HeaderAddress;
|
||||||
|
|
||||||
|
for (ItemCount = 0 ; ItemCount < (UINT32)GET_NUMBER_RESIZABLE_BARS(Header) ; ItemCount++) {
|
||||||
|
ShellPrintHiiEx(
|
||||||
|
-1, -1, NULL,
|
||||||
|
STRING_TOKEN (STR_PCI_EXT_CAP_RESIZE_BAR),
|
||||||
|
gShellDebug1HiiHandle,
|
||||||
|
ItemCount+1,
|
||||||
|
Header->Capability[ItemCount].ResizableBarCapability,
|
||||||
|
Header->Capability[ItemCount].ResizableBarControl
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
DumpHex (
|
||||||
|
4,
|
||||||
|
EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),
|
||||||
|
(UINT32)GET_NUMBER_RESIZABLE_BARS(Header) * sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR_ENTRY),
|
||||||
|
(VOID *) (HeaderAddress)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (EFI_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Function to interpret and print out the TPH structure
|
||||||
|
|
||||||
|
@param[in] HeaderAddress The Address of this capability header.
|
||||||
|
@param[in] HeadersBaseAddress The address of all the extended capability headers.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
PrintInterpretedExtendedCompatibilityTph (
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeaderAddress,
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH *Header;
|
||||||
|
Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH*)HeaderAddress;
|
||||||
|
|
||||||
|
ShellPrintHiiEx(
|
||||||
|
-1, -1, NULL,
|
||||||
|
STRING_TOKEN (STR_PCI_EXT_CAP_TPH),
|
||||||
|
gShellDebug1HiiHandle,
|
||||||
|
Header->TphRequesterCapability,
|
||||||
|
Header->TphRequesterControl
|
||||||
|
);
|
||||||
|
DumpHex (
|
||||||
|
8,
|
||||||
|
EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)Header->TphStTable - (UINT8*)HeadersBaseAddress),
|
||||||
|
GET_TPH_TABLE_SIZE(Header),
|
||||||
|
(VOID *)Header->TphStTable
|
||||||
|
);
|
||||||
|
|
||||||
|
DumpHex (
|
||||||
|
4,
|
||||||
|
EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),
|
||||||
|
sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH) + GET_TPH_TABLE_SIZE(Header) - sizeof(UINT16),
|
||||||
|
(VOID *) (HeaderAddress)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (EFI_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Function to interpret and print out the secondary PCIe capability structure
|
||||||
|
|
||||||
|
@param[in] HeaderAddress The Address of this capability header.
|
||||||
|
@param[in] HeadersBaseAddress The address of all the extended capability headers.
|
||||||
|
@param[in] PciExpressCapPtr The address of the PCIe capabilities structure.
|
||||||
|
**/
|
||||||
|
EFI_STATUS
|
||||||
|
EFIAPI
|
||||||
|
PrintInterpretedExtendedCompatibilitySecondary (
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeaderAddress,
|
||||||
|
IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress,
|
||||||
|
IN CONST PCIE_CAP_STURCTURE *PciExpressCapPtr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_SECONDARY_PCIE *Header;
|
||||||
|
Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_SECONDARY_PCIE*)HeaderAddress;
|
||||||
|
|
||||||
|
ShellPrintHiiEx(
|
||||||
|
-1, -1, NULL,
|
||||||
|
STRING_TOKEN (STR_PCI_EXT_CAP_SECONDARY),
|
||||||
|
gShellDebug1HiiHandle,
|
||||||
|
Header->LinkControl3,
|
||||||
|
Header->LaneErrorStatus
|
||||||
|
);
|
||||||
|
DumpHex (
|
||||||
|
8,
|
||||||
|
EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)Header->EqualizationControl - (UINT8*)HeadersBaseAddress),
|
||||||
|
PCIE_CAP_MAX_LINK_WIDTH(PciExpressCapPtr->LinkCap),
|
||||||
|
(VOID *)Header->EqualizationControl
|
||||||
|
);
|
||||||
|
|
||||||
|
DumpHex (
|
||||||
|
4,
|
||||||
|
EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),
|
||||||
|
sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH) - sizeof(Header->EqualizationControl) + PCIE_CAP_MAX_LINK_WIDTH(PciExpressCapPtr->LinkCap),
|
||||||
|
(VOID *) (HeaderAddress)
|
||||||
|
);
|
||||||
|
|
||||||
|
return (EFI_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Display Pcie extended capability details
|
Display Pcie extended capability details
|
||||||
|
|
||||||
|
@ -5094,26 +5308,25 @@ PrintPciExtendedCapabilityDetails(
|
||||||
case PCI_EXPRESS_EXTENDED_CAPABILITY_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_ID:
|
case PCI_EXPRESS_EXTENDED_CAPABILITY_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_ID:
|
||||||
return PrintInterpretedExtendedCompatibilityECEA(HeaderAddress, HeadersBaseAddress);
|
return PrintInterpretedExtendedCompatibilityECEA(HeaderAddress, HeadersBaseAddress);
|
||||||
break;
|
break;
|
||||||
/**
|
|
||||||
case PCI_EXPRESS_EXTENDED_CAPABILITY_VIRTUAL_CHANNEL_ID:
|
case PCI_EXPRESS_EXTENDED_CAPABILITY_VIRTUAL_CHANNEL_ID:
|
||||||
case PCI_EXPRESS_EXTENDED_CAPABILITY_MULTI_FUNCTION_VIRTUAL_CHANNEL_ID:
|
case PCI_EXPRESS_EXTENDED_CAPABILITY_MULTI_FUNCTION_VIRTUAL_CHANNEL_ID:
|
||||||
ASSERT(FALSE);
|
return PrintInterpretedExtendedCompatibilityVirtualChannel(HeaderAddress, HeadersBaseAddress);
|
||||||
break;
|
break;
|
||||||
case PCI_EXPRESS_EXTENDED_CAPABILITY_MULTICAST_ID:
|
case PCI_EXPRESS_EXTENDED_CAPABILITY_MULTICAST_ID:
|
||||||
// use PCIE_CAP_DEVICEPORT_TYPE(PciExpressCapPtr->PcieCapReg) == 0100b, 0101b, or 0110b
|
//
|
||||||
ASSERT(FALSE);
|
// should only be present if PCIE_CAP_DEVICEPORT_TYPE(PciExpressCapPtr->PcieCapReg) == 0100b, 0101b, or 0110b
|
||||||
|
//
|
||||||
|
return PrintInterpretedExtendedCompatibilityMulticast(HeaderAddress, HeadersBaseAddress, PciExpressCapPtr);
|
||||||
break;
|
break;
|
||||||
case PCI_EXPRESS_EXTENDED_CAPABILITY_RESIZABLE_BAR_ID:
|
case PCI_EXPRESS_EXTENDED_CAPABILITY_RESIZABLE_BAR_ID:
|
||||||
ASSERT(FALSE);
|
return PrintInterpretedExtendedCompatibilityResizeableBar(HeaderAddress, HeadersBaseAddress);
|
||||||
break;
|
break;
|
||||||
case PCI_EXPRESS_EXTENDED_CAPABILITY_TPH_ID:
|
case PCI_EXPRESS_EXTENDED_CAPABILITY_TPH_ID:
|
||||||
ASSERT(FALSE);
|
return PrintInterpretedExtendedCompatibilityTph(HeaderAddress, HeadersBaseAddress);
|
||||||
break;
|
break;
|
||||||
case PCI_EXPRESS_EXTENDED_CAPABILITY_SECONDARY_PCIE_ID:
|
case PCI_EXPRESS_EXTENDED_CAPABILITY_SECONDARY_PCIE_ID:
|
||||||
// use PciExpressCapPtr link capabilities register
|
return PrintInterpretedExtendedCompatibilitySecondary(HeaderAddress, HeadersBaseAddress, PciExpressCapPtr);
|
||||||
ASSERT(FALSE);
|
|
||||||
break;
|
break;
|
||||||
//**/
|
|
||||||
default:
|
default:
|
||||||
ShellPrintEx (-1, -1,
|
ShellPrintEx (-1, -1,
|
||||||
L"Unknown PCIe extended capability ID (%04xh). No interpretation available.\r\n",
|
L"Unknown PCIe extended capability ID (%04xh). No interpretation available.\r\n",
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue