]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/QueryTable.c
ShellPkg: Update header file including style
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / QueryTable.c
index 64997284b078cdafa36999869f3053863fdf4078..3c561ad8583524fca2d360329200717bf32ff305 100644 (file)
@@ -2,7 +2,8 @@
   Build a table, each item is (Key, Info) pair.\r
   And give a interface of query a string out of a table.\r
 \r
-  Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2005 - 2017, Intel Corporation. All rights reserved.<BR>\r
+  (C) Copyright 2016-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 "QueryTable.h"\r
 #include "PrintInfo.h"\r
 \r
@@ -52,10 +53,88 @@ TABLE_ITEM  SystemWakeupTypeTable[] = {
   }\r
 };\r
 \r
+TABLE_ITEM  BaseBoardFeatureFlagsTable[] = {\r
+  {\r
+    0,\r
+    L" Hosting board"\r
+  },\r
+  {\r
+    1,\r
+    L" Requires at least one daughter board or auxiliary card"\r
+  },\r
+  {\r
+    2,\r
+    L" Removable"\r
+  },\r
+  {\r
+    3,\r
+    L" Replaceable"\r
+  },\r
+  {\r
+    4,\r
+    L" Hot swappable"\r
+  }\r
+};\r
+\r
+TABLE_ITEM  BaseBoardBoardTypeTable[] = {\r
+  {\r
+    0x01,\r
+    L" Unknown"\r
+  },\r
+  {\r
+    0x02,\r
+    L" Other"\r
+  },\r
+  {\r
+    0x03,\r
+    L" Server Blade"\r
+  },\r
+  {\r
+    0x04,\r
+    L" Connectivity Switch"\r
+  },\r
+  {\r
+    0x05,\r
+    L" System Management Module"\r
+  },\r
+  {\r
+    0x06,\r
+    L" Processor Module"\r
+  },\r
+  {\r
+    0x07,\r
+    L" I/O Module"\r
+  },\r
+  {\r
+    0x08,\r
+    L" Memory Module"\r
+  },\r
+  {\r
+    0x09,\r
+    L" Daughter board"\r
+  },\r
+  {\r
+    0x0A,\r
+    L" Motherboard"\r
+  },\r
+  {\r
+    0x0B,\r
+    L" Processor/Memory Module"\r
+  },\r
+  {\r
+    0x0C,\r
+    L" Processor/IO Module"\r
+  },\r
+  {\r
+    0x0D,\r
+    L" Interconnect Board"\r
+  }\r
+};\r
+\r
 TABLE_ITEM  SystemEnclosureTypeTable[] = {\r
   {\r
     0x01,\r
-    L"  None"\r
+    L"  Other"\r
   },\r
   {\r
     0x02,\r
@@ -87,7 +166,7 @@ TABLE_ITEM  SystemEnclosureTypeTable[] = {
   },\r
   {\r
     0x09,\r
-    L"  LapTop"\r
+    L"  Laptop"\r
   },\r
   {\r
     0x0A,\r
@@ -169,6 +248,34 @@ TABLE_ITEM  SystemEnclosureTypeTable[] = {
     0x1D,\r
     L"  Blade Enclosure"\r
   },\r
+  {\r
+    0x1E,\r
+    L"  Tablet"\r
+  },\r
+  {\r
+    0x1F,\r
+    L"  Convertible"\r
+  },\r
+  {\r
+    0x20,\r
+    L"  Detachable"\r
+  },\r
+  {\r
+    0x21,\r
+    L"  IoT Gateway"\r
+  },\r
+  {\r
+    0x22,\r
+    L"  Embedded PC"\r
+  },\r
+  {\r
+    0x23,\r
+    L"  Mini PC"\r
+  },\r
+  {\r
+    0x24,\r
+    L"  Stick PC"\r
+  },\r
 };\r
 \r
 TABLE_ITEM  SystemEnclosureStatusTable[] = {\r
@@ -348,9 +455,165 @@ TABLE_ITEM  ProcessorUpgradeTable[] = {
   {\r
     0x19,\r
     L"Socket LGA1366"\r
-  }\\r
+  },\r
+  {\r
+    0x1A,\r
+    L"Socket G34"\r
+  },\r
+  {\r
+    0x1B,\r
+    L"Socket AM3"\r
+  },\r
+  {\r
+    0x1C,\r
+    L"Socket C32"\r
+  },\r
+  {\r
+    0x1D,\r
+    L"Socket LGA1156"\r
+  },\r
+  {\r
+    0x1E,\r
+    L"Socket LGA1567"\r
+  },\r
+  {\r
+    0x1F,\r
+    L"Socket PGA988A"\r
+  },\r
+  {\r
+    0x20,\r
+    L"Socket BGA1288"\r
+  },\r
+  {\r
+    0x21,\r
+    L"Socket rPGA988B"\r
+  },\r
+  {\r
+    0x22,\r
+    L"Socket BGA1023"\r
+  },\r
+  {\r
+    0x23,\r
+    L"Socket BGA1224"\r
+  },\r
+  {\r
+    0x24,\r
+    L"Socket LGA1155"\r
+  },\r
+  {\r
+    0x25,\r
+    L"Socket LGA1356"\r
+  },\r
+  {\r
+    0x26,\r
+    L"Socket LGA2011"\r
+  },\r
+  {\r
+    0x27,\r
+    L"Socket FS1"\r
+  },\r
+  {\r
+    0x28,\r
+    L"Socket FS2"\r
+  },\r
+  {\r
+    0x29,\r
+    L"Socket FM1"\r
+  },\r
+  {\r
+    0x2A,\r
+    L"Socket FM2"\r
+  },\r
+  {\r
+    0x2B,\r
+    L"Socket LGA2011-3"\r
+  },\r
+  {\r
+    0x2C,\r
+    L"Socket LGA1356-3"\r
+  },\r
+  {\r
+    0x2D,\r
+    L"Socket LGA1150"\r
+  },\r
+  {\r
+    0x2E,\r
+    L"Socket BGA1168"\r
+  },\r
+  {\r
+    0x2F,\r
+    L"Socket BGA1234"\r
+  },\r
+  {\r
+    0x30,\r
+    L"Socket BGA1364"\r
+  },\r
+  {\r
+    0x31,\r
+    L"Socket AM4"\r
+  },\r
+  {\r
+    0x32,\r
+    L"Socket LGA1151"\r
+  },\r
+  {\r
+    0x33,\r
+    L"Socket BGA1356"\r
+  },\r
+  {\r
+    0x34,\r
+    L"Socket BGA1440"\r
+  },\r
+  {\r
+    0x35,\r
+    L"Socket BGA1515"\r
+  },\r
+  {\r
+    0x36,\r
+    L"Socket LGA3647-1"\r
+  },\r
+  {\r
+    0x37,\r
+    L"Socket SP3"\r
+  },\r
+  {\r
+    0x38,\r
+    L"Socket SP3r2"\r
+  }\r
 };\r
 \r
+TABLE_ITEM  ProcessorCharacteristicsTable[] = {\r
+  {\r
+    1,\r
+    L" Unknown"\r
+  },\r
+  {\r
+    2,\r
+    L" 64-bit Capable"\r
+  },\r
+  {\r
+    3,\r
+    L" Multi-Core"\r
+  },\r
+  {\r
+    4,\r
+    L" Hardware Thread"\r
+  },\r
+  {\r
+    5,\r
+    L" Execute Protection"\r
+  },\r
+  {\r
+    6,\r
+    L" Enhanced Virtualization"\r
+  },\r
+  {\r
+    7,\r
+    L" Power/Performance Control"\r
+  }\r
+};\r
+\r
+\r
 TABLE_ITEM  McErrorDetectMethodTable[] = {\r
   {\r
     0x01,\r
@@ -599,10 +862,6 @@ TABLE_ITEM  CacheErrCorrectingTypeTable[] = {
   {\r
     0x06,\r
     L"Multi-bit ECC"\r
-  },\r
-  {\r
-    0x07,\r
-    L"Sixteen Way Interleave"\r
   }\r
 };\r
 \r
@@ -681,6 +940,10 @@ TABLE_ITEM  CacheAssociativityTable[] = {
   {\r
     0x0D,\r
     L"64-way Set-Associative"\r
+  },\r
+  {\r
+    0x0E,\r
+    L"20-way Set-Associative"\r
   }\r
 };\r
 \r
@@ -1075,6 +1338,74 @@ TABLE_ITEM  SystemSlotTypeTable[] = {
     0x12,\r
     L"PCI-X"\r
   },\r
+  {\r
+    0x13,\r
+    L"AGP 8X"\r
+  },\r
+  {\r
+    0x14,\r
+    L"M.2 Socket 1-DP (Mechanical Key A)"\r
+  },\r
+  {\r
+    0x15,\r
+    L"M.2 Socket 1-SD (Mechanical Key E)"\r
+  },\r
+  {\r
+    0x16,\r
+    L"M.2 Socket 2 (Mechanical Key B)"\r
+  },\r
+  {\r
+    0x17,\r
+    L"M.2 Socket 3 (Mechanical Key M)"\r
+  },\r
+  {\r
+    0x18,\r
+    L"MXM Type I"\r
+  },\r
+  {\r
+    0x19,\r
+    L"MXM Type II"\r
+  },\r
+  {\r
+    0x1A,\r
+    L"MXM Type III (standard connector)"\r
+  },\r
+  {\r
+    0x1B,\r
+    L"MXM Type III (HE connector)"\r
+  },\r
+  {\r
+    0x1C,\r
+    L"MXM Type IV"\r
+  },\r
+  {\r
+    0x1D,\r
+    L"MXM 3.0 Type A"\r
+  },\r
+  {\r
+    0x1E,\r
+    L"MXM 3.0 Type B"\r
+  },\r
+  {\r
+    0x1F,\r
+    L"PCI Express Gen 2 SFF-8639"\r
+  },\r
+  {\r
+    0x20,\r
+    L"PCI Express Gen 3 SFF-8639"\r
+  },\r
+  {\r
+    0x21,\r
+    L"PCI Express Mini 52-pin (CEM spec. 2.0) with bottom-side keep-outs"\r
+  },\r
+  {\r
+    0x22,\r
+    L"PCI Express Mini 52-pin (CEM spec. 2.0) without bottom-side keep-outs"\r
+  },\r
+  {\r
+    0x23,\r
+    L"PCI Express Mini 76-pin (CEM spec. 2.0) Corresponds to Display-Mini card"\r
+  },\r
   {\r
     0xA0,\r
     L"PC-98/C20 "\r
@@ -1121,7 +1452,7 @@ TABLE_ITEM  SystemSlotTypeTable[] = {
   },\r
   {\r
     0xAB,\r
-    L"PCI Express Gen 26"\r
+    L"PCI Express Gen 2"\r
   },\r
   {\r
     0xAC,\r
@@ -1142,6 +1473,30 @@ TABLE_ITEM  SystemSlotTypeTable[] = {
   {\r
     0xB0,\r
     L"PCI Express Gen 2 X16"\r
+  },\r
+  {\r
+    0xB1,\r
+    L"PCI Express Gen 3"\r
+  },\r
+  {\r
+    0xB2,\r
+    L"PCI Express Gen 3 X1"\r
+  },\r
+  {\r
+    0xB3,\r
+    L"PCI Express Gen 3 X2"\r
+  },\r
+  {\r
+    0xB4,\r
+    L"PCI Express Gen 3 X4"\r
+  },\r
+  {\r
+    0xB5,\r
+    L"PCI Express Gen 3 X8"\r
+  },\r
+  {\r
+    0xB6,\r
+    L"PCI Express Gen 3 X16"\r
   }\r
 };\r
 \r
@@ -1174,6 +1529,34 @@ TABLE_ITEM  SystemSlotDataBusWidthTable[] = {
     0x07,\r
     L" 128 bit"\r
   },\r
+  {\r
+    0x08,\r
+    L" 1x or x1"\r
+  },\r
+  {\r
+    0x09,\r
+    L" 2x or x2"\r
+  },\r
+  {\r
+    0x0A,\r
+    L" 4x or x4"\r
+  },\r
+  {\r
+    0x0B,\r
+    L" 8x or x8"\r
+  },\r
+  {\r
+    0x0C,\r
+    L" 12x or x12"\r
+  },\r
+  {\r
+    0x0D,\r
+    L" 16x or x16"\r
+  },\r
+  {\r
+    0x0E,\r
+    L" 32x or x32"\r
+  }\r
 };\r
 \r
 TABLE_ITEM  SystemSlotCurrentUsageTable[] = {\r
@@ -2065,6 +2448,26 @@ TABLE_ITEM  MemoryDeviceTypeTable[] = {
   {\r
     0x19,\r
     L"  FBD2"\r
+  },\r
+  {\r
+    0x1A,\r
+    L"  DDR4"\r
+  },\r
+  {\r
+    0x1B,\r
+    L"  LPDDR"\r
+  },\r
+  {\r
+    0x1C,\r
+    L"  LPDDR2"\r
+  },\r
+  {\r
+    0x1D,\r
+    L"  LPDDR3"\r
+  },\r
+  {\r
+    0x1E,\r
+    L"  LPDDR4"\r
   }\r
 };\r
 \r
@@ -2117,6 +2520,14 @@ TABLE_ITEM  MemoryDeviceTypeDetailTable[] = {
     12,\r
     L" Non-volatile"\r
   },\r
+  {\r
+    13,\r
+    L" Registered(Buffered)"\r
+  },\r
+  {\r
+    14,\r
+    L" Unbuffered(Unregistered)"\r
+  }\r
 };\r
 \r
 TABLE_ITEM  MemoryErrorTypeTable[] = {\r
@@ -2472,11 +2883,11 @@ TABLE_ITEM  CoolingDeviceTypeTable[] = {
     L" Integrated Refrigeration "\r
   },\r
   {\r
-    0x0A,\r
+    0x10,\r
     L" Active Cooling "\r
   },\r
   {\r
-    0x0B,\r
+    0x11,\r
     L" Passive Cooling "\r
   },\r
 };\r
@@ -2749,6 +3160,22 @@ TABLE_ITEM  IPMIDIBMCInterfaceTypeTable[] = {
   },\r
 };\r
 \r
+TABLE_ITEM  MCHostInterfaceTypeTable[] = {\r
+  {\r
+    0x3F00,\r
+    L" MCTP Host Interface "\r
+  },\r
+  {\r
+    0x40,\r
+    L" Network Host Interface "\r
+  },\r
+  {\r
+    0xF0,\r
+    L" OEM defined "\r
+  },\r
+};\r
+\r
+\r
 TABLE_ITEM  StructureTypeInfoTable[] = {\r
   {\r
     0,\r
@@ -2910,6 +3337,22 @@ TABLE_ITEM  StructureTypeInfoTable[] = {
     39,\r
     L" System Power Supply"\r
   },\r
+  {\r
+    40,\r
+    L" Additional Information"\r
+  },\r
+  {\r
+    41,\r
+    L" Onboard Devices Extended Information"\r
+  },\r
+  {\r
+    42,\r
+    L" Management Controller Host Interface"\r
+  },\r
+  {\r
+    43,\r
+    L" TPM Device"\r
+  },\r
   {\r
     0x7E,\r
     L" Inactive"\r
@@ -2964,25 +3407,20 @@ QueryTable (
   for (Index = 0; Index < Number; Index++) {\r
     High  = (UINT8) (Table[Index].Key >> 8);\r
     Low   = (UINT8) (Table[Index].Key & 0x00FF);\r
+\r
     //\r
     // Check if Key is in the range\r
+    // or if Key == Value in the table\r
     //\r
-    if (High > Low && Key >= Low && Key <= High) {\r
-      StrnCpy (Info, Table[Index].Info, InfoLen-1);\r
-      StrnCat (Info, L"\n", InfoLen - StrLen(Info));\r
-      return Key;\r
-    }\r
-    //\r
-    // Check if Key == Value in the table\r
-    //\r
-    if (Table[Index].Key == Key) {\r
-      StrnCpy (Info, Table[Index].Info, InfoLen-1);\r
-      StrnCat (Info, L"\n", InfoLen - StrLen(Info));\r
+    if ((High > Low && Key >= Low && Key <= High) \r
+      || (Table[Index].Key == Key)) {\r
+      StrnCpyS (Info, InfoLen, Table[Index].Info, InfoLen - 1);\r
+      StrnCatS (Info, InfoLen, L"\n", InfoLen - 1 - StrLen(Info));\r
       return Key;\r
     }\r
   }\r
 \r
-  StrnCpy (Info, L"Undefined Value\n", InfoLen);\r
+  StrCpyS (Info, InfoLen, L"Undefined Value\n");\r
   return QUERY_TABLE_UNFOUND;\r
 }\r
 \r
@@ -3011,19 +3449,24 @@ PrintBitsInfo (
 \r
   UINTN   Index;\r
   UINT32  Value;\r
-  BOOLEAN NoInfo;\r
+  BOOLEAN FirstInfo;\r
 \r
-  NoInfo  = TRUE;\r
+  FirstInfo = TRUE;\r
   Value   = Bits;\r
   //\r
   // query the table and print information\r
   //\r
   for (Index = 0; Index < Number; Index++) {\r
     if (BIT (Value, Table[Index].Key) != 0) {\r
+      if (!FirstInfo) {\r
+        //\r
+        // If it is not first info, print the separator first.\r
+        //\r
+        Print (L" | ");\r
+      }\r
       Print (Table[Index].Info);\r
-      Print (L" | ");\r
 \r
-      NoInfo = FALSE;\r
+      FirstInfo = FALSE;\r
       //\r
       // clear the bit, for reserved bits test\r
       //\r
@@ -3031,7 +3474,10 @@ PrintBitsInfo (
     }\r
   }\r
 \r
-  if (NoInfo) {\r
+  //\r
+  // There is no any info if FirstInfo is still TRUE.\r
+  //\r
+  if (FirstInfo) {\r
     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_NO_INFO), gShellDebug1HiiHandle);\r
   }\r
 \r
@@ -3086,6 +3532,40 @@ DisplaySystemWakeupType (
   PRINT_TABLE_ITEM (SystemWakeupTypeTable, Type);\r
 }\r
 \r
+/**\r
+  Display Base Board (Type 2) Feature Flags.\r
+\r
+  @param[in] FeatureFlags   The key of the structure.\r
+  @param[in] Option         The optional information.\r
+**/\r
+VOID\r
+DisplayBaseBoardFeatureFlags (\r
+  IN UINT8 FeatureFlags,\r
+  IN UINT8 Option\r
+  )\r
+{\r
+  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BASE_BOARD_FEATURE_FLAGS), gShellDebug1HiiHandle);\r
+  PRINT_INFO_OPTION (FeatureFlags, Option);\r
+  PRINT_BITS_INFO (BaseBoardFeatureFlagsTable, FeatureFlags);\r
+}\r
+\r
+/**\r
+  Display Base Board (Type 2) Board Type.\r
+\r
+  @param[in] Type           The key of the structure.\r
+  @param[in] Option         The optional information.\r
+**/\r
+VOID\r
+DisplayBaseBoardBoardType(\r
+  IN UINT8 Type,\r
+  IN UINT8 Option\r
+  )\r
+{\r
+  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BASE_BOARD_BOARD_TYPE), gShellDebug1HiiHandle);\r
+  PRINT_INFO_OPTION (Type, Option);\r
+  PRINT_TABLE_ITEM (BaseBoardBoardTypeTable, Type);\r
+}\r
+\r
 /**\r
   Display System Enclosure (Type 3) Enclosure Type.\r
 \r
@@ -3178,6 +3658,23 @@ DisplayProcessorUpgrade (
   PRINT_TABLE_ITEM (ProcessorUpgradeTable, Upgrade);\r
 }\r
 \r
+/**\r
+  Display Processor Information (Type 4) Characteristics.\r
+\r
+  @param[in] Type           The key of the structure.\r
+  @param[in] Option         The optional information.\r
+**/\r
+VOID\r
+DisplayProcessorCharacteristics (\r
+  IN UINT16 Type,\r
+  IN UINT8 Option\r
+  )\r
+{\r
+  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PROC_CHARACTERISTICS), gShellDebug1HiiHandle);\r
+  PRINT_INFO_OPTION (Type, Option);\r
+  PRINT_BITS_INFO (ProcessorCharacteristicsTable, Type);\r
+}\r
+\r
 /**\r
   Display Memory Controller Information (Type 5) method.\r
 \r
@@ -3652,7 +4149,7 @@ DisplayPMAUse (
   IN UINT8 Option\r
   )\r
 {\r
-  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_LOCATION), gShellDebug1HiiHandle);\r
+  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_USE), gShellDebug1HiiHandle);\r
   PRINT_INFO_OPTION (Use, Option);\r
   PRINT_TABLE_ITEM (PMAUseTable, Use);\r
 }\r
@@ -3988,7 +4485,7 @@ DisplayECPLoc (
 }\r
 \r
 /**\r
-  Display Management Device (Type 34) information.\r
+  Display Management Device (Type 34) Type.\r
 \r
   @param[in] Key      The key of the structure.\r
   @param[in] Option   The optional information.\r
@@ -4004,6 +4501,23 @@ DisplayMDType (
   PRINT_TABLE_ITEM (MDTypeTable, Key);\r
 }\r
 \r
+/**\r
+  Display Management Device (Type 34) Address Type.\r
+\r
+  @param[in] Key      The key of the structure.\r
+  @param[in] Option   The optional information.\r
+**/\r
+VOID\r
+DisplayMDAddressType (\r
+  IN UINT8 Key,\r
+  IN UINT8 Option\r
+  )\r
+{\r
+  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MANAGEMENT_DEV_ADDR_TYPE), gShellDebug1HiiHandle);\r
+  PRINT_INFO_OPTION (Key, Option);\r
+  PRINT_TABLE_ITEM (MDAddressTypeTable, Key);\r
+}\r
+\r
 /**\r
   Display Memory Channel (Type 37) information.\r
 \r
@@ -4038,6 +4552,23 @@ DisplayIPMIDIBMCInterfaceType (
   PRINT_TABLE_ITEM (IPMIDIBMCInterfaceTypeTable, Key);\r
 }\r
 \r
+/**\r
+  Display Management Controller Host Interface (Type 42) information.\r
+\r
+  @param[in] Key      The key of the structure.\r
+  @param[in] Option   The optional information.\r
+**/\r
+VOID\r
+DisplayMCHostInterfaceType (\r
+  IN UINT8 Key,\r
+  IN UINT8 Option\r
+  )\r
+{\r
+  ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MC_HOST_INTERFACE_TYPE), gShellDebug1HiiHandle);\r
+  PRINT_INFO_OPTION (Key, Option);\r
+  PRINT_TABLE_ITEM (MCHostInterfaceTypeTable, Key);\r
+}\r
+\r
 /**\r
   Display the structure type information.\r
 \r