]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
ShellPkg/SmbiosView: Update SmbiosView for SMBIOS3.2.0
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / PrintInfo.c
index 93c6094df1fffec376986eeb770971fe57d5f7ba..af8551fe2e733f0874c68d443d35db5de0e04586 100644 (file)
@@ -543,22 +543,45 @@ SmbiosPrintStructure (
   // System Slots (Type 9)\r
   //\r
   case 9:\r
-    PRINT_PENDING_STRING (Struct, Type9, SlotDesignation);\r
-    DisplaySystemSlotType (Struct->Type9->SlotType, Option);\r
-    DisplaySystemSlotDataBusWidth (Struct->Type9->SlotDataBusWidth, Option);\r
-    DisplaySystemSlotCurrentUsage (Struct->Type9->CurrentUsage, Option);\r
-    DisplaySystemSlotLength (Struct->Type9->SlotLength, Option);\r
-    DisplaySystemSlotId (\r
-      Struct->Type9->SlotID,\r
-      Struct->Type9->SlotType,\r
-      Option\r
-     );\r
-    DisplaySlotCharacteristics1 (*(UINT8 *) &(Struct->Type9->SlotCharacteristics1), Option);\r
-    DisplaySlotCharacteristics2 (*(UINT8 *) &(Struct->Type9->SlotCharacteristics2), Option);\r
-    if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0xD)) {\r
-      PRINT_STRUCT_VALUE_H (Struct, Type9, SegmentGroupNum);\r
-      PRINT_STRUCT_VALUE_H (Struct, Type9, BusNum);\r
-      PRINT_STRUCT_VALUE_H (Struct, Type9, DevFuncNum);\r
+    {\r
+      MISC_SLOT_PEER_GROUP  *PeerGroupPtr;\r
+      UINT8                 PeerGroupCount;\r
+\r
+      PRINT_PENDING_STRING (Struct, Type9, SlotDesignation);\r
+      DisplaySystemSlotType (Struct->Type9->SlotType, Option);\r
+      DisplaySystemSlotDataBusWidth (Struct->Type9->SlotDataBusWidth, Option);\r
+      DisplaySystemSlotCurrentUsage (Struct->Type9->CurrentUsage, Option);\r
+      DisplaySystemSlotLength (Struct->Type9->SlotLength, Option);\r
+      DisplaySystemSlotId (\r
+        Struct->Type9->SlotID,\r
+        Struct->Type9->SlotType,\r
+        Option\r
+       );\r
+      DisplaySlotCharacteristics1 (*(UINT8 *) &(Struct->Type9->SlotCharacteristics1), Option);\r
+      DisplaySlotCharacteristics2 (*(UINT8 *) &(Struct->Type9->SlotCharacteristics2), Option);\r
+      if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0xD)) {\r
+        PRINT_STRUCT_VALUE_H (Struct, Type9, SegmentGroupNum);\r
+        PRINT_STRUCT_VALUE_H (Struct, Type9, BusNum);\r
+        PRINT_STRUCT_VALUE_H (Struct, Type9, DevFuncNum);\r
+      }\r
+      if (AE_SMBIOS_VERSION (0x3, 0x2)) {\r
+        if (Struct->Hdr->Length > 0x11) {\r
+          PRINT_STRUCT_VALUE (Struct, Type9, DataBusWidth);\r
+        }\r
+        if (Struct->Hdr->Length > 0x12) {\r
+          PRINT_STRUCT_VALUE (Struct, Type9, PeerGroupingCount);\r
+\r
+          PeerGroupCount = Struct->Type9->PeerGroupingCount;\r
+          PeerGroupPtr   = Struct->Type9->PeerGroups;\r
+          for (Index = 0; Index < PeerGroupCount; Index++) {\r
+            ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SLOT_PEER_GROUPS), gShellDebug1HiiHandle, Index + 1);\r
+            ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SEGMENT_GROUP_NUM), gShellDebug1HiiHandle, PeerGroupPtr[Index].SegmentGroupNum);\r
+            ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BUS_NUM), gShellDebug1HiiHandle, PeerGroupPtr[Index].BusNum);\r
+            ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DEV_FUNC_NUM), gShellDebug1HiiHandle, PeerGroupPtr[Index].DevFuncNum);\r
+            ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DATA_BUS_WIDTH), gShellDebug1HiiHandle, PeerGroupPtr[Index].DataBusWidth);\r
+          }\r
+        }\r
+      }\r
     }\r
     break;\r
 \r
@@ -755,6 +778,29 @@ SmbiosPrintStructure (
       PRINT_STRUCT_VALUE (Struct, Type17, MaximumVoltage);\r
       PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredVoltage);\r
     }\r
+    if (AE_SMBIOS_VERSION (0x3, 0x2)) {\r
+      if (Struct->Hdr->Length > 0x28) {\r
+        DisplayMemoryDeviceMemoryTechnology (Struct->Type17->MemoryTechnology, Option);\r
+        DisplayMemoryDeviceMemoryOperatingModeCapability (Struct->Type17->MemoryOperatingModeCapability.Uint16, Option);\r
+        PRINT_PENDING_STRING (Struct, Type17, FirwareVersion);\r
+        PRINT_STRUCT_VALUE_H (Struct, Type17, ModuleManufacturerID);\r
+        PRINT_STRUCT_VALUE_H (Struct, Type17, ModuleProductID);\r
+        PRINT_STRUCT_VALUE_H (Struct, Type17, MemorySubsystemControllerManufacturerID);\r
+        PRINT_STRUCT_VALUE_H (Struct, Type17, MemorySubsystemControllerProductID);\r
+      }\r
+      if (Struct->Hdr->Length > 0x34) {\r
+        PRINT_STRUCT_VALUE_H (Struct, Type17, NonVolatileSize);\r
+      }\r
+      if (Struct->Hdr->Length > 0x3C) {\r
+        PRINT_STRUCT_VALUE_H (Struct, Type17, VolatileSize);\r
+      }\r
+      if (Struct->Hdr->Length > 0x44) {\r
+        PRINT_STRUCT_VALUE_H (Struct, Type17, CacheSize);\r
+      }\r
+      if (Struct->Hdr->Length > 0x4C) {\r
+        PRINT_STRUCT_VALUE_H (Struct, Type17, LogicalSize);\r
+      }\r
+    }\r
     break;\r
 \r
   //\r
@@ -1108,6 +1154,10 @@ SmbiosPrintStructure (
   //\r
   case 42:\r
     DisplayMCHostInterfaceType (Struct->Type42->InterfaceType, Option);\r
+    if (AE_SMBIOS_VERSION (0x3, 0x2)) {\r
+      PRINT_STRUCT_VALUE_H (Struct, Type42, InterfaceTypeSpecificDataLength);\r
+      PRINT_BIT_FIELD (Struct, Type42, InterfaceTypeSpecificData, Struct->Type42->InterfaceTypeSpecificDataLength);\r
+    }\r
     break;\r
 \r
   //\r
@@ -2111,6 +2161,10 @@ DisplayProcessorFamily (
     Print (L"Intel Core i3 processor\n");\r
     break;\r
 \r
+  case 0xCF:\r
+    Print (L"Intel Core i9 processor\n");\r
+    break;\r
+\r
   case 0xD2:\r
     Print (L"ViaC7M\n");\r
     break;\r