]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
ShellPkg/SmbiosView: Update SmbiosView for SMBIOS3.2.0
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / SmbiosView / PrintInfo.c
CommitLineData
5d73d92f 1/** @file\r
2 Module for clarifying the content of the smbios structure element information.\r
3\r
ba0014b9
LG
4 Copyright (c) 2005 - 2018, Intel Corporation. All rights reserved.<BR>\r
5 (C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>\r
12233c19 6 (C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>\r
5d73d92f 7 This program and the accompanying materials\r
8 are licensed and made available under the terms and conditions of the BSD License\r
9 which accompanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11\r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/\r
16\r
8a765da2 17#include "UefiShellDebug1CommandsLib.h"\r
5d73d92f 18#include "PrintInfo.h"\r
19#include "LibSmbiosView.h"\r
20#include "QueryTable.h"\r
21#include "EventLogInfo.h"\r
22\r
23\r
24//\r
25// Get the certain bit of 'value'\r
26//\r
27#define BIT(value, bit) ((value) & ((UINT64) 1) << (bit))\r
28\r
187cb3dd
SZ
29//\r
30// Check if above or equal to version\r
31//\r
32#define AE_SMBIOS_VERSION(MajorVersion, MinorVersion) \\r
33 (SmbiosMajorVersion > (MajorVersion) || (SmbiosMajorVersion == (MajorVersion) && SmbiosMinorVersion >= (MinorVersion)))\r
34\r
5d73d92f 35//\r
36//////////////////////////////////////////////////////////\r
37// Macros of print structure element, simplify coding.\r
38//\r
a1d4bfcc 39#define PRINT_PENDING_STRING(pStruct, type, element) \\r
5d73d92f 40 do { \\r
187cb3dd
SZ
41 CHAR8 *StringBuf; \\r
42 StringBuf = LibGetSmbiosString ((pStruct), (pStruct->type->element)); \\r
5d73d92f 43 ShellPrintEx(-1,-1,L"%a",#element); \\r
187cb3dd 44 ShellPrintEx(-1,-1,L": %a\n", (StringBuf != NULL) ? StringBuf: ""); \\r
5d73d92f 45 } while (0);\r
46\r
a1d4bfcc 47#define PRINT_SMBIOS_STRING(pStruct, stringnumber, element) \\r
5d73d92f 48 do { \\r
187cb3dd
SZ
49 CHAR8 *StringBuf; \\r
50 StringBuf = LibGetSmbiosString ((pStruct), (stringnumber)); \\r
5d73d92f 51 ShellPrintEx(-1,-1,L"%a",#element); \\r
187cb3dd 52 ShellPrintEx(-1,-1,L": %a\n", (StringBuf != NULL) ? StringBuf: ""); \\r
5d73d92f 53 } while (0);\r
54\r
a1d4bfcc 55#define PRINT_STRUCT_VALUE(pStruct, type, element) \\r
5d73d92f 56 do { \\r
57 ShellPrintEx(-1,-1,L"%a",#element); \\r
58 ShellPrintEx(-1,-1,L": %d\n", (pStruct->type->element)); \\r
59 } while (0);\r
60\r
a1d4bfcc 61#define PRINT_STRUCT_VALUE_H(pStruct, type, element) \\r
5d73d92f 62 do { \\r
63 ShellPrintEx(-1,-1,L"%a",#element); \\r
64 ShellPrintEx(-1,-1,L": 0x%x\n", (pStruct->type->element)); \\r
65 } while (0);\r
66\r
4641e700 67#define PRINT_STRUCT_VALUE_LH(pStruct, type, element) \\r
68 do { \\r
69 ShellPrintEx(-1,-1,L"%a",#element); \\r
70 ShellPrintEx(-1,-1,L": 0x%lx\n", (pStruct->type->element)); \\r
71 } while (0);\r
72\r
a1d4bfcc 73#define PRINT_BIT_FIELD(pStruct, type, element, size) \\r
5d73d92f 74 do { \\r
75 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DUMP), gShellDebug1HiiHandle); \\r
76 ShellPrintEx(-1,-1,L"%a",#element); \\r
77 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SIZE), gShellDebug1HiiHandle, size); \\r
78 DumpHex (0, 0, size, &(pStruct->type->element)); \\r
79 } while (0);\r
80\r
a1d4bfcc 81#define PRINT_SMBIOS_BIT_FIELD(pStruct, startaddress, element, size) \\r
5d73d92f 82 do { \\r
83 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DUMP), gShellDebug1HiiHandle); \\r
84 ShellPrintEx(-1,-1,L"%a",#element); \\r
85 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SIZE), gShellDebug1HiiHandle, size); \\r
86 DumpHex (0, 0, size, startaddress); \\r
87 } while (0);\r
88\r
89//\r
90/////////////////////////////////////////\r
91//\r
a1d4bfcc 92\r
93/**\r
94 Copy Length of Src buffer to Dest buffer,\r
95 add a NULL termination to Dest buffer.\r
96\r
4ff7e37b
ED
97 @param[in, out] Dest Destination buffer head.\r
98 @param[in] Src Source buffer head.\r
99 @param[in] Length Length of buffer to be copied.\r
a1d4bfcc 100**/\r
5d73d92f 101VOID\r
102MemToString (\r
103 IN OUT VOID *Dest,\r
104 IN VOID *Src,\r
105 IN UINTN Length\r
106 )\r
5d73d92f 107{\r
108 UINT8 *SrcBuffer;\r
109 UINT8 *DestBuffer;\r
110 SrcBuffer = (UINT8 *) Src;\r
111 DestBuffer = (UINT8 *) Dest;\r
112 //\r
113 // copy byte by byte\r
114 //\r
115 while ((Length--)!=0) {\r
116 *DestBuffer++ = *SrcBuffer++;\r
117 }\r
118 //\r
119 // append a NULL terminator\r
120 //\r
121 *DestBuffer = '\0';\r
122}\r
123\r
124//\r
125//////////////////////////////////////////////\r
126//\r
127// Functions below is to show the information\r
128//\r
a1d4bfcc 129\r
130/**\r
131 Print the info of EPS(Entry Point Structure).\r
132\r
133 @param[in] SmbiosTable Pointer to the SMBIOS table entry point.\r
134 @param[in] Option Display option.\r
135**/\r
5d73d92f 136VOID\r
137SmbiosPrintEPSInfo (\r
187cb3dd
SZ
138 IN SMBIOS_TABLE_ENTRY_POINT *SmbiosTable,\r
139 IN UINT8 Option\r
5d73d92f 140 )\r
5d73d92f 141{\r
142 UINT8 Anchor[5];\r
143 UINT8 InAnchor[6];\r
144\r
145 if (SmbiosTable == NULL) {\r
146 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SMBIOSTABLE_NULL), gShellDebug1HiiHandle);\r
147 return ;\r
148 }\r
149\r
150 if (Option == SHOW_NONE) {\r
151 return ;\r
152 }\r
153\r
154 if (Option >= SHOW_NORMAL) {\r
155 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_SIGN), gShellDebug1HiiHandle);\r
156 MemToString (Anchor, SmbiosTable->AnchorString, 4);\r
157 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ANCHOR_STR), gShellDebug1HiiHandle, Anchor);\r
158 ShellPrintHiiEx(-1,-1,NULL,\r
159 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EPS_CHECKSUM),\r
160 gShellDebug1HiiHandle,\r
161 SmbiosTable->EntryPointStructureChecksum\r
162 );\r
163 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_LEN), gShellDebug1HiiHandle, SmbiosTable->EntryPointLength);\r
164 ShellPrintHiiEx(-1,-1,NULL,\r
165 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VERSION),\r
166 gShellDebug1HiiHandle,\r
167 SmbiosTable->MajorVersion,\r
168 SmbiosTable->MinorVersion\r
169 );\r
170 ShellPrintHiiEx(-1,-1,NULL,\r
171 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NUMBER_STRUCT),\r
172 gShellDebug1HiiHandle,\r
173 SmbiosTable->NumberOfSmbiosStructures\r
174 );\r
175 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MAX_STRUCT_SIZE), gShellDebug1HiiHandle, SmbiosTable->MaxStructureSize);\r
176 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_ADDR), gShellDebug1HiiHandle, SmbiosTable->TableAddress);\r
177 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_LENGTH), gShellDebug1HiiHandle, SmbiosTable->TableLength);\r
178\r
179 }\r
180 //\r
181 // If SHOW_ALL, also print followings.\r
182 //\r
183 if (Option >= SHOW_DETAIL) {\r
184 ShellPrintHiiEx(-1,-1,NULL,\r
185 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_REVISION),\r
186 gShellDebug1HiiHandle,\r
187 SmbiosTable->EntryPointRevision\r
188 );\r
189 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BCD_REVISION), gShellDebug1HiiHandle, SmbiosTable->SmbiosBcdRevision);\r
190 //\r
191 // Since raw data is not string, add a NULL terminater.\r
192 //\r
193 MemToString (InAnchor, SmbiosTable->IntermediateAnchorString, 5);\r
194 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTER_ACHOR), gShellDebug1HiiHandle, InAnchor);\r
195 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTER_CHECKSUM), gShellDebug1HiiHandle, SmbiosTable->IntermediateChecksum);\r
196 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FORMATTED_AREA), gShellDebug1HiiHandle);\r
197 DumpHex (2, 0, 5, SmbiosTable->FormattedArea);\r
198 }\r
199\r
ec8a502e
EL
200 Print (L"\n");\r
201}\r
202\r
203/**\r
204 Print the info of 64-bit EPS(Entry Point Structure).\r
205\r
206 @param[in] SmbiosTable Pointer to the SMBIOS table entry point.\r
207 @param[in] Option Display option.\r
208**/\r
209VOID\r
210Smbios64BitPrintEPSInfo (\r
211 IN SMBIOS_TABLE_3_0_ENTRY_POINT *SmbiosTable,\r
212 IN UINT8 Option\r
213 )\r
214{\r
215 UINT8 Anchor[5];\r
216\r
217 if (SmbiosTable == NULL) {\r
218 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SMBIOSTABLE_NULL), gShellDebug1HiiHandle);\r
219 return ;\r
220 }\r
221\r
222 if (Option == SHOW_NONE) {\r
223 return ;\r
224 }\r
225\r
226 if (Option >= SHOW_NORMAL) {\r
227 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_64_BIT_ENTRY_POINT_SIGN), gShellDebug1HiiHandle);\r
228\r
229 MemToString (Anchor, SmbiosTable->AnchorString, 5);\r
230 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ANCHOR_STR), gShellDebug1HiiHandle, Anchor);\r
231\r
232 ShellPrintHiiEx(-1,-1,NULL,\r
233 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EPS_CHECKSUM),\r
234 gShellDebug1HiiHandle,\r
235 SmbiosTable->EntryPointStructureChecksum\r
236 );\r
237\r
238 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_LEN), gShellDebug1HiiHandle, SmbiosTable->EntryPointLength);\r
239\r
240 ShellPrintHiiEx(-1,-1,NULL,\r
241 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VERSION),\r
242 gShellDebug1HiiHandle,\r
243 SmbiosTable->MajorVersion,\r
244 SmbiosTable->MinorVersion\r
245 );\r
246\r
247 ShellPrintHiiEx(-1,-1,NULL,\r
248 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DOCREV),\r
249 gShellDebug1HiiHandle,\r
250 SmbiosTable->DocRev\r
251 );\r
252\r
253 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_MAX_SIZE), gShellDebug1HiiHandle, SmbiosTable->TableMaximumSize);\r
254\r
255 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TABLE_ADDR), gShellDebug1HiiHandle, SmbiosTable->TableAddress);\r
256\r
257 }\r
258 //\r
259 // If SHOW_ALL, also print followings.\r
260 //\r
261 if (Option >= SHOW_DETAIL) {\r
262 ShellPrintHiiEx(-1,-1,NULL,\r
263 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENTRY_POINT_REVISION),\r
264 gShellDebug1HiiHandle,\r
265 SmbiosTable->EntryPointRevision\r
266 );\r
267 }\r
268\r
5d73d92f 269 Print (L"\n");\r
270}\r
271\r
a1d4bfcc 272/**\r
273 This function print the content of the structure pointed by Struct.\r
274\r
275 @param[in] Struct Point to the structure to be printed.\r
276 @param[in] Option Print option of information detail.\r
277\r
278 @retval EFI_SUCCESS Successfully Printing this function.\r
279 @retval EFI_INVALID_PARAMETER Invalid Structure.\r
280 @retval EFI_UNSUPPORTED Unsupported.\r
281**/\r
5d73d92f 282EFI_STATUS\r
283SmbiosPrintStructure (\r
a1d4bfcc 284 IN SMBIOS_STRUCTURE_POINTER *Struct,\r
5d73d92f 285 IN UINT8 Option\r
286 )\r
5d73d92f 287{\r
288 UINT8 Index;\r
289 UINT8 *Buffer;\r
290\r
a1d4bfcc 291 if (Struct == NULL) {\r
5d73d92f 292 return EFI_INVALID_PARAMETER;\r
293 }\r
294\r
295 if (Option == SHOW_NONE) {\r
296 return EFI_SUCCESS;\r
297 }\r
187cb3dd
SZ
298\r
299 Buffer = (UINT8 *) (UINTN) (Struct->Raw);\r
300\r
5d73d92f 301 //\r
302 // Display structure header\r
303 //\r
a1d4bfcc 304 DisplayStructureTypeInfo (Struct->Hdr->Type, SHOW_DETAIL);\r
305 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FORMAT_PART_LEN), gShellDebug1HiiHandle, Struct->Hdr->Length);\r
306 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STRUCT_HANDLE), gShellDebug1HiiHandle, Struct->Hdr->Handle);\r
5d73d92f 307\r
308 if (Option == SHOW_OUTLINE) {\r
309 return EFI_SUCCESS;\r
310 }\r
311\r
a1d4bfcc 312 switch (Struct->Hdr->Type) {\r
5d73d92f 313 //\r
187cb3dd 314 // BIOS Information (Type 0)\r
5d73d92f 315 //\r
316 case 0:\r
a1d4bfcc 317 PRINT_PENDING_STRING (Struct, Type0, Vendor);\r
318 PRINT_PENDING_STRING (Struct, Type0, BiosVersion);\r
fed709de 319 PRINT_STRUCT_VALUE_H (Struct, Type0, BiosSegment);\r
a1d4bfcc 320 PRINT_PENDING_STRING (Struct, Type0, BiosReleaseDate);\r
321 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE), gShellDebug1HiiHandle, 64 * (Struct->Type0->BiosSize + 1));\r
5d73d92f 322\r
0b6cb335 323 DisplayBiosCharacteristics (ReadUnaligned64 ((UINT64 *) (UINTN) &(Struct->Type0->BiosCharacteristics)), Option);\r
5d73d92f 324\r
187cb3dd
SZ
325 if (Struct->Hdr->Length > 0x12) {\r
326 DisplayBiosCharacteristicsExt1 (Struct->Type0->BIOSCharacteristicsExtensionBytes[0], Option);\r
327 }\r
328 if (Struct->Hdr->Length > 0x13) {\r
329 DisplayBiosCharacteristicsExt2 (Struct->Type0->BIOSCharacteristicsExtensionBytes[1], Option);\r
330 }\r
5d73d92f 331\r
187cb3dd
SZ
332 if (AE_SMBIOS_VERSION (0x2, 0x4) && (Struct->Hdr->Length > 0x14)) {\r
333 PRINT_STRUCT_VALUE (Struct, Type0, SystemBiosMajorRelease);\r
334 PRINT_STRUCT_VALUE (Struct, Type0, SystemBiosMinorRelease);\r
335 PRINT_STRUCT_VALUE (Struct, Type0, EmbeddedControllerFirmwareMajorRelease);\r
336 PRINT_STRUCT_VALUE (Struct, Type0, EmbeddedControllerFirmwareMinorRelease);\r
5d73d92f 337 }\r
44175ee7
SZ
338 if (AE_SMBIOS_VERSION (0x3, 0x1) && (Struct->Hdr->Length > 0x18)) {\r
339 ShellPrintHiiEx (\r
340 -1,\r
341 -1,\r
342 NULL,\r
343 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EXTENDED_BIOS_SIZE),\r
344 gShellDebug1HiiHandle,\r
345 Struct->Type0->ExtendedBiosSize.Size,\r
346 (Struct->Type0->ExtendedBiosSize.Unit == 0x0) ? L"MB": L"GB"\r
347 );\r
348 }\r
5d73d92f 349 break;\r
350\r
351 //\r
352 // System Information (Type 1)\r
353 //\r
354 case 1:\r
a1d4bfcc 355 PRINT_PENDING_STRING (Struct, Type1, Manufacturer);\r
356 PRINT_PENDING_STRING (Struct, Type1, ProductName);\r
357 PRINT_PENDING_STRING (Struct, Type1, Version);\r
358 PRINT_PENDING_STRING (Struct, Type1, SerialNumber);\r
359 PRINT_BIT_FIELD (Struct, Type1, Uuid, 16);\r
360 DisplaySystemWakeupType (Struct->Type1->WakeUpType, Option);\r
187cb3dd
SZ
361 if (AE_SMBIOS_VERSION (0x2, 0x4) && (Struct->Hdr->Length > 0x19)) {\r
362 PRINT_PENDING_STRING (Struct, Type1, SKUNumber);\r
363 PRINT_PENDING_STRING (Struct, Type1, Family);\r
364 }\r
365\r
5d73d92f 366 break;\r
367\r
187cb3dd
SZ
368 //\r
369 // Baseboard Information (Type 2)\r
370 //\r
5d73d92f 371 case 2:\r
a1d4bfcc 372 PRINT_PENDING_STRING (Struct, Type2, Manufacturer);\r
373 PRINT_PENDING_STRING (Struct, Type2, ProductName);\r
374 PRINT_PENDING_STRING (Struct, Type2, Version);\r
375 PRINT_PENDING_STRING (Struct, Type2, SerialNumber);\r
187cb3dd
SZ
376 if (Struct->Hdr->Length > 0x8) {\r
377 PRINT_PENDING_STRING (Struct, Type2, AssetTag);\r
378 DisplayBaseBoardFeatureFlags (*(UINT8 *) &Struct->Type2->FeatureFlag, Option);\r
379 PRINT_PENDING_STRING (Struct, Type2, LocationInChassis);\r
380 PRINT_STRUCT_VALUE_H (Struct, Type2, ChassisHandle);\r
381 DisplayBaseBoardBoardType (Struct->Type2->BoardType, Option);\r
382 }\r
5d73d92f 383 break;\r
384\r
385 //\r
386 // System Enclosure (Type 3)\r
387 //\r
388 case 3:\r
a1d4bfcc 389 PRINT_PENDING_STRING (Struct, Type3, Manufacturer);\r
390 PRINT_STRUCT_VALUE (Struct, Type3, Type);\r
391 DisplaySystemEnclosureType (Struct->Type3->Type, Option);\r
392 PRINT_PENDING_STRING (Struct, Type3, Version);\r
393 PRINT_PENDING_STRING (Struct, Type3, SerialNumber);\r
394 PRINT_PENDING_STRING (Struct, Type3, AssetTag);\r
5d73d92f 395 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOTUP_STATE), gShellDebug1HiiHandle);\r
a1d4bfcc 396 DisplaySystemEnclosureStatus (Struct->Type3->BootupState, Option);\r
5d73d92f 397 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_STATE), gShellDebug1HiiHandle);\r
a1d4bfcc 398 DisplaySystemEnclosureStatus (Struct->Type3->PowerSupplyState, Option);\r
5d73d92f 399 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_THERMAL_STATE), gShellDebug1HiiHandle);\r
a1d4bfcc 400 DisplaySystemEnclosureStatus (Struct->Type3->ThermalState, Option);\r
5d73d92f 401 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SECURITY_STATUS), gShellDebug1HiiHandle);\r
a1d4bfcc 402 DisplaySESecurityStatus (Struct->Type3->SecurityStatus, Option);\r
12233c19
CP
403 if (AE_SMBIOS_VERSION (0x2, 0x3)) {\r
404 if (Struct->Hdr->Length > 0xD) {\r
405 PRINT_BIT_FIELD (Struct, Type3, OemDefined, 4);\r
406 }\r
407 if (Struct->Hdr->Length > 0x11) {\r
408 PRINT_STRUCT_VALUE (Struct, Type3, Height);\r
409 }\r
410 if (Struct->Hdr->Length > 0x12) {\r
411 PRINT_STRUCT_VALUE (Struct, Type3, NumberofPowerCords);\r
412 }\r
413 }\r
414 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x13)) {\r
415 if (Struct->Hdr->Length > (0x15 + (Struct->Type3->ContainedElementCount * Struct->Type3->ContainedElementRecordLength))) {\r
416 PRINT_SMBIOS_STRING (Struct, Buffer[0x15 + (Struct->Type3->ContainedElementCount * Struct->Type3->ContainedElementRecordLength)], SKUNumber);\r
417 }\r
187cb3dd 418 }\r
5d73d92f 419 break;\r
420\r
421 //\r
422 // Processor Information (Type 4)\r
423 //\r
424 case 4:\r
f4c6c0fd 425 PRINT_SMBIOS_STRING (Struct, Struct->Type4->Socket, SocketDesignation)\r
a1d4bfcc 426 DisplayProcessorType (Struct->Type4->ProcessorType, Option);\r
187cb3dd 427 if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x28) &&\r
a1d4bfcc 428 (Struct->Type4->ProcessorFamily == 0xFE)) {\r
5d73d92f 429 //\r
430 // Get family from ProcessorFamily2 field\r
431 //\r
a1d4bfcc 432 DisplayProcessorFamily2 (Struct->Type4->ProcessorFamily2, Option);\r
5d73d92f 433 } else {\r
a1d4bfcc 434 DisplayProcessorFamily (Struct->Type4->ProcessorFamily, Option);\r
5d73d92f 435 }\r
a1d4bfcc 436 PRINT_PENDING_STRING (Struct, Type4, ProcessorManufacture);\r
437 PRINT_BIT_FIELD (Struct, Type4, ProcessorId, 8);\r
438 PRINT_PENDING_STRING (Struct, Type4, ProcessorVersion);\r
187cb3dd 439 DisplayProcessorVoltage (*(UINT8 *) &(Struct->Type4->Voltage), Option);\r
a1d4bfcc 440 PRINT_STRUCT_VALUE (Struct, Type4, ExternalClock);\r
441 PRINT_STRUCT_VALUE (Struct, Type4, MaxSpeed);\r
442 PRINT_STRUCT_VALUE (Struct, Type4, CurrentSpeed);\r
443 DisplayProcessorStatus (Struct->Type4->Status, Option);\r
444 DisplayProcessorUpgrade (Struct->Type4->ProcessorUpgrade, Option);\r
445 PRINT_STRUCT_VALUE_H (Struct, Type4, L1CacheHandle);\r
446 PRINT_STRUCT_VALUE_H (Struct, Type4, L2CacheHandle);\r
447 PRINT_STRUCT_VALUE_H (Struct, Type4, L3CacheHandle);\r
187cb3dd
SZ
448 if (AE_SMBIOS_VERSION (0x2, 0x3) && (Struct->Hdr->Length > 0x20)) {\r
449 PRINT_PENDING_STRING (Struct, Type4, SerialNumber);\r
450 PRINT_PENDING_STRING (Struct, Type4, AssetTag);\r
451 PRINT_PENDING_STRING (Struct, Type4, PartNumber);\r
452 }\r
453 if (AE_SMBIOS_VERSION (0x2, 0x5) && (Struct->Hdr->Length > 0x23)) {\r
a1d4bfcc 454 PRINT_STRUCT_VALUE (Struct, Type4, CoreCount);\r
455 PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount);\r
456 PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount);\r
187cb3dd 457 DisplayProcessorCharacteristics (Struct->Type4->ProcessorCharacteristics, Option);\r
5d73d92f 458 }\r
447cb913 459 if ((SmbiosMajorVersion >= 0x3) && (Struct->Hdr->Length > 0x2A)) {\r
1581c9a2
EL
460 PRINT_STRUCT_VALUE (Struct, Type4, CoreCount2);\r
461 PRINT_STRUCT_VALUE (Struct, Type4, EnabledCoreCount2);\r
462 PRINT_STRUCT_VALUE (Struct, Type4, ThreadCount2);\r
463 }\r
5d73d92f 464 break;\r
465\r
466 //\r
467 // Memory Controller Information (Type 5)\r
468 //\r
469 case 5:\r
470 {\r
471 UINT8 SlotNum;\r
a1d4bfcc 472 SlotNum = Struct->Type5->AssociatedMemorySlotNum;\r
5d73d92f 473\r
a1d4bfcc 474 DisplayMcErrorDetectMethod (Struct->Type5->ErrDetectMethod, Option);\r
187cb3dd 475 DisplayMcErrorCorrectCapability (*(UINT8 *) &(Struct->Type5->ErrCorrectCapability), Option);\r
5d73d92f 476 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SUPOPRT), gShellDebug1HiiHandle);\r
a1d4bfcc 477 DisplayMcInterleaveSupport (Struct->Type5->SupportInterleave, Option);\r
5d73d92f 478 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CURRENT), gShellDebug1HiiHandle);\r
a1d4bfcc 479 DisplayMcInterleaveSupport (Struct->Type5->CurrentInterleave, Option);\r
480 DisplayMaxMemoryModuleSize (Struct->Type5->MaxMemoryModuleSize, SlotNum, Option);\r
187cb3dd 481 DisplayMcMemorySpeeds (*(UINT16 *) &(Struct->Type5->SupportSpeed), Option);\r
a1d4bfcc 482 DisplayMmMemoryType (Struct->Type5->SupportMemoryType, Option);\r
483 DisplayMemoryModuleVoltage (Struct->Type5->MemoryModuleVoltage, Option);\r
484 PRINT_STRUCT_VALUE (Struct, Type5, AssociatedMemorySlotNum);\r
5d73d92f 485 //\r
486 // According to SMBIOS Specification, offset 0x0F\r
487 //\r
488 DisplayMemoryModuleConfigHandles ((UINT16 *) (&Buffer[0x0F]), SlotNum, Option);\r
489 DisplayMcErrorCorrectCapability (Buffer[0x0F + 2 * SlotNum], Option);\r
490 }\r
491 break;\r
492\r
493 //\r
494 // Memory Module Information (Type 6)\r
495 //\r
496 case 6:\r
a1d4bfcc 497 PRINT_PENDING_STRING (Struct, Type6, SocketDesignation);\r
498 DisplayMmBankConnections (Struct->Type6->BankConnections, Option);\r
499 PRINT_STRUCT_VALUE (Struct, Type6, CurrentSpeed);\r
187cb3dd 500 DisplayMmMemoryType (*(UINT16 *) &(Struct->Type6->CurrentMemoryType), Option);\r
5d73d92f 501 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INSTALLED), gShellDebug1HiiHandle);\r
187cb3dd 502 DisplayMmMemorySize (*(UINT8 *) &(Struct->Type6->InstalledSize), Option);\r
5d73d92f 503 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED), gShellDebug1HiiHandle);\r
187cb3dd 504 DisplayMmMemorySize (*(UINT8 *) &(Struct->Type6->EnabledSize), Option);\r
a1d4bfcc 505 DisplayMmErrorStatus (Struct->Type6->ErrorStatus, Option);\r
5d73d92f 506 break;\r
507\r
508 //\r
509 // Cache Information (Type 7)\r
510 //\r
511 case 7:\r
a1d4bfcc 512 PRINT_PENDING_STRING (Struct, Type7, SocketDesignation);\r
187cb3dd 513 DisplayCacheConfiguration (Struct->Type7->CacheConfiguration, Option);\r
a1d4bfcc 514 PRINT_STRUCT_VALUE_H (Struct, Type7, MaximumCacheSize);\r
515 PRINT_STRUCT_VALUE_H (Struct, Type7, InstalledSize);\r
516 PRINT_STRUCT_VALUE_H (Struct, Type7, SupportedSRAMType);\r
517 PRINT_STRUCT_VALUE_H (Struct, Type7, CurrentSRAMType);\r
0b6cb335 518 DisplayCacheSRAMType (ReadUnaligned16 ((UINT16 *) (UINTN) &(Struct->Type7->CurrentSRAMType)), Option);\r
a1d4bfcc 519 PRINT_STRUCT_VALUE_H (Struct, Type7, CacheSpeed);\r
520 DisplayCacheErrCorrectingType (Struct->Type7->ErrorCorrectionType, Option);\r
521 DisplayCacheSystemCacheType (Struct->Type7->SystemCacheType, Option);\r
522 DisplayCacheAssociativity (Struct->Type7->Associativity, Option);\r
44175ee7
SZ
523 if (AE_SMBIOS_VERSION (0x3, 0x1) && (Struct->Hdr->Length > 0x13)) {\r
524 PRINT_STRUCT_VALUE_H (Struct, Type7, MaximumCacheSize2);\r
525 PRINT_STRUCT_VALUE_H (Struct, Type7, InstalledSize2);\r
526 }\r
5d73d92f 527 break;\r
528\r
529 //\r
530 // Port Connector Information (Type 8)\r
531 //\r
532 case 8:\r
a1d4bfcc 533 PRINT_PENDING_STRING (Struct, Type8, InternalReferenceDesignator);\r
5d73d92f 534 Print (L"Internal ");\r
a1d4bfcc 535 DisplayPortConnectorType (Struct->Type8->InternalConnectorType, Option);\r
536 PRINT_PENDING_STRING (Struct, Type8, ExternalReferenceDesignator);\r
5d73d92f 537 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EXTERNAL), gShellDebug1HiiHandle);\r
a1d4bfcc 538 DisplayPortConnectorType (Struct->Type8->ExternalConnectorType, Option);\r
539 DisplayPortType (Struct->Type8->PortType, Option);\r
5d73d92f 540 break;\r
541\r
542 //\r
543 // System Slots (Type 9)\r
544 //\r
545 case 9:\r
7475ac51
DB
546 {\r
547 MISC_SLOT_PEER_GROUP *PeerGroupPtr;\r
548 UINT8 PeerGroupCount;\r
549\r
550 PRINT_PENDING_STRING (Struct, Type9, SlotDesignation);\r
551 DisplaySystemSlotType (Struct->Type9->SlotType, Option);\r
552 DisplaySystemSlotDataBusWidth (Struct->Type9->SlotDataBusWidth, Option);\r
553 DisplaySystemSlotCurrentUsage (Struct->Type9->CurrentUsage, Option);\r
554 DisplaySystemSlotLength (Struct->Type9->SlotLength, Option);\r
555 DisplaySystemSlotId (\r
556 Struct->Type9->SlotID,\r
557 Struct->Type9->SlotType,\r
558 Option\r
559 );\r
560 DisplaySlotCharacteristics1 (*(UINT8 *) &(Struct->Type9->SlotCharacteristics1), Option);\r
561 DisplaySlotCharacteristics2 (*(UINT8 *) &(Struct->Type9->SlotCharacteristics2), Option);\r
562 if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0xD)) {\r
563 PRINT_STRUCT_VALUE_H (Struct, Type9, SegmentGroupNum);\r
564 PRINT_STRUCT_VALUE_H (Struct, Type9, BusNum);\r
565 PRINT_STRUCT_VALUE_H (Struct, Type9, DevFuncNum);\r
566 }\r
567 if (AE_SMBIOS_VERSION (0x3, 0x2)) {\r
568 if (Struct->Hdr->Length > 0x11) {\r
569 PRINT_STRUCT_VALUE (Struct, Type9, DataBusWidth);\r
570 }\r
571 if (Struct->Hdr->Length > 0x12) {\r
572 PRINT_STRUCT_VALUE (Struct, Type9, PeerGroupingCount);\r
573\r
574 PeerGroupCount = Struct->Type9->PeerGroupingCount;\r
575 PeerGroupPtr = Struct->Type9->PeerGroups;\r
576 for (Index = 0; Index < PeerGroupCount; Index++) {\r
577 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SLOT_PEER_GROUPS), gShellDebug1HiiHandle, Index + 1);\r
578 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SEGMENT_GROUP_NUM), gShellDebug1HiiHandle, PeerGroupPtr[Index].SegmentGroupNum);\r
579 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BUS_NUM), gShellDebug1HiiHandle, PeerGroupPtr[Index].BusNum);\r
580 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DEV_FUNC_NUM), gShellDebug1HiiHandle, PeerGroupPtr[Index].DevFuncNum);\r
581 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DATA_BUS_WIDTH), gShellDebug1HiiHandle, PeerGroupPtr[Index].DataBusWidth);\r
582 }\r
583 }\r
584 }\r
5d73d92f 585 }\r
586 break;\r
587\r
588 //\r
589 // On Board Devices Information (Type 10)\r
590 //\r
591 case 10:\r
592 {\r
593 UINTN NumOfDevice;\r
187cb3dd 594 NumOfDevice = (Struct->Type10->Hdr.Length - sizeof (SMBIOS_STRUCTURE)) / (2 * sizeof (UINT8));\r
5d73d92f 595 for (Index = 0; Index < NumOfDevice; Index++) {\r
33bed756
SZ
596 ShellPrintEx(-1,-1,(((Struct->Type10->Device[Index].DeviceType) & 0x80) != 0) ? L"Device Enabled\n": L"Device Disabled\n");\r
597 DisplayOnboardDeviceTypes ((Struct->Type10->Device[Index].DeviceType) & 0x7F, Option);\r
5d73d92f 598 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DESC_STRING), gShellDebug1HiiHandle);\r
187cb3dd 599 ShellPrintEx(-1,-1,L"%a\n",LibGetSmbiosString (Struct, Struct->Type10->Device[Index].DescriptionString));\r
5d73d92f 600 }\r
601 }\r
602 break;\r
603\r
187cb3dd
SZ
604 //\r
605 // Oem Strings (Type 11)\r
606 //\r
5d73d92f 607 case 11:\r
a1d4bfcc 608 PRINT_STRUCT_VALUE (Struct, Type11, StringCount);\r
609 for (Index = 1; Index <= Struct->Type11->StringCount; Index++) {\r
610 ShellPrintEx(-1,-1,L"%a\n", LibGetSmbiosString (Struct, Index));\r
5d73d92f 611 }\r
612 break;\r
613\r
187cb3dd
SZ
614 //\r
615 // System Configuration Options (Type 12)\r
616 //\r
5d73d92f 617 case 12:\r
a1d4bfcc 618 PRINT_STRUCT_VALUE (Struct, Type12, StringCount);\r
619 for (Index = 1; Index <= Struct->Type12->StringCount; Index++) {\r
620 ShellPrintEx(-1,-1,L"%a\n", LibGetSmbiosString (Struct, Index));\r
5d73d92f 621 }\r
622 break;\r
623\r
187cb3dd
SZ
624 //\r
625 // BIOS Language Information (Type 13)\r
626 //\r
5d73d92f 627 case 13:\r
a1d4bfcc 628 PRINT_STRUCT_VALUE (Struct, Type13, InstallableLanguages);\r
629 PRINT_STRUCT_VALUE (Struct, Type13, Flags);\r
630 PRINT_BIT_FIELD (Struct, Type13, Reserved, 15);\r
631 PRINT_PENDING_STRING (Struct, Type13, CurrentLanguages);\r
5d73d92f 632 break;\r
633\r
187cb3dd
SZ
634 //\r
635 // Group Associations (Type 14)\r
636 //\r
5d73d92f 637 case 14:\r
187cb3dd
SZ
638 {\r
639 UINT8 NumOfItem;\r
640 NumOfItem = (Struct->Type14->Hdr.Length - 5) / 3;\r
641 PRINT_PENDING_STRING (Struct, Type14, GroupName);\r
642 for (Index = 0; Index < NumOfItem; Index++) {\r
643 ShellPrintEx(-1,-1,L"ItemType %d: %d\n", Index + 1, Struct->Type14->Group[Index].ItemType);\r
644 ShellPrintEx(-1,-1,L"ItemHandle %d: %d\n", Index + 1, Struct->Type14->Group[Index].ItemHandle);\r
645 }\r
646 }\r
5d73d92f 647 break;\r
648\r
649 //\r
650 // System Event Log (Type 15)\r
651 //\r
652 case 15:\r
653 {\r
187cb3dd
SZ
654 EVENT_LOG_TYPE *Ptr;\r
655 UINT8 Count;\r
656 UINT8 *AccessMethodAddress;\r
5d73d92f 657\r
a1d4bfcc 658 PRINT_STRUCT_VALUE_H (Struct, Type15, LogAreaLength);\r
659 PRINT_STRUCT_VALUE_H (Struct, Type15, LogHeaderStartOffset);\r
660 PRINT_STRUCT_VALUE_H (Struct, Type15, LogDataStartOffset);\r
661 DisplaySELAccessMethod (Struct->Type15->AccessMethod, Option);\r
662 PRINT_STRUCT_VALUE_H (Struct, Type15, AccessMethodAddress);\r
663 DisplaySELLogStatus (Struct->Type15->LogStatus, Option);\r
664 PRINT_STRUCT_VALUE_H (Struct, Type15, LogChangeToken);\r
665 DisplaySysEventLogHeaderFormat (Struct->Type15->LogHeaderFormat, Option);\r
666 PRINT_STRUCT_VALUE_H (Struct, Type15, NumberOfSupportedLogTypeDescriptors);\r
667 PRINT_STRUCT_VALUE_H (Struct, Type15, LengthOfLogTypeDescriptor);\r
668\r
669 Count = Struct->Type15->NumberOfSupportedLogTypeDescriptors;\r
5d73d92f 670 if (Count > 0) {\r
a1d4bfcc 671 Ptr = Struct->Type15->EventLogTypeDescriptors;\r
5d73d92f 672\r
673 //\r
674 // Display all Event Log type descriptors supported by system\r
675 //\r
676 for (Index = 0; Index < Count; Index++, Ptr++) {\r
677 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SUPOPRTED_EVENT), gShellDebug1HiiHandle, Index + 1);\r
678 DisplaySELTypes (Ptr->LogType, Option);\r
679 DisplaySELVarDataFormatType (Ptr->DataFormatType, Option);\r
680 }\r
681\r
682 if (Option >= SHOW_DETAIL) {\r
a1d4bfcc 683 switch (Struct->Type15->AccessMethod) {\r
5d73d92f 684 case 03:\r
a1d4bfcc 685 AccessMethodAddress = (UINT8 *) (UINTN) (Struct->Type15->AccessMethodAddress);\r
5d73d92f 686 break;\r
687\r
688 case 00:\r
689 case 01:\r
690 case 02:\r
691 case 04:\r
692 default:\r
693 ShellPrintHiiEx(-1,-1,NULL,\r
694 STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ACCESS_METHOD_NOT_SUPOPRTED),\r
695 gShellDebug1HiiHandle,\r
a1d4bfcc 696 Struct->Type15->AccessMethod\r
5d73d92f 697 );\r
698 return EFI_UNSUPPORTED;\r
699 }\r
700 //\r
701 // Display Event Log Header\r
702 //\r
703 // Starting offset (or index) within the nonvolatile storage\r
704 // of the event-log's header, from the Access Method Address\r
705 //\r
706 DisplaySysEventLogHeader (\r
a1d4bfcc 707 Struct->Type15->LogHeaderFormat,\r
708 AccessMethodAddress + Struct->Type15->LogHeaderStartOffset\r
5d73d92f 709 );\r
710\r
711 //\r
712 // Display all Event Log data\r
713 //\r
714 // Starting offset (or index) within the nonvolatile storage\r
715 // of the event-log's first data byte, from the Access Method Address(0x14)\r
716 //\r
717 DisplaySysEventLogData (\r
a1d4bfcc 718 AccessMethodAddress + Struct->Type15->LogDataStartOffset,\r
5d73d92f 719 (UINT16)\r
720 (\r
187cb3dd
SZ
721 Struct->Type15->LogAreaLength -\r
722 (Struct->Type15->LogDataStartOffset - Struct->Type15->LogHeaderStartOffset)\r
723 )\r
5d73d92f 724 );\r
725 }\r
726\r
727 }\r
728 }\r
729 break;\r
730\r
731 //\r
732 // Physical Memory Array (Type 16)\r
733 //\r
734 case 16:\r
a1d4bfcc 735 DisplayPMALocation (Struct->Type16->Location, Option);\r
736 DisplayPMAUse (Struct->Type16->Use, Option);\r
5d73d92f 737 DisplayPMAErrorCorrectionTypes (\r
a1d4bfcc 738 Struct->Type16->MemoryErrorCorrection,\r
5d73d92f 739 Option\r
740 );\r
a1d4bfcc 741 PRINT_STRUCT_VALUE_H (Struct, Type16, MaximumCapacity);\r
742 PRINT_STRUCT_VALUE_H (Struct, Type16, MemoryErrorInformationHandle);\r
743 PRINT_STRUCT_VALUE_H (Struct, Type16, NumberOfMemoryDevices);\r
187cb3dd
SZ
744 if (AE_SMBIOS_VERSION (0x2, 0x7) && Struct->Hdr->Length > 0xF) {\r
745 PRINT_STRUCT_VALUE_LH (Struct, Type16, ExtendedMaximumCapacity);\r
746 }\r
5d73d92f 747 break;\r
748\r
749 //\r
750 // Memory Device (Type 17)\r
751 //\r
752 case 17:\r
a1d4bfcc 753 PRINT_STRUCT_VALUE_H (Struct, Type17, MemoryArrayHandle);\r
754 PRINT_STRUCT_VALUE_H (Struct, Type17, MemoryErrorInformationHandle);\r
755 PRINT_STRUCT_VALUE (Struct, Type17, TotalWidth);\r
756 PRINT_STRUCT_VALUE (Struct, Type17, DataWidth);\r
757 PRINT_STRUCT_VALUE (Struct, Type17, Size);\r
758 DisplayMemoryDeviceFormFactor (Struct->Type17->FormFactor, Option);\r
759 PRINT_STRUCT_VALUE_H (Struct, Type17, DeviceSet);\r
760 PRINT_PENDING_STRING (Struct, Type17, DeviceLocator);\r
761 PRINT_PENDING_STRING (Struct, Type17, BankLocator);\r
762 DisplayMemoryDeviceType (Struct->Type17->MemoryType, Option);\r
0b6cb335 763 DisplayMemoryDeviceTypeDetail (ReadUnaligned16 ((UINT16 *) (UINTN) &(Struct->Type17->TypeDetail)), Option);\r
a1d4bfcc 764 PRINT_STRUCT_VALUE_H (Struct, Type17, Speed);\r
765 PRINT_PENDING_STRING (Struct, Type17, Manufacturer);\r
766 PRINT_PENDING_STRING (Struct, Type17, SerialNumber);\r
767 PRINT_PENDING_STRING (Struct, Type17, AssetTag);\r
768 PRINT_PENDING_STRING (Struct, Type17, PartNumber);\r
187cb3dd 769 if (AE_SMBIOS_VERSION (0x2, 0x6) && (Struct->Hdr->Length > 0x1B)) {\r
a1d4bfcc 770 PRINT_STRUCT_VALUE_H (Struct, Type17, Attributes);\r
5d73d92f 771 }\r
187cb3dd
SZ
772 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x1C)) {\r
773 PRINT_STRUCT_VALUE (Struct, Type17, ExtendedSize);\r
774 PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredMemoryClockSpeed);\r
775 }\r
09d1c9e6
SEHM
776 if (AE_SMBIOS_VERSION (0x2, 0x8) && (Struct->Hdr->Length > 0x22)) {\r
777 PRINT_STRUCT_VALUE (Struct, Type17, MinimumVoltage);\r
778 PRINT_STRUCT_VALUE (Struct, Type17, MaximumVoltage);\r
779 PRINT_STRUCT_VALUE (Struct, Type17, ConfiguredVoltage);\r
780 }\r
7475ac51
DB
781 if (AE_SMBIOS_VERSION (0x3, 0x2)) {\r
782 if (Struct->Hdr->Length > 0x28) {\r
783 DisplayMemoryDeviceMemoryTechnology (Struct->Type17->MemoryTechnology, Option);\r
784 DisplayMemoryDeviceMemoryOperatingModeCapability (Struct->Type17->MemoryOperatingModeCapability.Uint16, Option);\r
785 PRINT_PENDING_STRING (Struct, Type17, FirwareVersion);\r
786 PRINT_STRUCT_VALUE_H (Struct, Type17, ModuleManufacturerID);\r
787 PRINT_STRUCT_VALUE_H (Struct, Type17, ModuleProductID);\r
788 PRINT_STRUCT_VALUE_H (Struct, Type17, MemorySubsystemControllerManufacturerID);\r
789 PRINT_STRUCT_VALUE_H (Struct, Type17, MemorySubsystemControllerProductID);\r
790 }\r
791 if (Struct->Hdr->Length > 0x34) {\r
792 PRINT_STRUCT_VALUE_H (Struct, Type17, NonVolatileSize);\r
793 }\r
794 if (Struct->Hdr->Length > 0x3C) {\r
795 PRINT_STRUCT_VALUE_H (Struct, Type17, VolatileSize);\r
796 }\r
797 if (Struct->Hdr->Length > 0x44) {\r
798 PRINT_STRUCT_VALUE_H (Struct, Type17, CacheSize);\r
799 }\r
800 if (Struct->Hdr->Length > 0x4C) {\r
801 PRINT_STRUCT_VALUE_H (Struct, Type17, LogicalSize);\r
802 }\r
803 }\r
5d73d92f 804 break;\r
805\r
806 //\r
807 // 32-bit Memory Error Information (Type 18)\r
808 //\r
809 case 18:\r
a1d4bfcc 810 DisplayMemoryErrorType (Struct->Type18->ErrorType, Option);\r
5d73d92f 811 DisplayMemoryErrorGranularity (\r
a1d4bfcc 812 Struct->Type18->ErrorGranularity,\r
5d73d92f 813 Option\r
814 );\r
a1d4bfcc 815 DisplayMemoryErrorOperation (Struct->Type18->ErrorOperation, Option);\r
816 PRINT_STRUCT_VALUE_H (Struct, Type18, VendorSyndrome);\r
817 PRINT_STRUCT_VALUE_H (Struct, Type18, MemoryArrayErrorAddress);\r
818 PRINT_STRUCT_VALUE_H (Struct, Type18, DeviceErrorAddress);\r
819 PRINT_STRUCT_VALUE_H (Struct, Type18, ErrorResolution);\r
5d73d92f 820 break;\r
821\r
822 //\r
823 // Memory Array Mapped Address (Type 19)\r
824 //\r
825 case 19:\r
a1d4bfcc 826 PRINT_STRUCT_VALUE_H (Struct, Type19, StartingAddress);\r
827 PRINT_STRUCT_VALUE_H (Struct, Type19, EndingAddress);\r
828 PRINT_STRUCT_VALUE_H (Struct, Type19, MemoryArrayHandle);\r
829 PRINT_STRUCT_VALUE_H (Struct, Type19, PartitionWidth);\r
187cb3dd 830 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0xF)) {\r
4641e700 831 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedStartingAddress);\r
832 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedEndingAddress);\r
833 }\r
5d73d92f 834 break;\r
835\r
836 //\r
187cb3dd 837 // Memory Device Mapped Address (Type 20)\r
5d73d92f 838 //\r
839 case 20:\r
a1d4bfcc 840 PRINT_STRUCT_VALUE_H (Struct, Type20, StartingAddress);\r
841 PRINT_STRUCT_VALUE_H (Struct, Type20, EndingAddress);\r
842 PRINT_STRUCT_VALUE_H (Struct, Type20, MemoryDeviceHandle);\r
843 PRINT_STRUCT_VALUE_H (Struct, Type20, MemoryArrayMappedAddressHandle);\r
844 PRINT_STRUCT_VALUE_H (Struct, Type20, PartitionRowPosition);\r
845 PRINT_STRUCT_VALUE_H (Struct, Type20, InterleavePosition);\r
846 PRINT_STRUCT_VALUE_H (Struct, Type20, InterleavedDataDepth);\r
187cb3dd
SZ
847 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x13)) {\r
848 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedStartingAddress);\r
849 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedEndingAddress);\r
850 }\r
5d73d92f 851 break;\r
852\r
853 //\r
187cb3dd 854 // Built-in Pointing Device (Type 21)\r
5d73d92f 855 //\r
856 case 21:\r
a1d4bfcc 857 DisplayPointingDeviceType (Struct->Type21->Type, Option);\r
858 DisplayPointingDeviceInterface (Struct->Type21->Interface, Option);\r
859 PRINT_STRUCT_VALUE (Struct, Type21, NumberOfButtons);\r
5d73d92f 860 break;\r
861\r
862 //\r
187cb3dd 863 // Portable Battery (Type 22)\r
5d73d92f 864 //\r
865 case 22:\r
a1d4bfcc 866 PRINT_PENDING_STRING (Struct, Type22, Location);\r
867 PRINT_PENDING_STRING (Struct, Type22, Manufacturer);\r
868 PRINT_PENDING_STRING (Struct, Type22, ManufactureDate);\r
869 PRINT_PENDING_STRING (Struct, Type22, SerialNumber);\r
870 PRINT_PENDING_STRING (Struct, Type22, DeviceName);\r
5d73d92f 871 DisplayPBDeviceChemistry (\r
a1d4bfcc 872 Struct->Type22->DeviceChemistry,\r
5d73d92f 873 Option\r
874 );\r
a1d4bfcc 875 PRINT_STRUCT_VALUE_H (Struct, Type22, DeviceCapacity);\r
876 PRINT_STRUCT_VALUE_H (Struct, Type22, DesignVoltage);\r
877 PRINT_PENDING_STRING (Struct, Type22, SBDSVersionNumber);\r
878 PRINT_STRUCT_VALUE_H (Struct, Type22, MaximumErrorInBatteryData);\r
879 PRINT_STRUCT_VALUE_H (Struct, Type22, SBDSSerialNumber);\r
5d73d92f 880 DisplaySBDSManufactureDate (\r
a1d4bfcc 881 Struct->Type22->SBDSManufactureDate,\r
5d73d92f 882 Option\r
883 );\r
a1d4bfcc 884 PRINT_PENDING_STRING (Struct, Type22, SBDSDeviceChemistry);\r
885 PRINT_STRUCT_VALUE_H (Struct, Type22, DesignCapacityMultiplier);\r
886 PRINT_STRUCT_VALUE_H (Struct, Type22, OEMSpecific);\r
5d73d92f 887 break;\r
888\r
187cb3dd
SZ
889 //\r
890 // System Reset (Type 23)\r
891 //\r
5d73d92f 892 case 23:\r
893 DisplaySystemResetCapabilities (\r
a1d4bfcc 894 Struct->Type23->Capabilities,\r
5d73d92f 895 Option\r
896 );\r
a1d4bfcc 897 PRINT_STRUCT_VALUE_H (Struct, Type23, ResetCount);\r
898 PRINT_STRUCT_VALUE_H (Struct, Type23, ResetLimit);\r
899 PRINT_STRUCT_VALUE_H (Struct, Type23, TimerInterval);\r
900 PRINT_STRUCT_VALUE_H (Struct, Type23, Timeout);\r
5d73d92f 901 break;\r
902\r
187cb3dd
SZ
903 //\r
904 // Hardware Security (Type 24)\r
905 //\r
5d73d92f 906 case 24:\r
907 DisplayHardwareSecuritySettings (\r
a1d4bfcc 908 Struct->Type24->HardwareSecuritySettings,\r
5d73d92f 909 Option\r
910 );\r
911 break;\r
912\r
187cb3dd
SZ
913 //\r
914 // System Power Controls (Type 25)\r
915 //\r
5d73d92f 916 case 25:\r
a1d4bfcc 917 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnMonth);\r
918 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnDayOfMonth);\r
919 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnHour);\r
920 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnMinute);\r
921 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnSecond);\r
5d73d92f 922 break;\r
923\r
187cb3dd
SZ
924 //\r
925 // Voltage Probe (Type 26)\r
926 //\r
5d73d92f 927 case 26:\r
a1d4bfcc 928 PRINT_PENDING_STRING (Struct, Type26, Description);\r
187cb3dd
SZ
929 DisplayVPLocation (*(UINT8 *) &(Struct->Type26->LocationAndStatus), Option);\r
930 DisplayVPStatus (*(UINT8 *) &(Struct->Type26->LocationAndStatus), Option);\r
a1d4bfcc 931 PRINT_STRUCT_VALUE_H (Struct, Type26, MaximumValue);\r
932 PRINT_STRUCT_VALUE_H (Struct, Type26, MinimumValue);\r
933 PRINT_STRUCT_VALUE_H (Struct, Type26, Resolution);\r
934 PRINT_STRUCT_VALUE_H (Struct, Type26, Tolerance);\r
935 PRINT_STRUCT_VALUE_H (Struct, Type26, Accuracy);\r
936 PRINT_STRUCT_VALUE_H (Struct, Type26, OEMDefined);\r
937 PRINT_STRUCT_VALUE_H (Struct, Type26, NominalValue);\r
5d73d92f 938 break;\r
939\r
187cb3dd
SZ
940 //\r
941 // Cooling Device (Type 27)\r
942 //\r
5d73d92f 943 case 27:\r
a1d4bfcc 944 PRINT_STRUCT_VALUE_H (Struct, Type27, TemperatureProbeHandle);\r
187cb3dd
SZ
945 DisplayCoolingDeviceStatus (*(UINT8 *) &(Struct->Type27->DeviceTypeAndStatus), Option);\r
946 DisplayCoolingDeviceType (*(UINT8 *) &(Struct->Type27->DeviceTypeAndStatus), Option);\r
a1d4bfcc 947 PRINT_STRUCT_VALUE_H (Struct, Type27, CoolingUnitGroup);\r
948 PRINT_STRUCT_VALUE_H (Struct, Type27, OEMDefined);\r
949 PRINT_STRUCT_VALUE_H (Struct, Type27, NominalSpeed);\r
187cb3dd
SZ
950 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0xE)) {\r
951 PRINT_PENDING_STRING (Struct, Type27, Description);\r
952 }\r
5d73d92f 953 break;\r
954\r
187cb3dd
SZ
955 //\r
956 // Temperature Probe (Type 28)\r
957 //\r
5d73d92f 958 case 28:\r
a1d4bfcc 959 PRINT_PENDING_STRING (Struct, Type28, Description);\r
187cb3dd
SZ
960 DisplayTemperatureProbeStatus (*(UINT8 *) &(Struct->Type28->LocationAndStatus), Option);\r
961 DisplayTemperatureProbeLoc (*(UINT8 *) &(Struct->Type28->LocationAndStatus), Option);\r
a1d4bfcc 962 PRINT_STRUCT_VALUE_H (Struct, Type28, MaximumValue);\r
963 PRINT_STRUCT_VALUE_H (Struct, Type28, MinimumValue);\r
964 PRINT_STRUCT_VALUE_H (Struct, Type28, Resolution);\r
965 PRINT_STRUCT_VALUE_H (Struct, Type28, Tolerance);\r
966 PRINT_STRUCT_VALUE_H (Struct, Type28, Accuracy);\r
967 PRINT_STRUCT_VALUE_H (Struct, Type28, OEMDefined);\r
968 PRINT_STRUCT_VALUE_H (Struct, Type28, NominalValue);\r
5d73d92f 969 break;\r
970\r
187cb3dd
SZ
971 //\r
972 // Electrical Current Probe (Type 29)\r
973 //\r
5d73d92f 974 case 29:\r
a1d4bfcc 975 PRINT_PENDING_STRING (Struct, Type29, Description);\r
187cb3dd
SZ
976 DisplayECPStatus (*(UINT8 *) &(Struct->Type29->LocationAndStatus), Option);\r
977 DisplayECPLoc (*(UINT8 *) &(Struct->Type29->LocationAndStatus), Option);\r
a1d4bfcc 978 PRINT_STRUCT_VALUE_H (Struct, Type29, MaximumValue);\r
979 PRINT_STRUCT_VALUE_H (Struct, Type29, MinimumValue);\r
980 PRINT_STRUCT_VALUE_H (Struct, Type29, Resolution);\r
981 PRINT_STRUCT_VALUE_H (Struct, Type29, Tolerance);\r
982 PRINT_STRUCT_VALUE_H (Struct, Type29, Accuracy);\r
983 PRINT_STRUCT_VALUE_H (Struct, Type29, OEMDefined);\r
984 PRINT_STRUCT_VALUE_H (Struct, Type29, NominalValue);\r
5d73d92f 985 break;\r
986\r
187cb3dd
SZ
987 //\r
988 // Out-of-Band Remote Access (Type 30)\r
989 //\r
5d73d92f 990 case 30:\r
a1d4bfcc 991 PRINT_PENDING_STRING (Struct, Type30, ManufacturerName);\r
992 DisplayOBRAConnections (Struct->Type30->Connections, Option);\r
5d73d92f 993 break;\r
994\r
187cb3dd
SZ
995 //\r
996 // Boot Integrity Services (BIS) Entry Point (Type 31)\r
997 //\r
5d73d92f 998 case 31:\r
999 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STRUCT_TYPE31), gShellDebug1HiiHandle);\r
1000 break;\r
1001\r
187cb3dd
SZ
1002 //\r
1003 // System Boot Information (Type 32)\r
1004 //\r
5d73d92f 1005 case 32:\r
a1d4bfcc 1006 PRINT_BIT_FIELD (Struct, Type32, Reserved, 6);\r
187cb3dd 1007 DisplaySystemBootStatus (Struct->Type32->BootStatus, Option);\r
5d73d92f 1008 break;\r
1009\r
187cb3dd
SZ
1010 //\r
1011 // 64-Bit Memory Error Information (Type 33)\r
1012 //\r
5d73d92f 1013 case 33:\r
a1d4bfcc 1014 DisplayMemoryErrorType (Struct->Type33->ErrorType, Option);\r
5d73d92f 1015 DisplayMemoryErrorGranularity (\r
a1d4bfcc 1016 Struct->Type33->ErrorGranularity,\r
5d73d92f 1017 Option\r
1018 );\r
a1d4bfcc 1019 DisplayMemoryErrorOperation (Struct->Type33->ErrorOperation, Option);\r
1020 PRINT_STRUCT_VALUE_H (Struct, Type33, VendorSyndrome);\r
187cb3dd
SZ
1021 PRINT_STRUCT_VALUE_LH (Struct, Type33, MemoryArrayErrorAddress);\r
1022 PRINT_STRUCT_VALUE_LH (Struct, Type33, DeviceErrorAddress);\r
a1d4bfcc 1023 PRINT_STRUCT_VALUE_H (Struct, Type33, ErrorResolution);\r
5d73d92f 1024 break;\r
1025\r
1026 //\r
187cb3dd 1027 // Management Device (Type 34)\r
5d73d92f 1028 //\r
1029 case 34:\r
a1d4bfcc 1030 PRINT_PENDING_STRING (Struct, Type34, Description);\r
1031 DisplayMDType (Struct->Type34->Type, Option);\r
1032 PRINT_STRUCT_VALUE_H (Struct, Type34, Address);\r
187cb3dd 1033 DisplayMDAddressType (Struct->Type34->AddressType, Option);\r
5d73d92f 1034 break;\r
1035\r
187cb3dd
SZ
1036 //\r
1037 // Management Device Component (Type 35)\r
1038 //\r
5d73d92f 1039 case 35:\r
a1d4bfcc 1040 PRINT_PENDING_STRING (Struct, Type35, Description);\r
1041 PRINT_STRUCT_VALUE_H (Struct, Type35, ManagementDeviceHandle);\r
1042 PRINT_STRUCT_VALUE_H (Struct, Type35, ComponentHandle);\r
1043 PRINT_STRUCT_VALUE_H (Struct, Type35, ThresholdHandle);\r
5d73d92f 1044 break;\r
1045\r
187cb3dd
SZ
1046 //\r
1047 // Management Device Threshold Data (Type 36)\r
1048 //\r
5d73d92f 1049 case 36:\r
a1d4bfcc 1050 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdNonCritical);\r
1051 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdNonCritical);\r
1052 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdCritical);\r
1053 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdCritical);\r
1054 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdNonRecoverable);\r
1055 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdNonRecoverable);\r
5d73d92f 1056 break;\r
1057\r
1058 //\r
187cb3dd 1059 // Memory Channel (Type 37)\r
5d73d92f 1060 //\r
1061 case 37:\r
1062 {\r
187cb3dd
SZ
1063 UINT8 Count;\r
1064 MEMORY_DEVICE *Ptr;\r
a1d4bfcc 1065 DisplayMemoryChannelType (Struct->Type37->ChannelType, Option);\r
1066 PRINT_STRUCT_VALUE_H (Struct, Type37, MaximumChannelLoad);\r
1067 PRINT_STRUCT_VALUE_H (Struct, Type37, MemoryDeviceCount);\r
5d73d92f 1068\r
a1d4bfcc 1069 Count = Struct->Type37->MemoryDeviceCount;\r
1070 Ptr = Struct->Type37->MemoryDevice;\r
5d73d92f 1071 for (Index = 0; Index < Count; Index++) {\r
1072 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_DEVICE), gShellDebug1HiiHandle, Index + 1);\r
187cb3dd
SZ
1073 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DEV_LOAD), gShellDebug1HiiHandle, Ptr[Index].DeviceLoad);\r
1074 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DEV_HANDLE), gShellDebug1HiiHandle, Ptr[Index].DeviceHandle);\r
5d73d92f 1075 }\r
1076 }\r
1077 break;\r
1078\r
1079 //\r
187cb3dd 1080 // IPMI Device Information (Type 38)\r
5d73d92f 1081 //\r
1082 case 38:\r
a1d4bfcc 1083 DisplayIPMIDIBMCInterfaceType (Struct->Type38->InterfaceType, Option);\r
1084 PRINT_STRUCT_VALUE_H (Struct, Type38, IPMISpecificationRevision);\r
1085 PRINT_STRUCT_VALUE_H (Struct, Type38, I2CSlaveAddress);\r
1086 PRINT_STRUCT_VALUE_H (Struct, Type38, NVStorageDeviceAddress);\r
187cb3dd 1087 PRINT_STRUCT_VALUE_LH (Struct, Type38, BaseAddress);\r
5d73d92f 1088 break;\r
1089\r
1090 //\r
1091 // System Power Supply (Type 39)\r
1092 //\r
1093 case 39:\r
a1d4bfcc 1094 PRINT_STRUCT_VALUE_H (Struct, Type39, PowerUnitGroup);\r
1095 PRINT_PENDING_STRING (Struct, Type39, Location);\r
1096 PRINT_PENDING_STRING (Struct, Type39, DeviceName);\r
1097 PRINT_PENDING_STRING (Struct, Type39, Manufacturer);\r
1098 PRINT_PENDING_STRING (Struct, Type39, SerialNumber);\r
1099 PRINT_PENDING_STRING (Struct, Type39, AssetTagNumber);\r
1100 PRINT_PENDING_STRING (Struct, Type39, ModelPartNumber);\r
1101 PRINT_PENDING_STRING (Struct, Type39, RevisionLevel);\r
1102 PRINT_STRUCT_VALUE_H (Struct, Type39, MaxPowerCapacity);\r
5d73d92f 1103 DisplaySPSCharacteristics (\r
187cb3dd 1104 *(UINT16 *) &(Struct->Type39->PowerSupplyCharacteristics),\r
5d73d92f 1105 Option\r
1106 );\r
a1d4bfcc 1107 PRINT_STRUCT_VALUE_H (Struct, Type39, InputVoltageProbeHandle);\r
1108 PRINT_STRUCT_VALUE_H (Struct, Type39, CoolingDeviceHandle);\r
1109 PRINT_STRUCT_VALUE_H (Struct, Type39, InputCurrentProbeHandle);\r
5d73d92f 1110 break;\r
1111\r
1112 //\r
1113 // Additional Information (Type 40)\r
1114 //\r
1115 case 40:\r
1116 {\r
1117 UINT8 NumberOfEntries;\r
1118 UINT8 EntryLength;\r
1119 ADDITIONAL_INFORMATION_ENTRY *Entries;\r
1120\r
1121 EntryLength = 0;\r
a1d4bfcc 1122 Entries = Struct->Type40->AdditionalInfoEntries;\r
1123 NumberOfEntries = Struct->Type40->NumberOfAdditionalInformationEntries;\r
5d73d92f 1124\r
a1d4bfcc 1125 PRINT_STRUCT_VALUE_H (Struct, Type40, NumberOfAdditionalInformationEntries);\r
5d73d92f 1126\r
1127 for (Index = 0; Index < NumberOfEntries; Index++) {\r
1128 EntryLength = Entries->EntryLength;\r
1129 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_ENTRYLEN), gShellDebug1HiiHandle, EntryLength);\r
1130 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_REFERENCEDHANDLE), gShellDebug1HiiHandle, Entries->ReferencedHandle);\r
1131 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_REFERENCEDOFFSET), gShellDebug1HiiHandle, Entries->ReferencedOffset);\r
a1d4bfcc 1132 PRINT_SMBIOS_STRING (Struct, Entries->EntryString, String);\r
1133 PRINT_SMBIOS_BIT_FIELD (Struct, Entries->Value, Value, EntryLength - 5);\r
5d73d92f 1134 Entries = (ADDITIONAL_INFORMATION_ENTRY *) ((UINT8 *)Entries + EntryLength);\r
1135 }\r
1136 }\r
1137 break;\r
1138\r
1139 //\r
1140 // Onboard Devices Extended Information (Type 41)\r
1141 //\r
1142 case 41:\r
a1d4bfcc 1143 PRINT_PENDING_STRING (Struct, Type41, ReferenceDesignation);\r
187cb3dd
SZ
1144 ShellPrintEx(-1,-1,(((Struct->Type41->DeviceType) & 0x80) != 0) ? L"Device Enabled\n": L"Device Disabled\n");\r
1145 DisplayOnboardDeviceTypes ((Struct->Type41->DeviceType) & 0x7F, Option);\r
a1d4bfcc 1146 PRINT_STRUCT_VALUE_H (Struct, Type41, DeviceTypeInstance);\r
1147 PRINT_STRUCT_VALUE_H (Struct, Type41, SegmentGroupNum);\r
1148 PRINT_STRUCT_VALUE_H (Struct, Type41, BusNum);\r
1149 PRINT_STRUCT_VALUE_H (Struct, Type41, DevFuncNum);\r
5d73d92f 1150 break;\r
1151\r
187cb3dd
SZ
1152 //\r
1153 // Management Controller Host Interface (Type 42)\r
1154 //\r
1155 case 42:\r
5734d486 1156 DisplayMCHostInterfaceType (Struct->Type42->InterfaceType, Option);\r
7475ac51
DB
1157 if (AE_SMBIOS_VERSION (0x3, 0x2)) {\r
1158 PRINT_STRUCT_VALUE_H (Struct, Type42, InterfaceTypeSpecificDataLength);\r
1159 PRINT_BIT_FIELD (Struct, Type42, InterfaceTypeSpecificData, Struct->Type42->InterfaceTypeSpecificDataLength);\r
1160 }\r
187cb3dd
SZ
1161 break;\r
1162\r
e9f0be02
LA
1163 //\r
1164 // TPM Device (Type 43)\r
1165 //\r
1166 case 43:\r
1167 PRINT_BIT_FIELD (Struct, Type43, VendorID, 4);\r
1168 PRINT_STRUCT_VALUE_H (Struct, Type43, MajorSpecVersion);\r
1169 PRINT_STRUCT_VALUE_H (Struct, Type43, MinorSpecVersion);\r
1170 PRINT_STRUCT_VALUE_H (Struct, Type43, FirmwareVersion1);\r
1171 PRINT_STRUCT_VALUE_H (Struct, Type43, FirmwareVersion2);\r
1172 PRINT_PENDING_STRING (Struct, Type43, Description);\r
1173 DisplayTpmDeviceCharacteristics (ReadUnaligned64 ((UINT64 *) (UINTN) &(Struct->Type43->Characteristics)), Option);\r
1174 PRINT_STRUCT_VALUE_H (Struct, Type43, OemDefined);\r
1175 break;\r
1176\r
187cb3dd
SZ
1177 //\r
1178 // Inactive (Type 126)\r
1179 //\r
5d73d92f 1180 case 126:\r
1181 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INACTIVE_STRUCT), gShellDebug1HiiHandle);\r
1182 break;\r
1183\r
187cb3dd
SZ
1184 //\r
1185 // End-of-Table (Type 127)\r
1186 //\r
5d73d92f 1187 case 127:\r
1188 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_THIS_STRUCT_END_TABLE), gShellDebug1HiiHandle);\r
1189 break;\r
1190\r
1191 default:\r
1192 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STRUCT_TYPE_UNDEFINED), gShellDebug1HiiHandle);\r
1193 break;\r
1194 }\r
1195\r
1196 return EFI_SUCCESS;\r
1197}\r
1198\r
a1d4bfcc 1199/**\r
1200 Display BIOS Information (Type 0) information.\r
1201\r
1202 @param[in] Chara The information bits.\r
1203 @param[in] Option The optional information.\r
1204**/\r
5d73d92f 1205VOID\r
1206DisplayBiosCharacteristics (\r
a1d4bfcc 1207 IN UINT64 Chara,\r
1208 IN UINT8 Option\r
5d73d92f 1209 )\r
1210{\r
1211 //\r
1212 // Print header\r
1213 //\r
1214 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR), gShellDebug1HiiHandle);\r
1215 //\r
1216 // print option\r
1217 //\r
a1d4bfcc 1218 PRINT_INFO_OPTION (Chara, Option);\r
5d73d92f 1219\r
1220 //\r
1221 // Check all the bits and print information\r
1222 // This function does not use Table because table of bits\r
1223 // are designed not to deal with UINT64\r
1224 //\r
a1d4bfcc 1225 if (BIT (Chara, 0) != 0) {\r
5d73d92f 1226 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
1227 }\r
1228\r
a1d4bfcc 1229 if (BIT (Chara, 1) != 0) {\r
5d73d92f 1230 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
1231 }\r
1232\r
a1d4bfcc 1233 if (BIT (Chara, 2) != 0) {\r
5d73d92f 1234 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN_BIT), gShellDebug1HiiHandle);\r
1235 }\r
1236\r
a1d4bfcc 1237 if (BIT (Chara, 3) != 0) {\r
5d73d92f 1238 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_NOT_SUPPORTED), gShellDebug1HiiHandle);\r
1239 }\r
1240\r
a1d4bfcc 1241 if (BIT (Chara, 4) != 0) {\r
5d73d92f 1242 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ISA_SUPPORTED), gShellDebug1HiiHandle);\r
1243 }\r
1244\r
a1d4bfcc 1245 if (BIT (Chara, 5) != 0) {\r
5d73d92f 1246 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MSA_SUPPORTED), gShellDebug1HiiHandle);\r
1247 }\r
1248\r
a1d4bfcc 1249 if (BIT (Chara, 6) != 0) {\r
5d73d92f 1250 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EISA_SUPPORTED), gShellDebug1HiiHandle);\r
1251 }\r
1252\r
a1d4bfcc 1253 if (BIT (Chara, 7) != 0) {\r
5d73d92f 1254 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PCI_SUPPORTED), gShellDebug1HiiHandle);\r
1255 }\r
1256\r
a1d4bfcc 1257 if (BIT (Chara, 8) != 0) {\r
5d73d92f 1258 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PC_CARD_SUPPORTED), gShellDebug1HiiHandle);\r
1259 }\r
1260\r
a1d4bfcc 1261 if (BIT (Chara, 9) != 0) {\r
5d73d92f 1262 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PLUG_PLAY_SUPPORTED), gShellDebug1HiiHandle);\r
1263 }\r
1264\r
a1d4bfcc 1265 if (BIT (Chara, 10) != 0) {\r
5d73d92f 1266 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_APM_SUPPORTED), gShellDebug1HiiHandle);\r
1267 }\r
1268\r
a1d4bfcc 1269 if (BIT (Chara, 11) != 0) {\r
5d73d92f 1270 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_UPGRADEABLE), gShellDebug1HiiHandle);\r
1271 }\r
1272\r
a1d4bfcc 1273 if (BIT (Chara, 12) != 0) {\r
5d73d92f 1274 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SHADOWING), gShellDebug1HiiHandle);\r
1275 }\r
1276\r
a1d4bfcc 1277 if (BIT (Chara, 13) != 0) {\r
5d73d92f 1278 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VESA_SUPPORTED), gShellDebug1HiiHandle);\r
1279 }\r
1280\r
a1d4bfcc 1281 if (BIT (Chara, 14) != 0) {\r
5d73d92f 1282 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ECSD_SUPPORT), gShellDebug1HiiHandle);\r
1283 }\r
1284\r
a1d4bfcc 1285 if (BIT (Chara, 15) != 0) {\r
5d73d92f 1286 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_FORM_CD_SUPPORTED), gShellDebug1HiiHandle);\r
1287 }\r
1288\r
a1d4bfcc 1289 if (BIT (Chara, 16) != 0) {\r
5d73d92f 1290 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SELECTED_BOOT_SUPPORTED), gShellDebug1HiiHandle);\r
1291 }\r
1292\r
a1d4bfcc 1293 if (BIT (Chara, 17) != 0) {\r
5d73d92f 1294 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_ROM_SOCKETED), gShellDebug1HiiHandle);\r
1295 }\r
1296\r
a1d4bfcc 1297 if (BIT (Chara, 18) != 0) {\r
5d73d92f 1298 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_FROM_PC_CARD), gShellDebug1HiiHandle);\r
1299 }\r
1300\r
a1d4bfcc 1301 if (BIT (Chara, 19) != 0) {\r
5d73d92f 1302 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EDD_ENHANCED_DRIVER), gShellDebug1HiiHandle);\r
1303 }\r
1304\r
a1d4bfcc 1305 if (BIT (Chara, 20) != 0) {\r
5d73d92f 1306 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_JAPANESE_FLOPPY_NEC), gShellDebug1HiiHandle);\r
1307 }\r
1308\r
a1d4bfcc 1309 if (BIT (Chara, 21) != 0) {\r
5d73d92f 1310 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_JAPANESE_FLOPPY_TOSHIBA), gShellDebug1HiiHandle);\r
1311 }\r
1312\r
a1d4bfcc 1313 if (BIT (Chara, 22) != 0) {\r
5d73d92f 1314 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FLOPPY_SERVICES_SUPPORTED), gShellDebug1HiiHandle);\r
1315 }\r
1316\r
a1d4bfcc 1317 if (BIT (Chara, 23) != 0) {\r
5d73d92f 1318 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_POINT_TWO_MB), gShellDebug1HiiHandle);\r
1319 }\r
1320\r
a1d4bfcc 1321 if (BIT (Chara, 24) != 0) {\r
5d73d92f 1322 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_720_KB), gShellDebug1HiiHandle);\r
1323 }\r
1324\r
a1d4bfcc 1325 if (BIT (Chara, 25) != 0) {\r
5d73d92f 1326 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TWO_POINT_EIGHT_EIGHT_MB), gShellDebug1HiiHandle);\r
1327 }\r
1328\r
a1d4bfcc 1329 if (BIT (Chara, 26) != 0) {\r
5d73d92f 1330 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRINT_SCREEN_SUPPORT), gShellDebug1HiiHandle);\r
1331 }\r
1332\r
a1d4bfcc 1333 if (BIT (Chara, 27) != 0) {\r
5d73d92f 1334 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_KEYBOARD_SERV_SUPPORT), gShellDebug1HiiHandle);\r
1335 }\r
1336\r
a1d4bfcc 1337 if (BIT (Chara, 28) != 0) {\r
5d73d92f 1338 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SERIAL_SERVICES_SUPPORT), gShellDebug1HiiHandle);\r
1339 }\r
1340\r
a1d4bfcc 1341 if (BIT (Chara, 29) != 0) {\r
5d73d92f 1342 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRINTER_SERVICES_SUPPORT), gShellDebug1HiiHandle);\r
1343 }\r
1344\r
a1d4bfcc 1345 if (BIT (Chara, 30) != 0) {\r
5d73d92f 1346 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MONO_VIDEO_SUPPORT), gShellDebug1HiiHandle);\r
1347 }\r
1348\r
a1d4bfcc 1349 if (BIT (Chara, 31) != 0) {\r
5d73d92f 1350 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NEC_PC_98), gShellDebug1HiiHandle);\r
1351 }\r
1352 //\r
a1d4bfcc 1353 // Just print the Reserved\r
5d73d92f 1354 //\r
1355 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_32_47), gShellDebug1HiiHandle);\r
1356 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_48_64), gShellDebug1HiiHandle);\r
1357}\r
1358\r
a1d4bfcc 1359/**\r
1360 Display Bios Characteristice extensions1 information.\r
1361\r
1362 @param[in] Byte1 The information.\r
1363 @param[in] Option The optional information.\r
1364**/\r
5d73d92f 1365VOID\r
1366DisplayBiosCharacteristicsExt1 (\r
a1d4bfcc 1367 IN UINT8 Byte1,\r
1368 IN UINT8 Option\r
5d73d92f 1369 )\r
1370{\r
1371 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_EXTENSION), gShellDebug1HiiHandle);\r
1372 //\r
1373 // Print option\r
1374 //\r
a1d4bfcc 1375 PRINT_INFO_OPTION (Byte1, Option);\r
5d73d92f 1376\r
1377 //\r
1378 // check bit and print\r
1379 //\r
a1d4bfcc 1380 if (BIT (Byte1, 0) != 0) {\r
5d73d92f 1381 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ACPI_SUPPORTED), gShellDebug1HiiHandle);\r
1382 }\r
1383\r
a1d4bfcc 1384 if (BIT (Byte1, 1) != 0) {\r
5d73d92f 1385 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_USB_LEGACY_SUPPORTED), gShellDebug1HiiHandle);\r
1386 }\r
1387\r
a1d4bfcc 1388 if (BIT (Byte1, 2) != 0) {\r
5d73d92f 1389 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AGP_SUPPORTED), gShellDebug1HiiHandle);\r
1390 }\r
1391\r
a1d4bfcc 1392 if (BIT (Byte1, 3) != 0) {\r
5d73d92f 1393 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_I2O_BOOT_SUPPORTED), gShellDebug1HiiHandle);\r
1394 }\r
1395\r
a1d4bfcc 1396 if (BIT (Byte1, 4) != 0) {\r
5d73d92f 1397 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LS_120_BOOT_SUPPORTED), gShellDebug1HiiHandle);\r
1398 }\r
1399\r
a1d4bfcc 1400 if (BIT (Byte1, 5) != 0) {\r
5d73d92f 1401 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ATAPI_ZIP_DRIVE), gShellDebug1HiiHandle);\r
1402 }\r
1403\r
a1d4bfcc 1404 if (BIT (Byte1, 6) != 0) {\r
5d73d92f 1405 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_1394_BOOT_SUPPORTED), gShellDebug1HiiHandle);\r
1406 }\r
1407\r
a1d4bfcc 1408 if (BIT (Byte1, 7) != 0) {\r
5d73d92f 1409 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SMART_BATTERY_SUPPORTED), gShellDebug1HiiHandle);\r
1410 }\r
1411}\r
1412\r
a1d4bfcc 1413/**\r
1414 Display Bios Characteristice extensions2 information.\r
1415\r
1416 @param[in] byte2 The information.\r
1417 @param[in] Option The optional information.\r
1418**/\r
5d73d92f 1419VOID\r
1420DisplayBiosCharacteristicsExt2 (\r
a1d4bfcc 1421 IN UINT8 byte2,\r
1422 IN UINT8 Option\r
5d73d92f 1423 )\r
1424{\r
1425 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_EXTENSION_2), gShellDebug1HiiHandle);\r
1426 //\r
1427 // Print option\r
1428 //\r
1429 PRINT_INFO_OPTION (byte2, Option);\r
1430\r
1431 if (BIT (byte2, 0) != 0) {\r
1432 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_BOOT_SPEC_SUPP), gShellDebug1HiiHandle);\r
1433 }\r
1434\r
1435 if (BIT (byte2, 1) != 0) {\r
1436 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FUNCTION_KEY_INIT), gShellDebug1HiiHandle);\r
1437 }\r
1438\r
187cb3dd
SZ
1439 if (AE_SMBIOS_VERSION (0x2, 0x4)) {\r
1440 if (BIT (byte2, 2) != 0) {\r
1441 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLE_TAR_CONT_DIST), gShellDebug1HiiHandle);\r
1442 }\r
1443 if (AE_SMBIOS_VERSION (0x2, 0x7)) {\r
1444 if (BIT (byte2, 3) != 0) {\r
1445 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UEFI_SPEC_SUPPORT), gShellDebug1HiiHandle);\r
1446 }\r
1447 if (BIT (byte2, 4) != 0) {\r
1448 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VIRTUAL_MACHINE), gShellDebug1HiiHandle);\r
1449 }\r
1450 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 5);\r
1451 } else {\r
1452 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 3);\r
1453 }\r
1454 } else {\r
1455 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 2);\r
1456 }\r
5d73d92f 1457}\r
1458\r
a1d4bfcc 1459/**\r
1460 Display Processor Information (Type 4) information.\r
1461\r
1462 @param[in] Family The family value.\r
1463 @param[in] Option The option value.\r
1464**/\r
5d73d92f 1465VOID\r
1466DisplayProcessorFamily (\r
1467 UINT8 Family,\r
1468 UINT8 Option\r
1469 )\r
1470{\r
1471 //\r
1472 // Print prompt message\r
1473 //\r
1474 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle);\r
1475 //\r
1476 // Print option\r
1477 //\r
1478 PRINT_INFO_OPTION (Family, Option);\r
1479\r
1480 //\r
1481 // Use switch to check\r
1482 //\r
1483 switch (Family) {\r
1484 case 0x01:\r
1485 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER), gShellDebug1HiiHandle);\r
1486 break;\r
1487\r
1488 case 0x02:\r
1489 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
1490 break;\r
1491\r
1492 case 0x03:\r
1493 Print (L"8086\n");\r
1494 break;\r
1495\r
1496 case 0x04:\r
1497 Print (L"80286\n");\r
1498 break;\r
1499\r
1500 case 0x05:\r
1501 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL386_PROCESSOR), gShellDebug1HiiHandle);\r
1502 break;\r
1503\r
1504 case 0x06:\r
1505 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL486_PROCESSOR), gShellDebug1HiiHandle);\r
1506 break;\r
1507\r
1508 case 0x07:\r
1509 Print (L"8087\n");\r
1510 break;\r
1511\r
1512 case 0x08:\r
1513 Print (L"80287\n");\r
1514 break;\r
1515\r
1516 case 0x09:\r
1517 Print (L"80387\n");\r
1518 break;\r
1519\r
1520 case 0x0A:\r
1521 Print (L"80487\n");\r
1522 break;\r
1523\r
1524 case 0x0B:\r
1525 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PROC_FAMILY), gShellDebug1HiiHandle);\r
1526 break;\r
1527\r
1528 case 0x0C:\r
1529 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PRO_PROC), gShellDebug1HiiHandle);\r
1530 break;\r
1531\r
1532 case 0x0D:\r
1533 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_II_PROC), gShellDebug1HiiHandle);\r
1534 break;\r
1535\r
1536 case 0x0E:\r
1537 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PROC_MMX), gShellDebug1HiiHandle);\r
1538 break;\r
1539\r
1540 case 0x0F:\r
1541 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CELERON_PROC), gShellDebug1HiiHandle);\r
1542 break;\r
1543\r
1544 case 0x10:\r
1545 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_XEON_PROC), gShellDebug1HiiHandle);\r
1546 break;\r
1547\r
1548 case 0x11:\r
1549 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_III_PROC), gShellDebug1HiiHandle);\r
1550 break;\r
1551\r
1552 case 0x12:\r
1553 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_M1_FAMILY), gShellDebug1HiiHandle);\r
1554 break;\r
1555\r
187cb3dd
SZ
1556 case 0x13:\r
1557 Print (L"M2 Family\n");\r
1558 break;\r
1559\r
1560 case 0x14:\r
1561 Print (L"Intel Celeron M\n");\r
1562 break;\r
1563\r
1564 case 0x15:\r
1565 Print (L"Intel Pentium 4 HT\n");\r
1566 break;\r
1567\r
5d73d92f 1568 case 0x18:\r
1569 Print (L"AMD Duron\n");\r
1570 break;\r
1571\r
1572 case 0x19:\r
1573 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_K5_FAMILY), gShellDebug1HiiHandle);\r
1574 break;\r
1575\r
187cb3dd
SZ
1576 case 0x1A:\r
1577 Print (L"K6 Family\n");\r
1578 break;\r
1579\r
1580 case 0x1B:\r
1581 Print (L"K6-2\n");\r
1582 break;\r
1583\r
1584 case 0x1C:\r
1585 Print (L"K6-3\n");\r
1586 break;\r
1587\r
1588 case 0x1D:\r
1589 Print (L"AMD Althon Processor Family\n");\r
1590 break;\r
1591\r
1592 case 0x1E:\r
1593 Print (L"AMD 29000 Family\n");\r
1594 break;\r
1595\r
1596 case 0x1F:\r
1597 Print (L"K6-2+\n");\r
1598 break;\r
1599\r
5d73d92f 1600 case 0x20:\r
1601 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_FAMILY), gShellDebug1HiiHandle);\r
1602 break;\r
1603\r
1604 case 0x21:\r
1605 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_601), gShellDebug1HiiHandle);\r
1606 break;\r
1607\r
1608 case 0x22:\r
1609 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_603), gShellDebug1HiiHandle);\r
1610 break;\r
1611\r
1612 case 0x23:\r
1613 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_603_PLUS), gShellDebug1HiiHandle);\r
1614 break;\r
1615\r
1616 case 0x24:\r
1617 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_604), gShellDebug1HiiHandle);\r
1618 break;\r
1619\r
1620 case 0x25:\r
1621 Print (L"Power PC 620\n");\r
1622 break;\r
1623\r
1624 case 0x26:\r
1625 Print (L"Power PC 704\n");\r
1626 break;\r
1627\r
1628 case 0x27:\r
1629 Print (L"Power PC 750\n");\r
1630 break;\r
1631\r
1632 case 0x28:\r
1633 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_DUO), gShellDebug1HiiHandle);\r
1634 break;\r
1635\r
1636 case 0x29:\r
1637 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_DUO_MOBILE), gShellDebug1HiiHandle);\r
1638 break;\r
1639\r
1640 case 0x2A:\r
1641 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_SOLO_MOBILE), gShellDebug1HiiHandle);\r
1642 break;\r
1643\r
1644 case 0x2B:\r
1645 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_ATOM), gShellDebug1HiiHandle);\r
1646 break;\r
1647\r
c326e078
SZ
1648 case 0x2C:\r
1649 Print (L"Intel(R) Core(TM) M processor\n");\r
1650 break;\r
1651\r
44175ee7
SZ
1652 case 0x2D:\r
1653 Print (L"Intel(R) Core(TM) m3 processor\n");\r
1654 break;\r
1655\r
1656 case 0x2E:\r
1657 Print (L"Intel(R) Core(TM) m5 processor\n");\r
1658 break;\r
1659\r
1660 case 0x2F:\r
1661 Print (L"Intel(R) Core(TM) m7 processor\n");\r
1662 break;\r
1663\r
5d73d92f 1664 case 0x30:\r
1665 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ALPHA_FAMILY_2), gShellDebug1HiiHandle);\r
1666 break;\r
1667\r
1668 case 0x31:\r
1669 Print (L"Alpha 21064\n");\r
1670 break;\r
1671\r
1672 case 0x32:\r
1673 Print (L"Alpha 21066\n");\r
1674 break;\r
1675\r
1676 case 0x33:\r
1677 Print (L"Alpha 21164\n");\r
1678 break;\r
1679\r
1680 case 0x34:\r
1681 Print (L"Alpha 21164PC\n");\r
1682 break;\r
1683\r
1684 case 0x35:\r
1685 Print (L"Alpha 21164a\n");\r
1686 break;\r
1687\r
1688 case 0x36:\r
1689 Print (L"Alpha 21264\n");\r
1690 break;\r
1691\r
1692 case 0x37:\r
1693 Print (L"Alpha 21364\n");\r
1694 break;\r
1695\r
187cb3dd
SZ
1696 case 0x38:\r
1697 Print (L"AMD Turion II Ultra Dual-Core Mobile M Processor Family\n");\r
1698 break;\r
1699\r
1700 case 0x39:\r
1701 Print (L"AMD Turion II Dual-Core Mobile M Processor Family\n");\r
1702 break;\r
1703\r
1704 case 0x3A:\r
1705 Print (L"AMD Althon II Dual-Core M Processor Family\n");\r
1706 break;\r
1707\r
1708 case 0x3B:\r
1709 Print (L"AMD Opteron 6100 Series Processor\n");\r
1710 break;\r
1711\r
1712 case 0x3C:\r
1713 Print (L"AMD Opteron 4100 Series Processor\n");\r
1714 break;\r
1715\r
1716 case 0x3D:\r
1717 Print (L"AMD Opteron 6200 Series Processor\n");\r
1718 break;\r
1719\r
1720 case 0x3E:\r
1721 Print (L"AMD Opteron 4200 Series Processor\n");\r
1722 break;\r
1723\r
073fe587
SEHM
1724 case 0x3F:\r
1725 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_FX_SERIES), gShellDebug1HiiHandle);\r
1726 break;\r
1727\r
5d73d92f 1728 case 0x40:\r
1729 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MIPS_FAMILY), gShellDebug1HiiHandle);\r
1730 break;\r
1731\r
1732 case 0x41:\r
1733 Print (L"MIPS R4000\n");\r
1734 break;\r
1735\r
1736 case 0x42:\r
1737 Print (L"MIPS R4200\n");\r
1738 break;\r
1739\r
1740 case 0x43:\r
1741 Print (L"MIPS R4400\n");\r
1742 break;\r
1743\r
1744 case 0x44:\r
1745 Print (L"MIPS R4600\n");\r
1746 break;\r
1747\r
1748 case 0x45:\r
1749 Print (L"MIPS R10000\n");\r
1750 break;\r
1751\r
187cb3dd
SZ
1752 case 0x46:\r
1753 Print (L"AMD C-Series Processor\n");\r
1754 break;\r
1755\r
1756 case 0x47:\r
1757 Print (L"AMD E-Series Processor\n");\r
1758 break;\r
1759\r
1760 case 0x48:\r
073fe587 1761 Print (L"AMD A-Series Processor\n");\r
187cb3dd
SZ
1762 break;\r
1763\r
1764 case 0x49:\r
1765 Print (L"AMD G-Series Processor\n");\r
1766 break;\r
1767\r
073fe587
SEHM
1768 case 0x4A:\r
1769 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_Z_SERIES), gShellDebug1HiiHandle);\r
1770 break;\r
1771\r
1772 case 0x4B:\r
1773 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_R_SERIES), gShellDebug1HiiHandle);\r
1774 break;\r
1775\r
1776 case 0x4C:\r
1777 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_4300_SERIES), gShellDebug1HiiHandle);\r
1778 break;\r
1779\r
1780 case 0x4D:\r
1781 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_6300_SERIES), gShellDebug1HiiHandle);\r
1782 break;\r
1783\r
1784 case 0x4E:\r
1785 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_3300_SERIES), gShellDebug1HiiHandle);\r
1786 break;\r
1787\r
1788 case 0x4F:\r
1789 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_FIREPRO_SERIES), gShellDebug1HiiHandle);\r
1790 break;\r
1791\r
5d73d92f 1792 case 0x50:\r
1793 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SPARC_FAMILY), gShellDebug1HiiHandle);\r
1794 break;\r
1795\r
1796 case 0x51:\r
1797 Print (L"SuperSparc\n");\r
1798 break;\r
1799\r
1800 case 0x52:\r
1801 Print (L"microSparc II\n");\r
1802 break;\r
1803\r
1804 case 0x53:\r
1805 Print (L"microSparc IIep\n");\r
1806 break;\r
1807\r
1808 case 0x54:\r
1809 Print (L"UltraSparc\n");\r
1810 break;\r
1811\r
1812 case 0x55:\r
1813 Print (L"UltraSparc II\n");\r
1814 break;\r
1815\r
1816 case 0x56:\r
1817 Print (L"UltraSparcIIi\n");\r
1818 break;\r
1819\r
1820 case 0x57:\r
1821 Print (L"UltraSparcIII\n");\r
1822 break;\r
1823\r
1824 case 0x58:\r
1825 Print (L"UltraSparcIIIi\n");\r
1826 break;\r
1827\r
1828 case 0x60:\r
1829 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_68040_FAMILY), gShellDebug1HiiHandle);\r
1830 break;\r
1831\r
1832 case 0x61:\r
1833 Print (L"68xx\n");\r
1834 break;\r
1835\r
1836 case 0x62:\r
1837 Print (L"68000\n");\r
1838 break;\r
1839\r
1840 case 0x63:\r
1841 Print (L"68010\n");\r
1842 break;\r
1843\r
1844 case 0x64:\r
1845 Print (L"68020\n");\r
1846 break;\r
1847\r
1848 case 0x65:\r
1849 Print (L"68030\n");\r
1850 break;\r
1851\r
c326e078
SZ
1852 case 0x66:\r
1853 Print (L"AMD Athlon(TM) X4 Quad-Core Processor Family\n");\r
1854 break;\r
1855\r
1856 case 0x67:\r
1857 Print (L"AMD Opteron(TM) X1000 Series Processor\n");\r
1858 break;\r
1859\r
1860 case 0x68:\r
1861 Print (L"AMD Opteron(TM) X2000 Series APU\n");\r
1862 break;\r
1863\r
44175ee7
SZ
1864 case 0x69:\r
1865 Print (L"AMD Opteron(TM) A-Series Processor\n");\r
1866 break;\r
1867\r
1868 case 0x6A:\r
1869 Print (L"AMD Opteron(TM) X3000 Series APU\n");\r
1870 break;\r
1871\r
5734d486
SZ
1872 case 0x6B:\r
1873 Print (L"AMD Zen Processor Family\n");\r
1874 break;\r
1875\r
5d73d92f 1876 case 0x70:\r
1877 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HOBBIT_FAMILY), gShellDebug1HiiHandle);\r
1878 break;\r
1879\r
1880 case 0x78:\r
1881 Print (L"Crusoe TM5000\n");\r
1882 break;\r
1883\r
1884 case 0x79:\r
1885 Print (L"Crusoe TM3000\n");\r
1886 break;\r
1887\r
1888 case 0x7A:\r
1889 Print (L"Efficeon TM8000\n");\r
1890 break;\r
1891\r
1892 case 0x80:\r
1893 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WEITEK), gShellDebug1HiiHandle);\r
1894 break;\r
1895\r
1896 case 0x82:\r
1897 Print (L"Itanium\n");\r
1898 break;\r
1899\r
1900 case 0x83:\r
1901 Print (L"AMD Athlon64\n");\r
1902 break;\r
1903\r
1904 case 0x84:\r
1905 Print (L"AMD Opteron\n");\r
1906 break;\r
1907\r
1908 case 0x85:\r
1909 Print (L"AMD Sempron\n");\r
1910 break;\r
1911\r
1912 case 0x86:\r
1913 Print (L"AMD Turion64 Mobile\n");\r
1914 break;\r
1915\r
1916 case 0x87:\r
1917 Print (L"Dual-Core AMD Opteron\n");\r
1918 break;\r
1919\r
1920 case 0x88:\r
1921 Print (L"AMD Athlon 64X2 DualCore\n");\r
1922 break;\r
1923\r
1924 case 0x89:\r
1925 Print (L"AMD Turion 64X2 Mobile\n");\r
1926 break;\r
1927\r
1928 case 0x8A:\r
1929 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_QUAD_CORE), gShellDebug1HiiHandle);\r
1930 break;\r
1931\r
1932 case 0x8B:\r
1933 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_THIRD_GENERATION), gShellDebug1HiiHandle);\r
1934 break;\r
1935\r
1936 case 0x8C:\r
1937 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_FX_QUAD_CORE), gShellDebug1HiiHandle);\r
1938 break;\r
1939\r
1940 case 0x8D:\r
1941 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_X4_QUAD_CORE), gShellDebug1HiiHandle);\r
1942 break;\r
1943\r
1944 case 0x8E:\r
1945 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_X2_DUAL_CORE), gShellDebug1HiiHandle);\r
1946 break;\r
1947\r
1948 case 0x8F:\r
1949 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_ATHLON_X2_DUAL_CORE), gShellDebug1HiiHandle);\r
1950 break;\r
1951\r
1952 case 0x90:\r
1953 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PA_RISC_FAMILY), gShellDebug1HiiHandle);\r
1954 break;\r
1955\r
187cb3dd
SZ
1956 case 0x91:\r
1957 Print (L"PA-RISC 8500\n");\r
1958 break;\r
1959\r
1960 case 0x92:\r
1961 Print (L"PA-RISC 8000\n");\r
1962 break;\r
1963\r
1964 case 0x93:\r
1965 Print (L"PA-RISC 7300LC\n");\r
1966 break;\r
1967\r
1968 case 0x94:\r
1969 Print (L"PA-RISC 7200\n");\r
1970 break;\r
1971\r
1972 case 0x95:\r
1973 Print (L"PA-RISC 7100LC\n");\r
1974 break;\r
1975\r
1976 case 0x96:\r
1977 Print (L"PA-RISC 7100\n");\r
1978 break;\r
1979\r
5d73d92f 1980 case 0xA0:\r
1981 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_V30_FAMILY), gShellDebug1HiiHandle);\r
1982 break;\r
1983\r
1984 case 0xA1:\r
1985 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3200_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
1986 break;\r
1987\r
1988 case 0xA2:\r
1989 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3000_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
1990 break;\r
1991\r
1992 case 0xA3:\r
1993 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5300_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
1994 break;\r
1995\r
1996 case 0xA4:\r
1997 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5100_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
1998 break;\r
1999\r
2000 case 0xA5:\r
2001 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5000_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2002 break;\r
2003\r
2004 case 0xA6:\r
2005 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_LV_DUAL_CORE), gShellDebug1HiiHandle);\r
2006 break;\r
2007\r
2008 case 0xA7:\r
2009 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_ULV_DUAL_CORE), gShellDebug1HiiHandle);\r
2010 break;\r
2011\r
2012 case 0xA8:\r
2013 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7100_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2014 break;\r
2015\r
2016 case 0xA9:\r
2017 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5400_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2018 break;\r
2019\r
2020 case 0xAA:\r
2021 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_QUAD_CORE), gShellDebug1HiiHandle);\r
2022 break;\r
2023\r
2024 case 0xAB:\r
2025 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5200_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2026 break;\r
2027\r
2028 case 0xAC:\r
2029 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7200_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2030 break;\r
2031\r
2032 case 0xAD:\r
2033 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7300_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2034 break;\r
2035\r
2036 case 0xAE:\r
2037 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7400_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2038 break;\r
2039\r
2040 case 0xAF:\r
2041 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7400_SERIES_MULTI_CORE), gShellDebug1HiiHandle);\r
2042 break;\r
2043\r
2044 case 0xB0:\r
2045 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_III_XEON), gShellDebug1HiiHandle);\r
2046 break;\r
2047\r
187cb3dd
SZ
2048 case 0xB1:\r
2049 Print (L"Pentium III Processorwith Intel SpeedStep Technology\n");\r
2050 break;\r
2051\r
2052 case 0xB2:\r
2053 Print (L"Pentium 4 processor\n");\r
2054 break;\r
2055\r
2056 case 0xB3:\r
2057 Print (L"Intel Xeon Processor\n");\r
2058 break;\r
2059\r
2060 case 0xB4:\r
2061 Print (L"AS400 Family\n");\r
2062 break;\r
2063\r
2064 case 0xB5:\r
2065 Print (L"Intel Xeon processor MP\n");\r
2066 break;\r
2067\r
2068 case 0xB6:\r
2069 Print (L"AMD Althon XP Processor Family\n");\r
2070 break;\r
2071\r
2072 case 0xB7:\r
2073 Print (L"AMD Althon MP Promcessor Family\n");\r
2074 break;\r
2075\r
2076 case 0xB8:\r
2077 Print (L"Intel Itanium 2 processor\n");\r
2078 break;\r
2079\r
2080 case 0xB9:\r
2081 Print (L"Intel Penium M processor\n");\r
2082 break;\r
2083\r
2084 case 0xBA:\r
2085 Print (L"Intel Celeron D processor\n");\r
2086 break;\r
2087\r
2088 case 0xBB:\r
2089 Print (L"Intel Pentium D processor\n");\r
2090 break;\r
2091\r
2092 case 0xBC:\r
2093 Print (L"Intel Pentium Processor Extreme Edition\n");\r
2094 break;\r
2095\r
2096 case 0xBD:\r
2097 Print (L"Intel Core Solo Processor\n");\r
2098 break;\r
2099\r
2100 case 0xBF:\r
2101 Print (L"Intel Core 2 Duo Processor\n");\r
2102 break;\r
2103\r
5d73d92f 2104 case 0xC0:\r
2105 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_SOLO), gShellDebug1HiiHandle);\r
2106 break;\r
2107\r
2108 case 0xC1:\r
2109 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_EXTREME), gShellDebug1HiiHandle);\r
2110 break;\r
2111\r
2112 case 0xC2:\r
2113 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_QUAD), gShellDebug1HiiHandle);\r
2114 break;\r
2115\r
2116 case 0xC3:\r
2117 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_EXTREME), gShellDebug1HiiHandle);\r
2118 break;\r
2119\r
2120 case 0xC4:\r
2121 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_DUO_MOBILE), gShellDebug1HiiHandle);\r
2122 break;\r
2123\r
2124 case 0xC5:\r
2125 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_SOLO_MOBILE), gShellDebug1HiiHandle);\r
2126 break;\r
2127\r
2128 case 0xC6:\r
2129 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_I7), gShellDebug1HiiHandle);\r
2130 break;\r
2131\r
2132 case 0xC7:\r
2133 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CELERON_DUAL_CORE), gShellDebug1HiiHandle);\r
2134 break;\r
2135\r
2136 case 0xC8:\r
2137 Print (L"IBM 390\n");\r
2138 break;\r
2139\r
2140 case 0xC9:\r
2141 Print (L"G4\n");\r
2142 break;\r
2143\r
2144 case 0xCA:\r
2145 Print (L"G5\n");\r
2146 break;\r
2147\r
2148 case 0xCB:\r
2149 Print (L"G6\n");\r
2150 break;\r
2151\r
2152 case 0xCC:\r
073fe587 2153 Print (L"zArchitecture\n");\r
5d73d92f 2154 break;\r
2155\r
187cb3dd
SZ
2156 case 0xCD:\r
2157 Print (L"Intel Core i5 processor\n");\r
2158 break;\r
2159\r
2160 case 0xCE:\r
2161 Print (L"Intel Core i3 processor\n");\r
2162 break;\r
2163\r
7475ac51
DB
2164 case 0xCF:\r
2165 Print (L"Intel Core i9 processor\n");\r
2166 break;\r
2167\r
5d73d92f 2168 case 0xD2:\r
2169 Print (L"ViaC7M\n");\r
2170 break;\r
2171\r
2172 case 0xD3:\r
2173 Print (L"ViaC7D\n");\r
2174 break;\r
2175\r
2176 case 0xD4:\r
2177 Print (L"ViaC7\n");\r
2178 break;\r
2179\r
2180 case 0xD5:\r
2181 Print (L"Eden\n");\r
2182 break;\r
2183\r
2184 case 0xD6:\r
2185 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_MULTI_CORE), gShellDebug1HiiHandle);\r
2186 break;\r
2187\r
2188 case 0xD7:\r
2189 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2190 break;\r
2191\r
2192 case 0xD8:\r
2193 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2194 break;\r
2195\r
2196 case 0xDA:\r
2197 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2198 break;\r
2199\r
2200 case 0xDB:\r
2201 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2202 break;\r
2203\r
2204 case 0xDD:\r
2205 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2206 break;\r
2207\r
2208 case 0xDE:\r
2209 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2210 break;\r
2211\r
2212 case 0xDF:\r
2213 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_MULTI_CORE), gShellDebug1HiiHandle);\r
2214 break;\r
2215\r
187cb3dd
SZ
2216 case 0xE0:\r
2217 Print (L"Multi-Core Intel Xeon processor 3400 Series\n");\r
2218 break;\r
2219\r
073fe587
SEHM
2220 case 0xE4:\r
2221 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_3000_SERIES), gShellDebug1HiiHandle);\r
2222 break;\r
2223\r
2224 case 0xE5:\r
2225 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_SEMPRON_II), gShellDebug1HiiHandle);\r
2226 break;\r
2227\r
2228\r
5d73d92f 2229 case 0xE6:\r
2230 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_EMBEDDED_OPTERON_QUAD_CORE), gShellDebug1HiiHandle);\r
2231 break;\r
2232\r
2233 case 0xE7:\r
2234 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_TRIPLE_CORE), gShellDebug1HiiHandle);\r
2235 break;\r
2236\r
2237 case 0xE8:\r
2238 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_TURION_ULTRA_DUAL_CORE_MOBILE), gShellDebug1HiiHandle);\r
2239 break;\r
2240\r
2241 case 0xE9:\r
2242 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_TURION_DUAL_CORE_MOBILE), gShellDebug1HiiHandle);\r
2243 break;\r
2244\r
2245 case 0xEA:\r
2246 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_ATHLON_DUAL_CORE), gShellDebug1HiiHandle);\r
2247 break;\r
2248\r
2249 case 0xEB:\r
2250 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_SEMPRON_SI), gShellDebug1HiiHandle);\r
2251 break;\r
2252\r
187cb3dd
SZ
2253 case 0xEC:\r
2254 Print (L"AMD Phenom II Processor Family\n");\r
2255 break;\r
2256\r
2257 case 0xED:\r
2258 Print (L"AMD Althon II Processor Family\n");\r
2259 break;\r
2260\r
2261 case 0xEE:\r
2262 Print (L"Six-Core AMD Opteron Processor Family\n");\r
2263 break;\r
2264\r
2265 case 0xEF:\r
2266 Print (L"AMD Sempron M Processor Family\n");\r
2267 break;\r
2268\r
5d73d92f 2269 case 0xFA:\r
2270 Print (L"i860\n");\r
2271 break;\r
2272\r
2273 case 0xFB:\r
2274 Print (L"i960\n");\r
2275 break;\r
2276\r
2277 default:\r
187cb3dd 2278 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY), gShellDebug1HiiHandle);\r
5d73d92f 2279 }\r
2280 //\r
2281 // end switch\r
2282 //\r
2283}\r
2284\r
a1d4bfcc 2285/**\r
2286 Display processor family information.\r
2287\r
2288 @param[in] Family2 The family value.\r
2289 @param[in] Option The option value.\r
2290**/\r
5d73d92f 2291VOID\r
2292DisplayProcessorFamily2 (\r
a1d4bfcc 2293 IN UINT16 Family2,\r
2294 IN UINT8 Option\r
5d73d92f 2295 )\r
2296{\r
2297 //\r
2298 // Print prompt message\r
2299 //\r
2300 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle);\r
2301\r
2302 //\r
2303 // Print option\r
2304 //\r
2305 PRINT_INFO_OPTION (Family2, Option);\r
2306\r
2307 //\r
2308 // Use switch to check\r
2309 //\r
2310 switch (Family2) {\r
44175ee7
SZ
2311 case 0x100:\r
2312 Print (L"ARMv7\n");\r
2313 break;\r
2314\r
2315 case 0x101:\r
2316 Print (L"ARMv8\n");\r
2317 break;\r
2318\r
5d73d92f 2319 case 0x104:\r
2320 Print (L"SH-3\n");\r
2321 break;\r
2322\r
2323 case 0x105:\r
2324 Print (L"SH-4\n");\r
2325 break;\r
2326\r
2327 case 0x118:\r
2328 Print (L"ARM\n");\r
2329 break;\r
2330\r
2331 case 0x119:\r
2332 Print (L"StrongARM\n");\r
2333 break;\r
2334\r
2335 case 0x12C:\r
2336 Print (L"6x86\n");\r
2337 break;\r
2338\r
2339 case 0x12D:\r
2340 Print (L"MediaGX\n");\r
2341 break;\r
2342\r
2343 case 0x12E:\r
2344 Print (L"MII\n");\r
2345 break;\r
2346\r
2347 case 0x140:\r
2348 Print (L"WinChip\n");\r
2349 break;\r
2350\r
2351 case 0x15E:\r
2352 Print (L"DSP\n");\r
2353 break;\r
2354\r
2355 case 0x1F4:\r
2356 Print (L"Video Processor\n");\r
2357 break;\r
2358\r
2359 default:\r
2360 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY), gShellDebug1HiiHandle);\r
2361 }\r
2362\r
2363}\r
2364\r
a1d4bfcc 2365/**\r
2366 Display processor voltage information.\r
2367\r
2368 @param[in] Voltage The Voltage.\r
e0c2cc6f 2369 Bit 7 Set to 0, indicating 'legacy' mode for processor voltage\r
2370 Bits 6:4 Reserved, must be zero\r
2371 Bits 3:0 Voltage Capability.\r
2372 A Set bit indicates that the voltage is supported.\r
2373 Bit 0 - 5V\r
2374 Bit 1 - 3.3V\r
2375 Bit 2 - 2.9V\r
2376 Bit 3 - Reserved, must be zero.\r
2377\r
2378 Note:\r
2379 Setting of multiple bits indicates the socket is configurable\r
2380 If bit 7 is set to 1, the remaining seven bits of the field are set to\r
2381 contain the processor's current voltage times 10.\r
2382 For example, the field value for a processor voltage of 1.8 volts would be\r
2383 92h = 80h + (1.8 * 10) = 80h + 18 = 80h +12h.\r
a1d4bfcc 2384\r
2385 @param[in] Option The option.\r
2386**/\r
5d73d92f 2387VOID\r
2388DisplayProcessorVoltage (\r
a1d4bfcc 2389 IN UINT8 Voltage,\r
2390 IN UINT8 Option\r
5d73d92f 2391 )\r
5d73d92f 2392{\r
2393 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_INFO), gShellDebug1HiiHandle);\r
2394 //\r
2395 // Print option\r
2396 //\r
2397 PRINT_INFO_OPTION (Voltage, Option);\r
2398\r
2399 if (BIT (Voltage, 7) != 0) {\r
2400 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_CURRENT_VOLTAGE), gShellDebug1HiiHandle, (Voltage - 0x80));\r
2401 } else {\r
2402 if (BIT (Voltage, 0) != 0) {\r
2403 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_5V_SUPOPRTED), gShellDebug1HiiHandle);\r
2404 }\r
2405\r
2406 if (BIT (Voltage, 1) != 0) {\r
2407 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_33V_SUPPORTED), gShellDebug1HiiHandle);\r
2408 }\r
2409\r
2410 if (BIT (Voltage, 2) != 0) {\r
2411 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_29V_SUPPORTED), gShellDebug1HiiHandle);\r
2412 }\r
2413 //\r
2414 // check the reserved zero bits:\r
2415 //\r
2416 if (BIT (Voltage, 3) != 0) {\r
2417 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT3_NOT_ZERO), gShellDebug1HiiHandle);\r
2418 }\r
2419\r
2420 if (BIT (Voltage, 4) != 0) {\r
2421 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle);\r
2422 }\r
2423\r
2424 if (BIT (Voltage, 5) != 0) {\r
2425 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT5_NOT_ZERO), gShellDebug1HiiHandle);\r
2426 }\r
2427\r
2428 if (BIT (Voltage, 6) != 0) {\r
2429 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT6_NOT_ZERO), gShellDebug1HiiHandle);\r
2430 }\r
2431 }\r
2432}\r
2433\r
a1d4bfcc 2434/**\r
2435 Display processor information.\r
2436\r
2437 @param[in] Status The status.\r
e0c2cc6f 2438Bit 7 Reserved, must be 0\r
187cb3dd
SZ
2439Bit 6 CPU Socket Populated\r
2440 1 - CPU Socket Populated\r
2441 0 - CPU Socket Unpopulated\r
2442Bits 5:3 Reserved, must be zero\r
2443Bits 2:0 CPU Status\r
e0c2cc6f 2444 0h - Unknown\r
2445 1h - CPU Enabled\r
2446 2h - CPU Disabled by User via BIOS Setup\r
2447 3h - CPU Disabled By BIOS (POST Error)\r
2448 4h - CPU is Idle, waiting to be enabled.\r
2449 5-6h - Reserved\r
2450 7h - Other\r
a1d4bfcc 2451\r
2452 @param[in] Option The option\r
2453**/\r
5d73d92f 2454VOID\r
2455DisplayProcessorStatus (\r
a1d4bfcc 2456 IN UINT8 Status,\r
2457 IN UINT8 Option\r
5d73d92f 2458 )\r
5d73d92f 2459{\r
2460 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_STATUS), gShellDebug1HiiHandle);\r
2461 PRINT_INFO_OPTION (Status, Option);\r
2462\r
2463 if (BIT (Status, 7) != 0) {\r
187cb3dd 2464 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT7_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2465 } else if (BIT (Status, 5) != 0) {\r
187cb3dd 2466 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT5_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2467 } else if (BIT (Status, 4) != 0) {\r
187cb3dd 2468 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2469 } else if (BIT (Status, 3) != 0) {\r
187cb3dd 2470 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT3_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2471 }\r
2472 //\r
2473 // Check BIT 6\r
2474 //\r
2475 if (BIT (Status, 6) != 0) {\r
2476 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_POPULATED), gShellDebug1HiiHandle);\r
2477 } else {\r
2478 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_UNPOPULATED), gShellDebug1HiiHandle);\r
2479 }\r
2480 //\r
2481 // Check BITs 2:0\r
2482 //\r
2483 switch (Status & 0x07) {\r
2484 case 0:\r
2485 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
2486 break;\r
2487\r
2488 case 1:\r
2489 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_ENABLED), gShellDebug1HiiHandle);\r
2490 break;\r
2491\r
2492 case 2:\r
2493 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_DISABLED_BY_USER), gShellDebug1HiiHandle);\r
2494 break;\r
2495\r
2496 case 3:\r
2497 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_DIABLED_BY_BIOS), gShellDebug1HiiHandle);\r
2498 break;\r
2499\r
2500 case 4:\r
2501 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_IDLE), gShellDebug1HiiHandle);\r
2502 break;\r
2503\r
2504 case 7:\r
2505 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHERS), gShellDebug1HiiHandle);\r
2506 break;\r
2507\r
2508 default:\r
2509 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle);\r
2510 }\r
2511}\r
2512\r
a1d4bfcc 2513/**\r
2514 Display information about Memory Controller Information (Type 5).\r
2515\r
2516 @param[in] Size Memory size.\r
2517 @param[in] SlotNum Which slot is this about.\r
2518 @param[in] Option Option for the level of detail output required.\r
2519**/\r
5d73d92f 2520VOID\r
2521DisplayMaxMemoryModuleSize (\r
a1d4bfcc 2522 IN UINT8 Size,\r
2523 IN UINT8 SlotNum,\r
2524 IN UINT8 Option\r
5d73d92f 2525 )\r
2526{\r
2527 UINTN MaxSize;\r
2528 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SIZE_LARGEST_MEM), gShellDebug1HiiHandle);\r
2529 //\r
2530 // MaxSize is determined by follow formula\r
2531 //\r
2532 MaxSize = (UINTN) 1 << Size;\r
2533 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), gShellDebug1HiiHandle, MaxSize);\r
2534\r
2535 if (Option >= SHOW_DETAIL) {\r
2536 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MAX_AMOUNT_MEM), gShellDebug1HiiHandle);\r
2537 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), gShellDebug1HiiHandle, MaxSize, SlotNum, MaxSize * SlotNum);\r
2538 }\r
2539}\r
2540\r
a1d4bfcc 2541/**\r
2542 Display information about memory configuration handles.\r
2543\r
2544 @param[in] Handles The buffer of handles to output info on.\r
2545 @param[in] SlotNum The number of handles in the above buffer.\r
2546 @param[in] Option Option for the level of detail output required.\r
2547**/\r
5d73d92f 2548VOID\r
2549DisplayMemoryModuleConfigHandles (\r
a1d4bfcc 2550 IN UINT16 *Handles,\r
2551 IN UINT8 SlotNum,\r
2552 IN UINT8 Option\r
5d73d92f 2553 )\r
2554{\r
2555 UINT8 Index;\r
2556 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLES_CONTROLLED), gShellDebug1HiiHandle, SlotNum);\r
2557\r
2558 if (Option >= SHOW_DETAIL) {\r
2559 //\r
2560 // No handle, Handles is INVALID.\r
2561 //\r
2562 if (SlotNum == 0) {\r
2563 return ;\r
2564 }\r
2565\r
2566 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLES_LIST_CONTROLLED), gShellDebug1HiiHandle);\r
2567 for (Index = 0; Index < SlotNum; Index++) {\r
2568 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLE), gShellDebug1HiiHandle, Index + 1, Handles[Index]);\r
2569 }\r
2570 }\r
2571}\r
a1d4bfcc 2572\r
2573/**\r
2574 Display Memory Module Information (Type 6).\r
2575\r
2576 @param[in] BankConnections\r
2577 @param[in] Option\r
2578**/\r
5d73d92f 2579VOID\r
2580DisplayMmBankConnections (\r
a1d4bfcc 2581 IN UINT8 BankConnections,\r
2582 IN UINT8 Option\r
5d73d92f 2583 )\r
2584{\r
2585 UINT8 High;\r
2586 UINT8 Low;\r
2587\r
2588 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_CONNECTIONS), gShellDebug1HiiHandle);\r
2589 //\r
2590 // Print option\r
2591 //\r
2592 PRINT_INFO_OPTION (BankConnections, Option);\r
2593\r
2594 //\r
2595 // Divide it to high and low\r
2596 //\r
2597 High = (UINT8) (BankConnections & 0xF0);\r
2598 Low = (UINT8) (BankConnections & 0x0F);\r
2599 if (High != 0xF) {\r
2600 if (Low != 0xF) {\r
2601 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS), gShellDebug1HiiHandle, High, Low, High, Low);\r
2602 } else {\r
2603 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS_2), gShellDebug1HiiHandle, High, High);\r
2604 }\r
2605 } else {\r
2606 if (Low != 0xF) {\r
2607 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS_2), gShellDebug1HiiHandle, Low, Low);\r
2608 } else {\r
2609 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_BANKS_CONNECTED), gShellDebug1HiiHandle);\r
2610 }\r
2611 }\r
2612}\r
2613\r
a1d4bfcc 2614/**\r
2615 Display memory informcation.\r
2616\r
5d73d92f 2617 Bits 0:6 Size (n),\r
2618 where 2**n is the size in MB with three special-case values:\r
2619 7Dh Not determinable (Installed Size only)\r
2620 7Eh Module is installed, but no memory has been enabled\r
2621 7Fh Not installed\r
2622 Bit 7 Defines whether the memory module has a single- (0)\r
2623 or double-bank (1) connection.\r
2624\r
a1d4bfcc 2625 @param[in] Size - The size\r
2626 @param[in] Option - The option\r
5d73d92f 2627**/\r
a1d4bfcc 2628VOID\r
2629DisplayMmMemorySize (\r
2630 IN UINT8 Size,\r
2631 IN UINT8 Option\r
2632 )\r
5d73d92f 2633{\r
2634 UINT8 Value;\r
2635 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEMORY_SIZE), gShellDebug1HiiHandle);\r
2636 //\r
2637 // Print option\r
2638 //\r
2639 PRINT_INFO_OPTION (Size, Option);\r
2640\r
2641 //\r
2642 // Get the low bits(0-6 bit)\r
2643 //\r
2644 Value = (UINT8) (Size & 0x7F);\r
2645 if (Value == 0x7D) {\r
2646 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_SIZE_NOT_DETERMINABLE), gShellDebug1HiiHandle);\r
2647 } else if (Value == 0x7E) {\r
2648 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MODULE_INSTALLED), gShellDebug1HiiHandle);\r
2649 } else if (Value == 0x7F) {\r
2650 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_INSTALLED), gShellDebug1HiiHandle);\r
2651 } else {\r
2652 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_SIZE), gShellDebug1HiiHandle, 1 << Value);\r
2653 }\r
2654\r
2655 if (BIT (Size, 7) != 0) {\r
2656 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_MODULE_DOUBLE_BANK), gShellDebug1HiiHandle);\r
2657 } else {\r
2658 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_MODULE_SINGLE_BANK), gShellDebug1HiiHandle);\r
2659 }\r
2660}\r
2661\r
187cb3dd
SZ
2662/**\r
2663 Display Cache Configuration.\r
2664\r
2665 @param[in] CacheConfiguration Cache Configuration.\r
2666Bits 15:10 Reserved, must be 0\r
2667Bits 9:8 Operational Mode\r
2668 0h - Write Through\r
2669 1h - Write Back\r
2670 2h - Varies with Memory Address\r
2671 3h - Unknown\r
2672Bit 7 Enabled/Disabled\r
2673 1 - Enabled\r
2674 0 - Disabled\r
2675Bits 6:5 Location\r
2676 0h - Internal\r
2677 1h - External\r
2678 2h - Reserved\r
2679 3h - Unknown\r
2680Bit 4 Reserved, must be zero\r
2681Bit 3 Cache Socketed\r
2682 1 - Socketed\r
2683 0 - Unsocketed\r
2684Bits 2:0 Cache Level\r
2685 1 through 8 (For example, an L1 cache would\r
2686 use value 000b and an L3 cache would use 010b.)\r
2687\r
2688 @param[in] Option The option\r
2689**/\r
2690VOID\r
2691DisplayCacheConfiguration (\r
2692 IN UINT16 CacheConfiguration,\r
2693 IN UINT8 Option\r
2694 )\r
2695{\r
2696 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_CONFIGURATION), gShellDebug1HiiHandle);\r
2697 PRINT_INFO_OPTION (CacheConfiguration, Option);\r
2698\r
2699 if (BIT (CacheConfiguration, 15) != 0) {\r
2700 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT15_NOT_ZERO), gShellDebug1HiiHandle);\r
2701 } else if (BIT (CacheConfiguration, 14) != 0) {\r
2702 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT14_NOT_ZERO), gShellDebug1HiiHandle);\r
2703 } else if (BIT (CacheConfiguration, 13) != 0) {\r
2704 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT13_NOT_ZERO), gShellDebug1HiiHandle);\r
2705 } else if (BIT (CacheConfiguration, 12) != 0) {\r
2706 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT12_NOT_ZERO), gShellDebug1HiiHandle);\r
2707 } else if (BIT (CacheConfiguration, 11) != 0) {\r
2708 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT11_NOT_ZERO), gShellDebug1HiiHandle);\r
2709 } else if (BIT (CacheConfiguration, 10) != 0) {\r
2710 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT10_NOT_ZERO), gShellDebug1HiiHandle);\r
2711 } else if (BIT (CacheConfiguration, 4) != 0) {\r
2712 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle);\r
2713 }\r
2714\r
2715 //\r
2716 // Check BITs 9:8\r
2717 //\r
2718 switch ((CacheConfiguration & 0x300) >> 8) {\r
2719 case 0:\r
2720 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_WRITE_THROUGH), gShellDebug1HiiHandle);\r
2721 break;\r
2722\r
2723 case 1:\r
2724 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_WRITE_BACK), gShellDebug1HiiHandle);\r
2725 break;\r
2726\r
2727 case 2:\r
2728 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_VARIES_WITH_MEM_ADDR), gShellDebug1HiiHandle);\r
2729 break;\r
2730\r
2731 case 3:\r
2732 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
2733 break;\r
2734 }\r
2735\r
2736 //\r
2737 // Check BIT 7\r
2738 //\r
2739 if (BIT (CacheConfiguration, 7) != 0) {\r
2740 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED), gShellDebug1HiiHandle);\r
2741 } else {\r
2742 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
2743 }\r
2744\r
2745 //\r
2746 // Check BITs 6:5\r
2747 //\r
2748 switch ((CacheConfiguration & 0x60) >> 5) {\r
2749 case 0:\r
2750 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_INTERNAL), gShellDebug1HiiHandle);\r
2751 break;\r
2752\r
2753 case 1:\r
2754 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_EXTERNAL), gShellDebug1HiiHandle);\r
2755 break;\r
2756\r
2757 case 2:\r
2758 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle);\r
2759 break;\r
2760\r
2761 case 3:\r
2762 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
2763 break;\r
2764 }\r
2765\r
2766 //\r
2767 // Check BIT 3\r
2768 //\r
2769 if (BIT (CacheConfiguration, 3) != 0) {\r
2770 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_SOCKETED), gShellDebug1HiiHandle);\r
2771 } else {\r
2772 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_NOT_SOCKETED), gShellDebug1HiiHandle);\r
2773 }\r
2774\r
2775\r
2776 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_LEVEL), gShellDebug1HiiHandle, (CacheConfiguration & 0x07) + 1);\r
2777}\r
2778\r
a1d4bfcc 2779/**\r
5d73d92f 2780 The Slot ID field of the System Slot structure provides a mechanism to\r
2781 correlate the physical attributes of the slot to its logical access method\r
2782 (which varies based on the Slot Type field).\r
2783\r
a1d4bfcc 2784 @param[in] SlotId - The slot ID\r
2785 @param[in] SlotType - The slot type\r
2786 @param[in] Option - The Option\r
5d73d92f 2787**/\r
a1d4bfcc 2788VOID\r
2789DisplaySystemSlotId (\r
2790 IN UINT16 SlotId,\r
2791 IN UINT8 SlotType,\r
2792 IN UINT8 Option\r
2793 )\r
5d73d92f 2794{\r
2795 //\r
2796 // Display slot type first\r
2797 //\r
2798 DisplaySystemSlotType (SlotType, Option);\r
2799\r
2800 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SLOT_ID), gShellDebug1HiiHandle);\r
2801 //\r
2802 // print option\r
2803 //\r
2804 PRINT_INFO_OPTION (SlotType, Option);\r
2805\r
2806 switch (SlotType) {\r
2807 //\r
2808 // Slot Type: MCA\r
2809 //\r
2810 case 0x04:\r
2811 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LOGICAL_MICRO_CHAN), gShellDebug1HiiHandle);\r
2812 if (SlotId > 0 && SlotId < 15) {\r
2813 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_D), gShellDebug1HiiHandle, SlotId);\r
2814 } else {\r
2815 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ERROR_NOT_1_15), gShellDebug1HiiHandle);\r
2816 }\r
2817 break;\r
2818\r
2819 //\r
2820 // EISA\r
2821 //\r
2822 case 0x05:\r
2823 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LOGICAL_EISA_NUM), gShellDebug1HiiHandle);\r
2824 if (SlotId > 0 && SlotId < 15) {\r
2825 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_D), gShellDebug1HiiHandle, SlotId);\r
2826 } else {\r
2827 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ERROR_NOT_1_15), gShellDebug1HiiHandle);\r
2828 }\r
2829 break;\r
2830\r
2831 //\r
2832 // Slot Type: PCI\r
2833 //\r
2834 case 0x06:\r
2835 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId);\r
2836 break;\r
2837\r
2838 //\r
2839 // PCMCIA\r
2840 //\r
2841 case 0x07:\r
2842 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_IDENTIFIES_ADAPTER_NUM), gShellDebug1HiiHandle, SlotId);\r
2843 break;\r
2844\r
2845 //\r
2846 // Slot Type: PCI-E\r
2847 //\r
2848 case 0xA5:\r
2849 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId);\r
2850 break;\r
2851\r
2852 default:\r
187cb3dd 2853 if ((SlotType >= 0x0E && SlotType <= 0x12) || (SlotType >= 0xA6 && SlotType <= 0xB6)){\r
5d73d92f 2854 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId);\r
2855 } else {\r
2856 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_SLOT_ID), gShellDebug1HiiHandle);\r
2857 }\r
2858 }\r
2859}\r
2860\r
a1d4bfcc 2861/**\r
2862 Display System Boot Information (Type 32) information.\r
2863\r
2864 @param[in] Parameter The parameter.\r
2865 @param[in] Option The options.\r
2866**/\r
5d73d92f 2867VOID\r
2868DisplaySystemBootStatus (\r
a1d4bfcc 2869 IN UINT8 Parameter,\r
2870 IN UINT8 Option\r
5d73d92f 2871 )\r
2872{\r
2873 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_BOOT_STATUS), gShellDebug1HiiHandle);\r
2874 //\r
2875 // Print option\r
2876 //\r
2877 PRINT_INFO_OPTION (Parameter, Option);\r
2878\r
2879 //\r
2880 // Check value and print\r
2881 //\r
2882 if (Parameter == 0) {\r
2883 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_ERRORS_DETECTED), gShellDebug1HiiHandle);\r
2884 } else if (Parameter == 1) {\r
2885 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_BOOTABLE_MEDIA), gShellDebug1HiiHandle);\r
2886 } else if (Parameter == 2) {\r
2887 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NORMAL_OP_SYSTEM), gShellDebug1HiiHandle);\r
2888 } else if (Parameter == 3) {\r
2889 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FIRMWARE_DETECTED), gShellDebug1HiiHandle);\r
2890 } else if (Parameter == 4) {\r
2891 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM), gShellDebug1HiiHandle);\r
2892 } else if (Parameter == 5) {\r
2893 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_USER_REQUESTED_BOOT), gShellDebug1HiiHandle);\r
2894 } else if (Parameter == 6) {\r
2895 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_SECURITY_VIOLATION), gShellDebug1HiiHandle);\r
2896 } else if (Parameter == 7) {\r
2897 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PREV_REQ_IMAGE), gShellDebug1HiiHandle);\r
2898 } else if (Parameter == 8) {\r
2899 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WATCHDOG_TIMER), gShellDebug1HiiHandle);\r
2900 } else if (Parameter >= 9 && Parameter <= 127) {\r
2901 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RSVD_FUTURE_ASSIGNMENT), gShellDebug1HiiHandle);\r
2902 } else if (Parameter >= 128 && Parameter <= 191) {\r
2903 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VENDOR_OEM_SPECIFIC), gShellDebug1HiiHandle);\r
e0c2cc6f 2904 } else if (Parameter >= 192) {\r
5d73d92f 2905 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRODUCT_SPEC_IMPLMENTATION), gShellDebug1HiiHandle);\r
2906 } else {\r
2907 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ERROR_VALUE), gShellDebug1HiiHandle);\r
2908 }\r
2909}\r
a1d4bfcc 2910\r
2911/**\r
2912 Display Portable Battery (Type 22) information.\r
2913\r
5d73d92f 2914 The date the cell pack was manufactured, in packed format:\r
2915 Bits 15:9 Year, biased by 1980, in the range 0 to 127.\r
2916 Bits 8:5 Month, in the range 1 to 12.\r
2917 Bits 4:0 Date, in the range 1 to 31.\r
2918 For example, 01 February 2000 would be identified as\r
2919 0010 1000 0100 0001b (0x2841).\r
2920\r
a1d4bfcc 2921 @param[in] Date The date\r
2922 @param[in] Option The option\r
5d73d92f 2923**/\r
a1d4bfcc 2924VOID\r
2925DisplaySBDSManufactureDate (\r
2926 IN UINT16 Date,\r
2927 IN UINT8 Option\r
2928 )\r
5d73d92f 2929{\r
2930 UINTN Day;\r
2931 UINTN Month;\r
2932 UINTN Year;\r
2933\r
2934 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SBDS_MANUFACTURE_DATE), gShellDebug1HiiHandle);\r
2935 PRINT_INFO_OPTION (Date, Option);\r
2936 //\r
2937 // Print date\r
2938 //\r
2939 Day = Date & 0x001F;\r
187cb3dd
SZ
2940 Month = (Date & 0x01E0) >> 5;\r
2941 Year = ((Date & 0xFE00) >> 9) + 1980;\r
5d73d92f 2942 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MONTH_DAY_YEAR), gShellDebug1HiiHandle, Day, Month, Year);\r
2943\r
2944}\r
a1d4bfcc 2945\r
2946/**\r
187cb3dd 2947 Display System Reset (Type 23) information.\r
a1d4bfcc 2948\r
ba0014b9 2949\r
e0c2cc6f 2950Identifies the system-reset capabilities for the system.\r
2951 Bits 7:6 Reserved for future assignment via this specification, set to 00b.\r
2952 Bit 5 System contains a watchdog timer, either True (1) or False (0).\r
2953 Bits 4:3 Boot Option on Limit.\r
2954 Identifies the system action to be taken when the Reset Limit is reached, one of:\r
2955 00b Reserved, do not use.\r
2956 01b Operating system\r
2957 10b System utilities\r
2958 11b Do not rebootBits\r
2959 2:1 Boot Option. Indicates the action to be taken following a watchdog reset, one of:\r
2960 00b Reserved, do not use.\r
2961 01b Operating system\r
2962 10b System utilities\r
2963 11b Do not reboot\r
2964 Bit 0 Status.\r
2965 1b The system reset is enabled by the user\r
2966 0b The system reset is not enabled by the user\r
a1d4bfcc 2967\r
2968 @param[in] Reset Reset\r
2969 @param[in] Option The option\r
2970**/\r
5d73d92f 2971VOID\r
2972DisplaySystemResetCapabilities (\r
a1d4bfcc 2973 IN UINT8 Reset,\r
2974 IN UINT8 Option\r
5d73d92f 2975 )\r
5d73d92f 2976{\r
2977 UINTN Temp;\r
2978\r
2979 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_RESET_CAPABILITIES), gShellDebug1HiiHandle);\r
2980 PRINT_INFO_OPTION (Reset, Option);\r
2981\r
2982 //\r
2983 // Check reserved bits 7:6\r
2984 //\r
2985 if ((Reset & 0xC0) != 0) {\r
2986 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RESERVED_ZERO), gShellDebug1HiiHandle);\r
2987 }\r
2988 //\r
2989 // Watch dog\r
2990 //\r
2991 if (BIT (Reset, 5) != 0) {\r
2992 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WATCHDOG_TIMER_2), gShellDebug1HiiHandle);\r
2993 } else {\r
2994 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_NOT_CONTAIN_TIMER), gShellDebug1HiiHandle);\r
2995 }\r
2996 //\r
2997 // Boot Option on Limit\r
2998 //\r
2999 Temp = (Reset & 0x18) >> 3;\r
3000 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_OPTION_LIMIT), gShellDebug1HiiHandle);\r
3001 switch (Temp) {\r
3002 case 0:\r
3003 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle);\r
3004 break;\r
3005\r
3006 case 1:\r
3007 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM_2), gShellDebug1HiiHandle);\r
3008 break;\r
3009\r
3010 case 2:\r
3011 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_UTIL), gShellDebug1HiiHandle);\r
3012 break;\r
3013\r
3014 case 3:\r
3015 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DO_NOT_REBOOT_BITS), gShellDebug1HiiHandle);\r
3016 break;\r
3017 }\r
3018 //\r
3019 // Boot Option\r
3020 //\r
3021 Temp = (Reset & 0x06) >> 1;\r
3022 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_OPTION), gShellDebug1HiiHandle);\r
3023 switch (Temp) {\r
3024 case 0:\r
3025 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle);\r
3026 break;\r
3027\r
3028 case 1:\r
3029 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM_2), gShellDebug1HiiHandle);\r
3030 break;\r
3031\r
3032 case 2:\r
3033 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_UTIL), gShellDebug1HiiHandle);\r
3034 break;\r
3035\r
3036 case 3:\r
3037 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DO_NOT_REBOOT), gShellDebug1HiiHandle);\r
3038 break;\r
3039 }\r
3040 //\r
3041 // Reset enable flag\r
3042 //\r
3043 if ((Reset & 0x01) != 0) {\r
3044 Print (L"The system reset is enabled by the user\n");\r
3045 } else {\r
3046 Print (L"The system reset is disabled by the user\n");\r
3047 }\r
3048}\r
a1d4bfcc 3049\r
3050/**\r
3051 Display Hardware Security (Type 24) information.\r
3052\r
ba0014b9 3053\r
e0c2cc6f 3054Identifies the password and reset status for the system:\r
3055\r
3056Bits 7:6 Power-on Password Status, one of:\r
3057 00b Disabled\r
3058 01b Enabled\r
3059 10b Not Implemented\r
3060 11b Unknown\r
3061Bits 5:4 Keyboard Password Status, one of:\r
3062 00b Disabled\r
3063 01b Enabled\r
3064 10b Not Implemented\r
3065 11b Unknown\r
3066Bits 3:2 Administrator Password Status, one of:\r
3067 00b Disabled\r
3068 01b Enabled\r
3069 10b Not Implemented\r
3070 11b Unknown\r
3071Bits 1:0 Front Panel Reset Status, one of:\r
3072 00b Disabled\r
3073 01b Enabled\r
3074 10b Not Implemented\r
3075 11b Unknown\r
a1d4bfcc 3076\r
3077 @param[in] Settings The device settings.\r
3078 @param[in] Option The device options.\r
3079**/\r
5d73d92f 3080VOID\r
3081DisplayHardwareSecuritySettings (\r
a1d4bfcc 3082 IN UINT8 Settings,\r
3083 IN UINT8 Option\r
5d73d92f 3084 )\r
5d73d92f 3085{\r
3086 UINTN Temp;\r
3087\r
3088 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HARDWARE_SECURITY_SET), gShellDebug1HiiHandle);\r
3089 PRINT_INFO_OPTION (Settings, Option);\r
3090\r
3091 //\r
3092 // Power-on Password Status\r
3093 //\r
3094 Temp = (Settings & 0xC0) >> 6;\r
3095 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_ON_PASSWORD), gShellDebug1HiiHandle);\r
3096 switch (Temp) {\r
3097 case 0:\r
3098 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
3099 break;\r
3100\r
3101 case 1:\r
3102 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle);\r
3103 break;\r
3104\r
3105 case 2:\r
3106 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle);\r
3107 break;\r
3108\r
3109 case 3:\r
3110 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3111 break;\r
3112 }\r
3113 //\r
3114 // Keyboard Password Status\r
3115 //\r
3116 Temp = (Settings & 0x30) >> 4;\r
3117 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_KEYBOARD_PASSWORD), gShellDebug1HiiHandle);\r
3118 switch (Temp) {\r
3119 case 0:\r
3120 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
3121 break;\r
3122\r
3123 case 1:\r
3124 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle);\r
3125 break;\r
3126\r
3127 case 2:\r
3128 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle);\r
3129 break;\r
3130\r
3131 case 3:\r
3132 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3133 break;\r
3134 }\r
3135 //\r
3136 // Administrator Password Status\r
3137 //\r
3138 Temp = (Settings & 0x0C) >> 2;\r
3139 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ADMIN_PASSWORD_STATUS), gShellDebug1HiiHandle);\r
3140 switch (Temp) {\r
3141 case 0:\r
3142 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
3143 break;\r
3144\r
3145 case 1:\r
3146 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle);\r
3147 break;\r
3148\r
3149 case 2:\r
3150 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle);\r
3151 break;\r
3152\r
3153 case 3:\r
3154 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3155 break;\r
3156 }\r
3157 //\r
3158 // Front Panel Reset Status\r
3159 //\r
3160 Temp = Settings & 0x3;\r
3161 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FRONT_PANEL_RESET), gShellDebug1HiiHandle);\r
3162 switch (Temp) {\r
3163 case 0:\r
3164 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
3165 break;\r
3166\r
3167 case 1:\r
3168 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle);\r
3169 break;\r
3170\r
3171 case 2:\r
3172 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle);\r
3173 break;\r
3174\r
3175 case 3:\r
3176 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3177 break;\r
3178 }\r
3179}\r
a1d4bfcc 3180\r
3181/**\r
3182 Display Out-of-Band Remote Access (Type 30) information.\r
3183\r
3184 @param[in] Connections The device characteristics.\r
3185 @param[in] Option The device options.\r
3186**/\r
5d73d92f 3187VOID\r
3188DisplayOBRAConnections (\r
a1d4bfcc 3189 IN UINT8 Connections,\r
3190 IN UINT8 Option\r
5d73d92f 3191 )\r
3192{\r
3193 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CONNECTIONS), gShellDebug1HiiHandle);\r
3194 PRINT_INFO_OPTION (Connections, Option);\r
3195\r
3196 //\r
3197 // Check reserved bits 7:2\r
3198 //\r
3199 if ((Connections & 0xFC) != 0) {\r
3200 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RESERVED_ZERO_2), gShellDebug1HiiHandle);\r
3201 }\r
3202 //\r
3203 // Outbound Connection\r
3204 //\r
3205 if (BIT (Connections, 1) != 0) {\r
3206 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OUTBOUND_CONN_ENABLED), gShellDebug1HiiHandle);\r
3207 } else {\r
3208 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTUBOUND_CONN_DISABLED), gShellDebug1HiiHandle);\r
3209 }\r
3210 //\r
3211 // Inbound Connection\r
3212 //\r
3213 if (BIT (Connections, 0) != 0) {\r
3214 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INBOIUND_CONN_ENABLED), gShellDebug1HiiHandle);\r
3215 } else {\r
3216 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INBOUND_CONN_DISABLED), gShellDebug1HiiHandle);\r
3217 }\r
3218}\r
a1d4bfcc 3219\r
3220/**\r
3221 Display System Power Supply (Type 39) information.\r
3222\r
3223 @param[in] Characteristics The device characteristics.\r
3224 @param[in] Option The device options.\r
3225**/\r
5d73d92f 3226VOID\r
3227DisplaySPSCharacteristics (\r
a1d4bfcc 3228 IN UINT16 Characteristics,\r
3229 IN UINT8 Option\r
5d73d92f 3230 )\r
3231{\r
3232 UINTN Temp;\r
3233\r
3234 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_CHAR), gShellDebug1HiiHandle);\r
3235 PRINT_INFO_OPTION (Characteristics, Option);\r
3236\r
3237 //\r
3238 // Check reserved bits 15:14\r
3239 //\r
3240 if ((Characteristics & 0xC000) != 0) {\r
3241 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_15_14_RSVD), gShellDebug1HiiHandle);\r
3242 }\r
3243 //\r
3244 // Bits 13:10 - DMTF Power Supply Type\r
3245 //\r
3246 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TYPE), gShellDebug1HiiHandle);\r
65e58382 3247 Temp = (Characteristics & 0x1C00) >> 10;\r
5d73d92f 3248 switch (Temp) {\r
3249 case 1:\r
3250 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
3251 break;\r
3252\r
3253 case 2:\r
3254 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3255 break;\r
3256\r
3257 case 3:\r
3258 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LINEAR), gShellDebug1HiiHandle);\r
3259 break;\r
3260\r
3261 case 4:\r
3262 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SWITCHING), gShellDebug1HiiHandle);\r
3263 break;\r
3264\r
3265 case 5:\r
3266 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BATTERY), gShellDebug1HiiHandle);\r
3267 break;\r
3268\r
3269 case 6:\r
3270 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UPS), gShellDebug1HiiHandle);\r
3271 break;\r
3272\r
3273 case 7:\r
3274 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CONVERTER), gShellDebug1HiiHandle);\r
3275 break;\r
3276\r
3277 case 8:\r
3278 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_REGULATOR), gShellDebug1HiiHandle);\r
3279 break;\r
3280\r
3281 default:\r
3282 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_2), gShellDebug1HiiHandle);\r
3283 }\r
3284 //\r
3285 // Bits 9:7 - Status\r
3286 //\r
3287 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STATUS_DASH), gShellDebug1HiiHandle);\r
65e58382 3288 Temp = (Characteristics & 0x380) >> 7;\r
5d73d92f 3289 switch (Temp) {\r
3290 case 1:\r
3291 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
3292 break;\r
3293\r
3294 case 2:\r
3295 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3296 break;\r
3297\r
3298 case 3:\r
3299 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OK), gShellDebug1HiiHandle);\r
3300 break;\r
3301\r
3302 case 4:\r
3303 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NON_CRITICAL), gShellDebug1HiiHandle);\r
3304 break;\r
3305\r
3306 case 5:\r
3307 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CRITICAL_POWER_SUPPLY), gShellDebug1HiiHandle);\r
3308 break;\r
3309\r
3310 default:\r
3311 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED), gShellDebug1HiiHandle);\r
3312 }\r
3313 //\r
3314 // Bits 6:3 - DMTF Input Voltage Range Switching\r
3315 //\r
3316 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INPUT_VOLTAGE_RANGE), gShellDebug1HiiHandle);\r
65e58382 3317 Temp = (Characteristics & 0x78) >> 3;\r
5d73d92f 3318 switch (Temp) {\r
3319 case 1:\r
3320 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
3321 break;\r
3322\r
3323 case 2:\r
3324 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3325 break;\r
3326\r
3327 case 3:\r
3328 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MANUAL), gShellDebug1HiiHandle);\r
3329 break;\r
3330\r
3331 case 4:\r
3332 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AUTO_SWITCH), gShellDebug1HiiHandle);\r
3333 break;\r
3334\r
3335 case 5:\r
3336 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WIDE_RANGE), gShellDebug1HiiHandle);\r
3337 break;\r
3338\r
3339 case 6:\r
3340 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_APPLICABLE), gShellDebug1HiiHandle);\r
3341 break;\r
3342\r
3343 default:\r
3344 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_3), gShellDebug1HiiHandle);\r
3345 break;\r
3346 }\r
3347 //\r
3348 // Power supply is unplugged from the wall\r
3349 //\r
3350 if (BIT (Characteristics, 2) != 0) {\r
3351 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_UNPLUGGED), gShellDebug1HiiHandle);\r
3352 } else {\r
3353 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_PLUGGED), gShellDebug1HiiHandle);\r
3354 }\r
3355 //\r
3356 // Power supply is present\r
3357 //\r
3358 if (BIT (Characteristics, 1) != 0) {\r
3359 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_PRESENT), gShellDebug1HiiHandle);\r
3360 } else {\r
3361 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_PRESENT), gShellDebug1HiiHandle);\r
3362 }\r
3363 //\r
3364 // hot replaceable\r
3365 //\r
3366 if (BIT (Characteristics, 0) != 0) {\r
3367 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_REPLACE), gShellDebug1HiiHandle);\r
3368 } else {\r
3369 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_REPLACE), gShellDebug1HiiHandle);\r
3370 }\r
3371}\r
e9f0be02
LA
3372\r
3373/**\r
3374 Display TPM Device (Type 43) Characteristics.\r
3375\r
3376 @param[in] Chara The information bits.\r
3377 @param[in] Option The optional information.\r
3378**/\r
3379VOID\r
3380DisplayTpmDeviceCharacteristics (\r
3381 IN UINT64 Chara,\r
3382 IN UINT8 Option\r
3383 )\r
3384{\r
3385 //\r
3386 // Print header\r
3387 //\r
3388 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CHAR), gShellDebug1HiiHandle);\r
3389 //\r
3390 // print option\r
3391 //\r
3392 PRINT_INFO_OPTION (Chara, Option);\r
3393\r
3394 //\r
3395 // Check all the bits and print information\r
3396 // This function does not use Table because table of bits\r
3397 // are designed not to deal with UINT64\r
3398 //\r
3399 if (BIT (Chara, 0) != 0) {\r
3400 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
3401 }\r
3402\r
3403 if (BIT (Chara, 1) != 0) {\r
3404 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
3405 }\r
3406 if (BIT (Chara, 2) != 0) {\r
3407 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CHAR_NOT_SUPPORTED), gShellDebug1HiiHandle);\r
3408 }\r
3409\r
3410 if (BIT (Chara, 3) != 0) {\r
3411 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_FWU), gShellDebug1HiiHandle);\r
3412 }\r
3413\r
3414 if (BIT (Chara, 4) != 0) {\r
3415 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_PLAT_SW), gShellDebug1HiiHandle);\r
3416 }\r
3417\r
3418 if (BIT (Chara, 5) != 0) {\r
3419 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_OEM), gShellDebug1HiiHandle);\r
3420 }\r
3421\r
3422 //\r
3423 // Just print the Reserved\r
3424 //\r
3425 ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_06_63), gShellDebug1HiiHandle);\r
3426\r
3427}\r