]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
ShellPkg/SmbiosView: Add decoding of SMBIOS record type 43
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / PrintInfo.c
index 000bbe53a71d2710ae448e34b4cd6f9e53b11f4b..d9adb1a7abb99f78da0d60c4dcf77da1f0b64e41 100644 (file)
@@ -1095,6 +1095,20 @@ SmbiosPrintStructure (
     PRINT_STRUCT_VALUE_H (Struct, Type42, InterfaceType);\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
   // Inactive (Type 126)\r
   //\r
@@ -3238,3 +3252,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