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