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