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