]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
ShellPkg: Update header file including style
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / PrintInfo.c
index a3b99b8fbfece6968bd1ca4fdb83ce7a9e1be287..7a75554d7952464aee784a5a038bc289f21d512a 100644 (file)
@@ -1,8 +1,9 @@
 /** @file\r
   Module for clarifying the content of the smbios structure element information.\r
 \r
-  Copyright (c) 2005 - 2012, Intel Corporation. All rights reserved.<BR>\r
-  (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>\r
+  Copyright (c) 2005 - 2017, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>  \r
+  (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
@@ -13,7 +14,7 @@
 \r
 **/\r
 \r
-#include "../UefiShellDebug1CommandsLib.h"\r
+#include "UefiShellDebug1CommandsLib.h"\r
 #include "PrintInfo.h"\r
 #include "LibSmbiosView.h"\r
 #include "QueryTable.h"\r
@@ -199,6 +200,75 @@ SmbiosPrintEPSInfo (
   Print (L"\n");\r
 }\r
 \r
+/**\r
+  Print the info of 64-bit EPS(Entry Point Structure).\r
+\r
+  @param[in] SmbiosTable    Pointer to the SMBIOS table entry point.\r
+  @param[in] Option         Display option.\r
+**/\r
+VOID\r
+Smbios64BitPrintEPSInfo (\r
+  IN  SMBIOS_TABLE_3_0_ENTRY_POINT  *SmbiosTable,\r
+  IN  UINT8                         Option\r
+  )\r
+{\r
+  UINT8 Anchor[5];\r
+\r
+  if (SmbiosTable == NULL) {\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SMBIOSTABLE_NULL), gShellDebug1HiiHandle);\r
+    return ;\r
+  }\r
+\r
+  if (Option == SHOW_NONE) {\r
+    return ;\r
+  }\r
+\r
+  if (Option >= SHOW_NORMAL) {\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_64_BIT_ENTRY_POINT_SIGN), gShellDebug1HiiHandle);\r
+\r
+    MemToString (Anchor, SmbiosTable->AnchorString, 5);\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ANCHOR_STR), gShellDebug1HiiHandle, Anchor);\r
+\r
+    ShellPrintHiiEx(-1,-1,NULL,\r
+      STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EPS_CHECKSUM),\r
+      gShellDebug1HiiHandle,\r
+      SmbiosTable->EntryPointStructureChecksum\r
+     );\r
+\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_LEN), gShellDebug1HiiHandle, SmbiosTable->EntryPointLength);\r
+\r
+    ShellPrintHiiEx(-1,-1,NULL,\r
+      STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VERSION),\r
+      gShellDebug1HiiHandle,\r
+      SmbiosTable->MajorVersion,\r
+      SmbiosTable->MinorVersion\r
+     );\r
+\r
+    ShellPrintHiiEx(-1,-1,NULL,\r
+      STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DOCREV),\r
+      gShellDebug1HiiHandle,\r
+      SmbiosTable->DocRev\r
+     );\r
+\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_MAX_SIZE), gShellDebug1HiiHandle, SmbiosTable->TableMaximumSize);\r
+\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_ADDR), gShellDebug1HiiHandle, SmbiosTable->TableAddress);\r
+\r
+  }\r
+  //\r
+  // If SHOW_ALL, also print followings.\r
+  //\r
+  if (Option >= SHOW_DETAIL) {\r
+    ShellPrintHiiEx(-1,-1,NULL,\r
+      STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_REVISION),\r
+      gShellDebug1HiiHandle,\r
+      SmbiosTable->EntryPointRevision\r
+     );\r
+  }\r
+\r
+  Print (L"\n");\r
+}\r
+\r
 /**\r
   This function print the content of the structure pointed by Struct.\r
 \r
@@ -246,7 +316,7 @@ SmbiosPrintStructure (
   case 0:\r
     PRINT_PENDING_STRING (Struct, Type0, Vendor);\r
     PRINT_PENDING_STRING (Struct, Type0, BiosVersion);\r
-    PRINT_STRUCT_VALUE (Struct, Type0, BiosSegment);\r
+    PRINT_STRUCT_VALUE_H (Struct, Type0, BiosSegment);\r
     PRINT_PENDING_STRING (Struct, Type0, BiosReleaseDate);\r
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE), gShellDebug1HiiHandle, 64 * (Struct->Type0->BiosSize + 1));\r
 \r
@@ -265,7 +335,17 @@ SmbiosPrintStructure (
       PRINT_STRUCT_VALUE (Struct, Type0, EmbeddedControllerFirmwareMajorRelease);\r
       PRINT_STRUCT_VALUE (Struct, Type0, EmbeddedControllerFirmwareMinorRelease);\r
     }\r
-\r
+    if (AE_SMBIOS_VERSION (0x3, 0x1) && (Struct->Hdr->Length > 0x18)) {\r
+      ShellPrintHiiEx (\r
+        -1,\r
+        -1,\r
+        NULL,\r
+        STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EXTENDED_BIOS_SIZE),\r
+        gShellDebug1HiiHandle,\r
+        Struct->Type0->ExtendedBiosSize.Size,\r
+        (Struct->Type0->ExtendedBiosSize.Unit == 0x0) ? L"MB": L"GB"\r
+        );\r
+    }\r
     break;\r
 \r
   //\r
@@ -320,8 +400,21 @@ SmbiosPrintStructure (
     DisplaySystemEnclosureStatus (Struct->Type3->ThermalState, Option);\r
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SECURITY_STATUS), gShellDebug1HiiHandle);\r
     DisplaySESecurityStatus (Struct->Type3->SecurityStatus, Option);\r
-    if (AE_SMBIOS_VERSION (0x2, 0x3) && (Struct->Hdr->Length > 0xD)) {\r
-      PRINT_BIT_FIELD (Struct, Type3, OemDefined, 4);\r
+    if (AE_SMBIOS_VERSION (0x2, 0x3)) {\r
+      if (Struct->Hdr->Length > 0xD) {\r
+        PRINT_BIT_FIELD (Struct, Type3, OemDefined, 4);\r
+      }\r
+      if (Struct->Hdr->Length > 0x11) {\r
+        PRINT_STRUCT_VALUE (Struct, Type3, Height);\r
+      }\r
+      if (Struct->Hdr->Length > 0x12) {\r
+        PRINT_STRUCT_VALUE (Struct, Type3, NumberofPowerCords);\r
+      }\r
+    }\r
+    if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x13)) {\r
+      if (Struct->Hdr->Length > (0x15 + (Struct->Type3->ContainedElementCount * Struct->Type3->ContainedElementRecordLength))) {\r
+        PRINT_SMBIOS_STRING (Struct, Buffer[0x15 + (Struct->Type3->ContainedElementCount * Struct->Type3->ContainedElementRecordLength)], SKUNumber);\r
+      }\r
     }\r
     break;\r
 \r
@@ -329,7 +422,7 @@ SmbiosPrintStructure (
   // Processor Information (Type 4)\r
   //\r
   case 4:\r
-    PRINT_PENDING_STRING (Struct, Type4, Socket);\r
+    PRINT_SMBIOS_STRING (Struct, Struct->Type4->Socket, SocketDesignation)\r
     DisplayProcessorType (Struct->Type4->ProcessorType, Option);\r
     if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x28) &&\r
         (Struct->Type4->ProcessorFamily == 0xFE)) {\r
@@ -363,7 +456,7 @@ SmbiosPrintStructure (
       PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount);\r
       DisplayProcessorCharacteristics (Struct->Type4->ProcessorCharacteristics, Option);\r
     }\r
-    if (AE_SMBIOS_VERSION (0x3, 0x0) && (Struct->Hdr->Length > 0x2A)) {\r
+    if ((SmbiosMajorVersion >= 0x3) && (Struct->Hdr->Length > 0x2A)) {\r
       PRINT_STRUCT_VALUE (Struct, Type4, CoreCount2);\r
       PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount2);\r
       PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount2);\r
@@ -427,6 +520,10 @@ SmbiosPrintStructure (
     DisplayCacheErrCorrectingType (Struct->Type7->ErrorCorrectionType, Option);\r
     DisplayCacheSystemCacheType (Struct->Type7->SystemCacheType, Option);\r
     DisplayCacheAssociativity (Struct->Type7->Associativity, Option);\r
+    if (AE_SMBIOS_VERSION (0x3, 0x1) && (Struct->Hdr->Length > 0x13)) {\r
+      PRINT_STRUCT_VALUE_H (Struct, Type7, MaximumCacheSize2);\r
+      PRINT_STRUCT_VALUE_H (Struct, Type7, InstalledSize2);\r
+    }\r
     break;\r
 \r
   //\r
@@ -473,7 +570,8 @@ SmbiosPrintStructure (
       UINTN NumOfDevice;\r
       NumOfDevice = (Struct->Type10->Hdr.Length - sizeof (SMBIOS_STRUCTURE)) / (2 * sizeof (UINT8));\r
       for (Index = 0; Index < NumOfDevice; Index++) {\r
-        DisplayOnboardDeviceTypes (Struct->Type10->Device[Index].DeviceType, Option);\r
+        ShellPrintEx(-1,-1,(((Struct->Type10->Device[Index].DeviceType) & 0x80) != 0) ? L"Device Enabled\n": L"Device Disabled\n");\r
+        DisplayOnboardDeviceTypes ((Struct->Type10->Device[Index].DeviceType) & 0x7F, Option);\r
         ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DESC_STRING), gShellDebug1HiiHandle);\r
         ShellPrintEx(-1,-1,L"%a\n",LibGetSmbiosString (Struct, Struct->Type10->Device[Index].DescriptionString));\r
       }\r
@@ -652,6 +750,11 @@ SmbiosPrintStructure (
       PRINT_STRUCT_VALUE (Struct, Type17, ExtendedSize);\r
       PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredMemoryClockSpeed);\r
     }\r
+    if (AE_SMBIOS_VERSION (0x2, 0x8) && (Struct->Hdr->Length > 0x22)) {\r
+      PRINT_STRUCT_VALUE (Struct, Type17, MinimumVoltage);\r
+      PRINT_STRUCT_VALUE (Struct, Type17, MaximumVoltage);\r
+      PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredVoltage);\r
+    }\r
     break;\r
 \r
   //\r
@@ -1004,7 +1107,21 @@ SmbiosPrintStructure (
   // Management Controller Host Interface (Type 42)\r
   //\r
   case 42:\r
-    PRINT_STRUCT_VALUE_H (Struct, Type42, InterfaceType);\r
+    DisplayMCHostInterfaceType (Struct->Type42->InterfaceType, Option);\r
+    break;\r
+\r
+  //\r
+  // TPM Device (Type 43)\r
+  //\r
+  case 43:\r
+    PRINT_BIT_FIELD (Struct, Type43, VendorID, 4);\r
+    PRINT_STRUCT_VALUE_H (Struct, Type43, MajorSpecVersion);\r
+    PRINT_STRUCT_VALUE_H (Struct, Type43, MinorSpecVersion);\r
+    PRINT_STRUCT_VALUE_H (Struct, Type43, FirmwareVersion1);\r
+    PRINT_STRUCT_VALUE_H (Struct, Type43, FirmwareVersion2);\r
+    PRINT_PENDING_STRING (Struct, Type43, Description);\r
+    DisplayTpmDeviceCharacteristics (ReadUnaligned64 ((UINT64 *) (UINTN) &(Struct->Type43->Characteristics)), Option);\r
+    PRINT_STRUCT_VALUE_H (Struct, Type43, OemDefined);\r
     break;\r
 \r
   //\r
@@ -1478,6 +1595,22 @@ DisplayProcessorFamily (
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_ATOM), gShellDebug1HiiHandle);\r
     break;\r
 \r
+  case 0x2C:\r
+    Print (L"Intel(R) Core(TM) M processor\n");\r
+    break;\r
+\r
+  case 0x2D:\r
+    Print (L"Intel(R) Core(TM) m3 processor\n");\r
+    break;\r
+\r
+  case 0x2E:\r
+    Print (L"Intel(R) Core(TM) m5 processor\n");\r
+    break;\r
+\r
+  case 0x2F:\r
+    Print (L"Intel(R) Core(TM) m7 processor\n");\r
+    break;\r
+\r
   case 0x30:\r
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ALPHA_FAMILY_2), gShellDebug1HiiHandle);\r
     break;\r
@@ -1666,6 +1799,30 @@ DisplayProcessorFamily (
     Print (L"68030\n");\r
     break;\r
 \r
+  case 0x66:\r
+    Print (L"AMD Athlon(TM) X4 Quad-Core Processor Family\n");\r
+    break;\r
+\r
+  case 0x67:\r
+    Print (L"AMD Opteron(TM) X1000 Series Processor\n");\r
+    break;\r
+\r
+  case 0x68:\r
+    Print (L"AMD Opteron(TM) X2000 Series APU\n");\r
+    break;\r
+\r
+  case 0x69:\r
+    Print (L"AMD Opteron(TM) A-Series Processor\n");\r
+    break;\r
+\r
+  case 0x6A:\r
+    Print (L"AMD Opteron(TM) X3000 Series APU\n");\r
+    break;\r
+\r
+  case 0x6B:\r
+    Print (L"AMD Zen Processor Family\n");\r
+    break;\r
+\r
   case 0x70:\r
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HOBBIT_FAMILY), gShellDebug1HiiHandle);\r
     break;\r
@@ -2097,6 +2254,14 @@ DisplayProcessorFamily2 (
   // Use switch to check\r
   //\r
   switch (Family2) {\r
+    case 0x100:\r
+      Print (L"ARMv7\n");\r
+      break;\r
+\r
+    case 0x101:\r
+      Print (L"ARMv8\n");\r
+      break;\r
+\r
     case 0x104:\r
       Print (L"SH-3\n");\r
       break;\r
@@ -3025,7 +3190,7 @@ DisplaySPSCharacteristics (
   // Bits 13:10 - DMTF Power Supply Type\r
   //\r
   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TYPE), gShellDebug1HiiHandle);\r
-  Temp = (Characteristics & 0x1C00) << 10;\r
+  Temp = (Characteristics & 0x1C00) >> 10;\r
   switch (Temp) {\r
   case 1:\r
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
@@ -3066,7 +3231,7 @@ DisplaySPSCharacteristics (
   // Bits 9:7 - Status\r
   //\r
   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STATUS_DASH), gShellDebug1HiiHandle);\r
-  Temp = (Characteristics & 0x380) << 7;\r
+  Temp = (Characteristics & 0x380) >> 7;\r
   switch (Temp) {\r
   case 1:\r
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
@@ -3095,7 +3260,7 @@ DisplaySPSCharacteristics (
   // Bits 6:3 - DMTF Input Voltage Range Switching\r
   //\r
   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INPUT_VOLTAGE_RANGE), gShellDebug1HiiHandle);\r
-  Temp = (Characteristics & 0x78) << 3;\r
+  Temp = (Characteristics & 0x78) >> 3;\r
   switch (Temp) {\r
   case 1:\r
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
@@ -3150,3 +3315,59 @@ DisplaySPSCharacteristics (
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_REPLACE), gShellDebug1HiiHandle);\r
   }\r
 }\r
+\r
+/**\r
+  Display TPM Device (Type 43) Characteristics.\r
+\r
+  @param[in] Chara    The information bits.\r
+  @param[in] Option   The optional information.\r
+**/\r
+VOID\r
+DisplayTpmDeviceCharacteristics (\r
+  IN UINT64  Chara,\r
+  IN UINT8   Option\r
+  )\r
+{\r
+  //\r
+  // Print header\r
+  //\r
+  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CHAR), gShellDebug1HiiHandle);\r
+  //\r
+  // print option\r
+  //\r
+  PRINT_INFO_OPTION (Chara, Option);\r
+\r
+  //\r
+  // Check all the bits and print information\r
+  // This function does not use Table because table of bits\r
+  //   are designed not to deal with UINT64\r
+  //\r
+  if (BIT (Chara, 0) != 0) {\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
+  }\r
+\r
+  if (BIT (Chara, 1) != 0) {\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
+  }\r
+  if (BIT (Chara, 2) != 0) {\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CHAR_NOT_SUPPORTED), gShellDebug1HiiHandle);\r
+  }\r
+\r
+  if (BIT (Chara, 3) != 0) {\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_FWU), gShellDebug1HiiHandle);\r
+  }\r
+\r
+  if (BIT (Chara, 4) != 0) {\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_PLAT_SW), gShellDebug1HiiHandle);\r
+  }\r
+\r
+  if (BIT (Chara, 5) != 0) {\r
+    ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_OEM), gShellDebug1HiiHandle);\r
+  }\r
+\r
+  //\r
+  // Just print the Reserved\r
+  //\r
+  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_06_63), gShellDebug1HiiHandle);\r
+\r
+}\r