]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Add dump information for PCI Root Bridge IO protocol.
authorjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 10 Jan 2012 20:51:04 +0000 (20:51 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 10 Jan 2012 20:51:04 +0000 (20:51 +0000)
This indirectly updates the DH command since it will automatically call the new function.

signed-off-by: jcarsey
reviewed-by: leegrosenbaum

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12922 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c
ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.uni

index 44ad4c0b55d6cc36e7ab8426b2c81bd3d4fb7a6d..6e44bcec75b9d579b87f283fc7d8fe55a8c769da 100644 (file)
@@ -13,6 +13,7 @@
 **/\r
 \r
 #include "UefiHandleParsingLib.h"\r
+#include "IndustryStandard/Acpi10.h"\r
 \r
 EFI_HANDLE mHandleParsingHiiHandle;\r
 HANDLE_INDEX_LIST mHandleList = {{{NULL,NULL},0,0},0};\r
@@ -160,6 +161,125 @@ LoadedImageProtocolDumpInformation(
 }\r
 */\r
 \r
+/**\r
+  Function to dump information about PciRootBridgeIo.\r
+\r
+  This will allocate the return buffer from boot services pool.\r
+\r
+  @param[in] TheHandle      The handle that has PciRootBridgeIo installed.\r
+  @param[in] Verbose        TRUE for additional information, FALSE otherwise.\r
+\r
+  @retval A poitner to a string containing the information.\r
+**/\r
+CHAR16*\r
+EFIAPI\r
+PciRootBridgeIoDumpInformation(\r
+  IN CONST EFI_HANDLE TheHandle,\r
+  IN CONST BOOLEAN    Verbose\r
+  )\r
+{\r
+  EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL   *PciRootBridgeIo;\r
+  EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR *Configuration;\r
+  UINT64                            Supports;\r
+  UINT64                            Attributes;\r
+  CHAR16                            *Temp;\r
+  CHAR16                            *Temp2;\r
+  CHAR16                            *RetVal;\r
+  EFI_STATUS                        Status;\r
+\r
+  RetVal  = NULL;\r
+\r
+  if (!Verbose) {\r
+    return (CatSPrint(NULL, L"PciRootBridgeIo"));\r
+  }\r
+\r
+  Status = gBS->HandleProtocol(\r
+    TheHandle,\r
+    &gEfiPciRootBridgeIoProtocolGuid,\r
+    (VOID**)&PciRootBridgeIo);\r
+\r
+  if (EFI_ERROR(Status)) {\r
+    return NULL;\r
+  }\r
+\r
+  Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_PH), NULL);\r
+  Temp2 = CatSPrint(L"\r\n", Temp, PciRootBridgeIo->ParentHandle);\r
+  FreePool(Temp);\r
+  RetVal = Temp2;\r
+  Temp2 = NULL;\r
\r
+  Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_SEG), NULL);\r
+  Temp2 = CatSPrint(RetVal, Temp, PciRootBridgeIo->SegmentNumber);\r
+  FreePool(Temp);\r
+  FreePool(RetVal);\r
+  RetVal = Temp2;\r
+  Temp2 = NULL;\r
+\r
+  Supports   = 0;\r
+  Attributes = 0;\r
+  Status = PciRootBridgeIo->GetAttributes (PciRootBridgeIo, &Supports, &Attributes);\r
+  if (!EFI_ERROR(Status)) {\r
+    Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_ATT), NULL);\r
+    Temp2 = CatSPrint(RetVal, Temp, Attributes);\r
+    FreePool(Temp);\r
+    FreePool(RetVal);\r
+    RetVal = Temp2;\r
+    Temp2 = NULL;\r
+    \r
+    Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_SUPPORTS), NULL);\r
+    Temp2 = CatSPrint(RetVal, Temp, Supports);\r
+    FreePool(Temp);\r
+    FreePool(RetVal);\r
+    RetVal = Temp2;\r
+    Temp2 = NULL;\r
+  }\r
+\r
+  Configuration   = NULL;\r
+  Status = PciRootBridgeIo->Configuration (PciRootBridgeIo, (VOID **) &Configuration);\r
+  if (!EFI_ERROR(Status) && Configuration != NULL) {\r
+    Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_TITLE), NULL);\r
+    Temp2 = CatSPrint(RetVal, Temp, Supports);\r
+    FreePool(Temp);\r
+    FreePool(RetVal);\r
+    RetVal = Temp2;\r
+    Temp2 = NULL;\r
+    while (Configuration->Desc == ACPI_ADDRESS_SPACE_DESCRIPTOR) {\r
+      Temp = NULL;\r
+      switch (Configuration->ResType) {\r
+      case ACPI_ADDRESS_SPACE_TYPE_MEM:\r
+        Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_MEM), NULL);\r
+        break;\r
+      case ACPI_ADDRESS_SPACE_TYPE_IO:\r
+        Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_IO), NULL);\r
+        break;\r
+      case ACPI_ADDRESS_SPACE_TYPE_BUS:\r
+        Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_PCIRB_DUMP_BUS), NULL);\r
+        break;\r
+      }\r
+      if (Temp != NULL) {\r
+        Temp2 = CatSPrint(RetVal, L"%s", Temp);\r
+        FreePool(Temp);\r
+        FreePool(RetVal);\r
+        RetVal = Temp2;\r
+        Temp2 = NULL;\r
+      }\r
+\r
+      Temp2 = CatSPrint(RetVal, \r
+        L"%H%02x    %016lx  %016lx  %02x%N\r\n",\r
+        Configuration->SpecificFlag,\r
+        Configuration->AddrRangeMin,\r
+        Configuration->AddrRangeMax,\r
+        Configuration->AddrSpaceGranularity\r
+        );\r
+      FreePool(RetVal);\r
+      RetVal = Temp2;\r
+      Temp2 = NULL;\r
+      Configuration++;\r
+    }\r
+  }\r
+  return (RetVal);\r
+}\r
+\r
 /**\r
   Function to dump information about SimpleTextOut.\r
 \r
@@ -381,7 +501,7 @@ STATIC CONST GUID_INFO_BLOCK mGuidStringList[] = {
   {STRING_TOKEN(STR_BLK_IO),                &gEfiBlockIoProtocolGuid,                         NULL},\r
   {STRING_TOKEN(STR_UC),                    &gEfiUnicodeCollationProtocolGuid,                NULL},\r
   {STRING_TOKEN(STR_UC2),                   &gEfiUnicodeCollation2ProtocolGuid,               NULL},\r
-  {STRING_TOKEN(STR_PCIRB_IO),              &gEfiPciRootBridgeIoProtocolGuid,                 NULL},\r
+  {STRING_TOKEN(STR_PCIRB_IO),              &gEfiPciRootBridgeIoProtocolGuid,                 PciRootBridgeIoDumpInformation},\r
   {STRING_TOKEN(STR_PCI_IO),                &gEfiPciIoProtocolGuid,                           NULL},\r
   {STRING_TOKEN(STR_SCSI_PT),               &gEfiScsiPassThruProtocolGuid,                    NULL},\r
   {STRING_TOKEN(STR_SCSI_IO),               &gEfiScsiIoProtocolGuid,                          NULL},\r
index 096e6c8f4e6b5472d5aee5c33c6d6563b65368d7..6a9074eafe6e10599e3e6d65780f3e280287f9fe 100644 (file)
Binary files a/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.uni and b/ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.uni differ