]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/Pci.c
Update the comments in function headers to follow Doxygen special documentation block...
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / Pci.c
index a539bb568cadd96e79bb87a4a021cf3cea40022d..470f870065531d1159c89ba0cff69346dd66ed57 100644 (file)
@@ -1492,6 +1492,7 @@ PciGetNextBusRange (
   @param[in] ConfigSpace     Data in PCI configuration space.\r
   @param[in] Address         Address used to access configuration space of this PCI device.\r
   @param[in] IoDev           Handle used to access configuration space of PCI device.\r
+  @param[in] EnhancedDump    The print format for the dump data.\r
 \r
   @retval EFI_SUCCESS     The command completed successfully.\r
 **/\r
@@ -1618,11 +1619,12 @@ PciExplainBridgeControl (
 /**\r
   Print each capability structure.\r
 \r
-  @param[in] IoDev      The pointer to the deivce.\r
-  @param[in] Address    The address to start at.\r
-  @param[in] CapPtr     The offset from the address.\r
+  @param[in] IoDev            The pointer to the deivce.\r
+  @param[in] Address          The address to start at.\r
+  @param[in] CapPtr           The offset from the address.\r
+  @param[in] EnhancedDump     The print format for the dump data.\r
 \r
-  @retval EFI_SUCCESS     The operation was successful.\r
+  @retval EFI_SUCCESS         The operation was successful.\r
 **/\r
 EFI_STATUS\r
 PciExplainCapabilityStruct (\r
@@ -1635,9 +1637,13 @@ PciExplainCapabilityStruct (
 /**\r
   Display Pcie device structure.\r
 \r
-  @param[in] IoDev          The pointer to the root pci protocol.\r
-  @param[in] Address        The Address to start at.\r
-  @param[in] CapabilityPtr  The offset from the address to start.\r
+  @param[in] IoDev            The pointer to the root pci protocol.\r
+  @param[in] Address          The Address to start at.\r
+  @param[in] CapabilityPtr    The offset from the address to start.\r
+  @param[in] EnhancedDump     The print format for the dump data.\r
+  \r
+  @retval EFI_SUCCESS           The command completed successfully.\r
+  @retval @retval EFI_SUCCESS   Pci express extend space IO is not suppoted.   \r
 **/\r
 EFI_STATUS\r
 PciExplainPciExpress (\r
@@ -2660,6 +2666,7 @@ PciGetNextBusRange (
   @param[in] ConfigSpace     Data in PCI configuration space.\r
   @param[in] Address         Address used to access configuration space of this PCI device.\r
   @param[in] IoDev           Handle used to access configuration space of PCI device.\r
+  @param[in] EnhancedDump    The print format for the dump data.\r
 \r
   @retval EFI_SUCCESS     The command completed successfully.\r
 **/\r
@@ -3790,9 +3797,10 @@ PciExplainBridgeControl (
 /**\r
   Print each capability structure.\r
 \r
-  @param[in] IoDev      The pointer to the deivce.\r
-  @param[in] Address    The address to start at.\r
-  @param[in] CapPtr     The offset from the address.\r
+  @param[in] IoDev            The pointer to the deivce.\r
+  @param[in] Address          The address to start at.\r
+  @param[in] CapPtr           The offset from the address.\r
+  @param[in] EnhancedDump     The print format for the dump data.\r
 \r
   @retval EFI_SUCCESS     The operation was successful.\r
 **/\r
@@ -5042,6 +5050,220 @@ PrintInterpretedExtendedCompatibilityAer (
   return (EFI_SUCCESS);\r
 }\r
 \r
+/**\r
+  Function to interpret and print out the multicast structure\r
+\r
+  @param[in] HeaderAddress        The Address of this capability header.\r
+  @param[in] HeadersBaseAddress   The address of all the extended capability headers.\r
+  @param[in] PciExpressCapPtr     The address of the PCIe capabilities structure.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PrintInterpretedExtendedCompatibilityMulticast (\r
+  IN CONST PCI_EXP_EXT_HDR *HeaderAddress,\r
+  IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress,\r
+  IN CONST PCIE_CAP_STURCTURE *PciExpressCapPtr\r
+  )\r
+{\r
+  CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_MULTICAST *Header;\r
+  Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_MULTICAST*)HeaderAddress;\r
+\r
+  ShellPrintHiiEx(\r
+    -1, -1, NULL, \r
+    STRING_TOKEN (STR_PCI_EXT_CAP_MULTICAST), \r
+    gShellDebug1HiiHandle, \r
+    Header->MultiCastCapability,\r
+    Header->MulticastControl,\r
+    Header->McBaseAddress,\r
+    Header->McReceiveAddress,\r
+    Header->McBlockAll,\r
+    Header->McBlockUntranslated,\r
+    Header->McOverlayBar\r
+    );\r
+\r
+  DumpHex (\r
+    4,\r
+    EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),\r
+    sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_MULTICAST),\r
+    (VOID *) (HeaderAddress)\r
+    );\r
+\r
+  return (EFI_SUCCESS);\r
+}\r
+\r
+/**\r
+  Function to interpret and print out the virtual channel and multi virtual channel structure\r
+\r
+  @param[in] HeaderAddress        The Address of this capability header.\r
+  @param[in] HeadersBaseAddress   The address of all the extended capability headers.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PrintInterpretedExtendedCompatibilityVirtualChannel (\r
+  IN CONST PCI_EXP_EXT_HDR *HeaderAddress,\r
+  IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress\r
+  )\r
+{\r
+  CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_CAPABILITY  *Header;\r
+  CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_VC          *CapabilityItem;\r
+  UINT32                                                              ItemCount;\r
+  Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_CAPABILITY*)HeaderAddress;\r
+\r
+  ShellPrintHiiEx(\r
+    -1, -1, NULL, \r
+    STRING_TOKEN (STR_PCI_EXT_CAP_VC_BASE), \r
+    gShellDebug1HiiHandle, \r
+    Header->ExtendedVcCount,\r
+    Header->PortVcCapability1,\r
+    Header->PortVcCapability2,\r
+    Header->VcArbTableOffset,\r
+    Header->PortVcControl,\r
+    Header->PortVcStatus\r
+    );\r
+  for (ItemCount = 0 ; ItemCount < Header->ExtendedVcCount ; ItemCount++) {\r
+    CapabilityItem = &Header->Capability[ItemCount];\r
+    ShellPrintHiiEx(\r
+      -1, -1, NULL, \r
+      STRING_TOKEN (STR_PCI_EXT_CAP_VC_ITEM), \r
+      gShellDebug1HiiHandle, \r
+      ItemCount+1,\r
+      CapabilityItem->VcResourceCapability,\r
+      CapabilityItem->PortArbTableOffset,\r
+      CapabilityItem->VcResourceControl,\r
+      CapabilityItem->VcResourceStatus\r
+      );\r
+  }\r
+\r
+  DumpHex (\r
+    4,\r
+    EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),\r
+    sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_VC) + (Header->ExtendedVcCount - 1) * sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_VIRTUAL_CHANNEL_CAPABILITY),\r
+    (VOID *) (HeaderAddress)\r
+    );\r
+\r
+  return (EFI_SUCCESS);\r
+}\r
+\r
+/**\r
+  Function to interpret and print out the resizeable bar structure\r
+\r
+  @param[in] HeaderAddress        The Address of this capability header.\r
+  @param[in] HeadersBaseAddress   The address of all the extended capability headers.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PrintInterpretedExtendedCompatibilityResizeableBar (\r
+  IN CONST PCI_EXP_EXT_HDR *HeaderAddress,\r
+  IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress\r
+  )\r
+{\r
+  CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR        *Header;\r
+  UINT32                                                       ItemCount;\r
+  Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR*)HeaderAddress;\r
+\r
+  for (ItemCount = 0 ; ItemCount < (UINT32)GET_NUMBER_RESIZABLE_BARS(Header) ; ItemCount++) {\r
+    ShellPrintHiiEx(\r
+      -1, -1, NULL, \r
+      STRING_TOKEN (STR_PCI_EXT_CAP_RESIZE_BAR), \r
+      gShellDebug1HiiHandle, \r
+      ItemCount+1,\r
+      Header->Capability[ItemCount].ResizableBarCapability,\r
+      Header->Capability[ItemCount].ResizableBarControl\r
+      );\r
+  }\r
+\r
+  DumpHex (\r
+    4,\r
+    EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),\r
+    (UINT32)GET_NUMBER_RESIZABLE_BARS(Header) * sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_RESIZABLE_BAR_ENTRY),\r
+    (VOID *) (HeaderAddress)\r
+    );\r
+\r
+  return (EFI_SUCCESS);\r
+}\r
+\r
+/**\r
+  Function to interpret and print out the TPH structure\r
+\r
+  @param[in] HeaderAddress        The Address of this capability header.\r
+  @param[in] HeadersBaseAddress   The address of all the extended capability headers.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PrintInterpretedExtendedCompatibilityTph (\r
+  IN CONST PCI_EXP_EXT_HDR *HeaderAddress,\r
+  IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress\r
+  )\r
+{\r
+  CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH *Header;\r
+  Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH*)HeaderAddress;\r
+\r
+  ShellPrintHiiEx(\r
+    -1, -1, NULL, \r
+    STRING_TOKEN (STR_PCI_EXT_CAP_TPH), \r
+    gShellDebug1HiiHandle, \r
+    Header->TphRequesterCapability,\r
+    Header->TphRequesterControl\r
+    );\r
+  DumpHex (\r
+    8,\r
+    EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)Header->TphStTable - (UINT8*)HeadersBaseAddress),\r
+    GET_TPH_TABLE_SIZE(Header),\r
+    (VOID *)Header->TphStTable\r
+    );\r
+\r
+  DumpHex (\r
+    4,\r
+    EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),\r
+    sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH) + GET_TPH_TABLE_SIZE(Header) - sizeof(UINT16),\r
+    (VOID *) (HeaderAddress)\r
+    );\r
+\r
+  return (EFI_SUCCESS);\r
+}\r
+\r
+/**\r
+  Function to interpret and print out the secondary PCIe capability structure\r
+\r
+  @param[in] HeaderAddress        The Address of this capability header.\r
+  @param[in] HeadersBaseAddress   The address of all the extended capability headers.\r
+  @param[in] PciExpressCapPtr     The address of the PCIe capabilities structure.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+PrintInterpretedExtendedCompatibilitySecondary (\r
+  IN CONST PCI_EXP_EXT_HDR *HeaderAddress,\r
+  IN CONST PCI_EXP_EXT_HDR *HeadersBaseAddress,\r
+  IN CONST PCIE_CAP_STURCTURE *PciExpressCapPtr\r
+  )\r
+{\r
+  CONST PCI_EXPRESS_EXTENDED_CAPABILITIES_SECONDARY_PCIE *Header;\r
+  Header = (PCI_EXPRESS_EXTENDED_CAPABILITIES_SECONDARY_PCIE*)HeaderAddress;\r
+\r
+  ShellPrintHiiEx(\r
+    -1, -1, NULL, \r
+    STRING_TOKEN (STR_PCI_EXT_CAP_SECONDARY), \r
+    gShellDebug1HiiHandle, \r
+    Header->LinkControl3,\r
+    Header->LaneErrorStatus\r
+    );\r
+  DumpHex (\r
+    8,\r
+    EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)Header->EqualizationControl - (UINT8*)HeadersBaseAddress),\r
+    PCIE_CAP_MAX_LINK_WIDTH(PciExpressCapPtr->LinkCap),\r
+    (VOID *)Header->EqualizationControl\r
+    );\r
+\r
+  DumpHex (\r
+    4,\r
+    EFI_PCIE_CAPABILITY_BASE_OFFSET + ((UINT8*)HeaderAddress - (UINT8*)HeadersBaseAddress),\r
+    sizeof(PCI_EXPRESS_EXTENDED_CAPABILITIES_TPH) - sizeof(Header->EqualizationControl) + PCIE_CAP_MAX_LINK_WIDTH(PciExpressCapPtr->LinkCap),\r
+    (VOID *) (HeaderAddress)\r
+    );\r
+\r
+  return (EFI_SUCCESS);\r
+}\r
+\r
 /**\r
   Display Pcie extended capability details\r
 \r
@@ -5060,67 +5282,48 @@ PrintPciExtendedCapabilityDetails(
   switch (HeaderAddress->CapabilityId){\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_ADVANCED_ERROR_REPORTING_ID:\r
       return PrintInterpretedExtendedCompatibilityAer(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_LINK_CONTROL_ID:\r
       return PrintInterpretedExtendedCompatibilityLinkControl(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_LINK_DECLARATION_ID:\r
       return PrintInterpretedExtendedCompatibilityLinkDeclaration(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_SERIAL_NUMBER_ID:\r
       return PrintInterpretedExtendedCompatibilitySerialNumber(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_POWER_BUDGETING_ID:\r
       return PrintInterpretedExtendedCompatibilityPowerBudgeting(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_ACS_EXTENDED_ID:\r
       return PrintInterpretedExtendedCompatibilityAcs(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_LATENCE_TOLERANCE_REPORTING_ID:\r
       return PrintInterpretedExtendedCompatibilityLatencyToleranceReporting(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_ARI_CAPABILITY_ID:\r
       return PrintInterpretedExtendedCompatibilityAri(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_RCRB_HEADER_ID:\r
       return PrintInterpretedExtendedCompatibilityRcrb(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_VENDOR_SPECIFIC_ID:\r
       return PrintInterpretedExtendedCompatibilityVendorSpecific(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_DYNAMIC_POWER_ALLOCATION_ID:\r
       return PrintInterpretedExtendedCompatibilityDynamicPowerAllocation(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_EVENT_COLLECTOR_ENDPOINT_ASSOCIATION_ID:\r
       return PrintInterpretedExtendedCompatibilityECEA(HeaderAddress, HeadersBaseAddress);\r
-      break;\r
-/**\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_VIRTUAL_CHANNEL_ID:\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_MULTI_FUNCTION_VIRTUAL_CHANNEL_ID:\r
-      ASSERT(FALSE);\r
-      break;\r
+      return PrintInterpretedExtendedCompatibilityVirtualChannel(HeaderAddress, HeadersBaseAddress);\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_MULTICAST_ID: \r
-// use PCIE_CAP_DEVICEPORT_TYPE(PciExpressCapPtr->PcieCapReg) == 0100b, 0101b, or 0110b\r
-      ASSERT(FALSE);\r
-      break;\r
+      //\r
+      // should only be present if PCIE_CAP_DEVICEPORT_TYPE(PciExpressCapPtr->PcieCapReg) == 0100b, 0101b, or 0110b\r
+      //\r
+      return PrintInterpretedExtendedCompatibilityMulticast(HeaderAddress, HeadersBaseAddress, PciExpressCapPtr);\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_RESIZABLE_BAR_ID:\r
-      ASSERT(FALSE);\r
-      break;\r
+      return PrintInterpretedExtendedCompatibilityResizeableBar(HeaderAddress, HeadersBaseAddress);\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_TPH_ID:\r
-      ASSERT(FALSE);\r
-      break;\r
+      return PrintInterpretedExtendedCompatibilityTph(HeaderAddress, HeadersBaseAddress);\r
     case PCI_EXPRESS_EXTENDED_CAPABILITY_SECONDARY_PCIE_ID:\r
- // use PciExpressCapPtr link capabilities register\r
-     ASSERT(FALSE);\r
-      break;\r
-//**/\r
+      return PrintInterpretedExtendedCompatibilitySecondary(HeaderAddress, HeadersBaseAddress, PciExpressCapPtr);\r
     default:\r
       ShellPrintEx (-1, -1,\r
         L"Unknown PCIe extended capability ID (%04xh).  No interpretation available.\r\n",\r
         HeaderAddress->CapabilityId\r
         );\r
       return EFI_SUCCESS;\r
-      break;\r
   };\r
 \r
 }\r
@@ -5131,6 +5334,8 @@ PrintPciExtendedCapabilityDetails(
   @param[in] IoDev          The pointer to the root pci protocol.\r
   @param[in] Address        The Address to start at.\r
   @param[in] CapabilityPtr  The offset from the address to start.\r
+  @param[in] EnhancedDump   The print format for the dump data.\r
+  \r
 **/\r
 EFI_STATUS\r
 PciExplainPciExpress (\r