]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/PrintInfo.c
ArmVirtPkg: clear PcdConOut{Row,Column}
[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
47d20b54 881 break;\r
5d73d92f 882\r
47d20b54
MK
883 //\r
884 // 32-bit Memory Error Information (Type 18)\r
885 //\r
886 case 18:\r
887 DisplayMemoryErrorType (Struct->Type18->ErrorType, Option);\r
888 DisplayMemoryErrorGranularity (\r
889 Struct->Type18->ErrorGranularity,\r
890 Option\r
891 );\r
892 DisplayMemoryErrorOperation (Struct->Type18->ErrorOperation, Option);\r
893 PRINT_STRUCT_VALUE_H (Struct, Type18, VendorSyndrome);\r
894 PRINT_STRUCT_VALUE_H (Struct, Type18, MemoryArrayErrorAddress);\r
895 PRINT_STRUCT_VALUE_H (Struct, Type18, DeviceErrorAddress);\r
896 PRINT_STRUCT_VALUE_H (Struct, Type18, ErrorResolution);\r
897 break;\r
5d73d92f 898\r
47d20b54
MK
899 //\r
900 // Memory Array Mapped Address (Type 19)\r
901 //\r
902 case 19:\r
903 PRINT_STRUCT_VALUE_H (Struct, Type19, StartingAddress);\r
904 PRINT_STRUCT_VALUE_H (Struct, Type19, EndingAddress);\r
905 PRINT_STRUCT_VALUE_H (Struct, Type19, MemoryArrayHandle);\r
906 PRINT_STRUCT_VALUE_H (Struct, Type19, PartitionWidth);\r
907 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0xF)) {\r
908 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedStartingAddress);\r
909 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedEndingAddress);\r
910 }\r
5d73d92f 911\r
47d20b54 912 break;\r
5d73d92f 913\r
47d20b54
MK
914 //\r
915 // Memory Device Mapped Address (Type 20)\r
916 //\r
917 case 20:\r
918 PRINT_STRUCT_VALUE_H (Struct, Type20, StartingAddress);\r
919 PRINT_STRUCT_VALUE_H (Struct, Type20, EndingAddress);\r
920 PRINT_STRUCT_VALUE_H (Struct, Type20, MemoryDeviceHandle);\r
921 PRINT_STRUCT_VALUE_H (Struct, Type20, MemoryArrayMappedAddressHandle);\r
922 PRINT_STRUCT_VALUE_H (Struct, Type20, PartitionRowPosition);\r
923 PRINT_STRUCT_VALUE_H (Struct, Type20, InterleavePosition);\r
924 PRINT_STRUCT_VALUE_H (Struct, Type20, InterleavedDataDepth);\r
925 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0x13)) {\r
926 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedStartingAddress);\r
927 PRINT_STRUCT_VALUE_LH (Struct, Type19, ExtendedEndingAddress);\r
928 }\r
5d73d92f 929\r
47d20b54 930 break;\r
5d73d92f 931\r
47d20b54
MK
932 //\r
933 // Built-in Pointing Device (Type 21)\r
934 //\r
935 case 21:\r
936 DisplayPointingDeviceType (Struct->Type21->Type, Option);\r
937 DisplayPointingDeviceInterface (Struct->Type21->Interface, Option);\r
938 PRINT_STRUCT_VALUE (Struct, Type21, NumberOfButtons);\r
939 break;\r
5d73d92f 940\r
47d20b54
MK
941 //\r
942 // Portable Battery (Type 22)\r
943 //\r
944 case 22:\r
945 PRINT_PENDING_STRING (Struct, Type22, Location);\r
946 PRINT_PENDING_STRING (Struct, Type22, Manufacturer);\r
947 PRINT_PENDING_STRING (Struct, Type22, ManufactureDate);\r
948 PRINT_PENDING_STRING (Struct, Type22, SerialNumber);\r
949 PRINT_PENDING_STRING (Struct, Type22, DeviceName);\r
950 DisplayPBDeviceChemistry (\r
951 Struct->Type22->DeviceChemistry,\r
952 Option\r
953 );\r
954 PRINT_STRUCT_VALUE_H (Struct, Type22, DeviceCapacity);\r
955 PRINT_STRUCT_VALUE_H (Struct, Type22, DesignVoltage);\r
956 PRINT_PENDING_STRING (Struct, Type22, SBDSVersionNumber);\r
957 PRINT_STRUCT_VALUE_H (Struct, Type22, MaximumErrorInBatteryData);\r
958 PRINT_STRUCT_VALUE_H (Struct, Type22, SBDSSerialNumber);\r
959 DisplaySBDSManufactureDate (\r
960 Struct->Type22->SBDSManufactureDate,\r
961 Option\r
962 );\r
963 PRINT_PENDING_STRING (Struct, Type22, SBDSDeviceChemistry);\r
964 PRINT_STRUCT_VALUE_H (Struct, Type22, DesignCapacityMultiplier);\r
965 PRINT_STRUCT_VALUE_H (Struct, Type22, OEMSpecific);\r
966 break;\r
5d73d92f 967\r
47d20b54
MK
968 //\r
969 // System Reset (Type 23)\r
970 //\r
971 case 23:\r
972 DisplaySystemResetCapabilities (\r
973 Struct->Type23->Capabilities,\r
974 Option\r
975 );\r
976 PRINT_STRUCT_VALUE_H (Struct, Type23, ResetCount);\r
977 PRINT_STRUCT_VALUE_H (Struct, Type23, ResetLimit);\r
978 PRINT_STRUCT_VALUE_H (Struct, Type23, TimerInterval);\r
979 PRINT_STRUCT_VALUE_H (Struct, Type23, Timeout);\r
980 break;\r
5d73d92f 981\r
47d20b54
MK
982 //\r
983 // Hardware Security (Type 24)\r
984 //\r
985 case 24:\r
986 DisplayHardwareSecuritySettings (\r
987 Struct->Type24->HardwareSecuritySettings,\r
988 Option\r
989 );\r
990 break;\r
991\r
992 //\r
993 // System Power Controls (Type 25)\r
994 //\r
995 case 25:\r
996 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnMonth);\r
997 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnDayOfMonth);\r
998 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnHour);\r
999 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnMinute);\r
1000 PRINT_STRUCT_VALUE_H (Struct, Type25, NextScheduledPowerOnSecond);\r
1001 break;\r
1002\r
1003 //\r
1004 // Voltage Probe (Type 26)\r
1005 //\r
1006 case 26:\r
1007 PRINT_PENDING_STRING (Struct, Type26, Description);\r
1008 DisplayVPLocation (*(UINT8 *)&(Struct->Type26->LocationAndStatus), Option);\r
1009 DisplayVPStatus (*(UINT8 *)&(Struct->Type26->LocationAndStatus), Option);\r
1010 PRINT_STRUCT_VALUE_H (Struct, Type26, MaximumValue);\r
1011 PRINT_STRUCT_VALUE_H (Struct, Type26, MinimumValue);\r
1012 PRINT_STRUCT_VALUE_H (Struct, Type26, Resolution);\r
1013 PRINT_STRUCT_VALUE_H (Struct, Type26, Tolerance);\r
1014 PRINT_STRUCT_VALUE_H (Struct, Type26, Accuracy);\r
1015 PRINT_STRUCT_VALUE_H (Struct, Type26, OEMDefined);\r
1016 PRINT_STRUCT_VALUE_H (Struct, Type26, NominalValue);\r
1017 break;\r
1018\r
1019 //\r
1020 // Cooling Device (Type 27)\r
1021 //\r
1022 case 27:\r
1023 PRINT_STRUCT_VALUE_H (Struct, Type27, TemperatureProbeHandle);\r
1024 DisplayCoolingDeviceStatus (*(UINT8 *)&(Struct->Type27->DeviceTypeAndStatus), Option);\r
1025 DisplayCoolingDeviceType (*(UINT8 *)&(Struct->Type27->DeviceTypeAndStatus), Option);\r
1026 PRINT_STRUCT_VALUE_H (Struct, Type27, CoolingUnitGroup);\r
1027 PRINT_STRUCT_VALUE_H (Struct, Type27, OEMDefined);\r
1028 PRINT_STRUCT_VALUE_H (Struct, Type27, NominalSpeed);\r
1029 if (AE_SMBIOS_VERSION (0x2, 0x7) && (Struct->Hdr->Length > 0xE)) {\r
1030 PRINT_PENDING_STRING (Struct, Type27, Description);\r
1031 }\r
1032\r
1033 break;\r
1034\r
1035 //\r
1036 // Temperature Probe (Type 28)\r
1037 //\r
1038 case 28:\r
1039 PRINT_PENDING_STRING (Struct, Type28, Description);\r
1040 DisplayTemperatureProbeStatus (*(UINT8 *)&(Struct->Type28->LocationAndStatus), Option);\r
1041 DisplayTemperatureProbeLoc (*(UINT8 *)&(Struct->Type28->LocationAndStatus), Option);\r
1042 PRINT_STRUCT_VALUE_H (Struct, Type28, MaximumValue);\r
1043 PRINT_STRUCT_VALUE_H (Struct, Type28, MinimumValue);\r
1044 PRINT_STRUCT_VALUE_H (Struct, Type28, Resolution);\r
1045 PRINT_STRUCT_VALUE_H (Struct, Type28, Tolerance);\r
1046 PRINT_STRUCT_VALUE_H (Struct, Type28, Accuracy);\r
1047 PRINT_STRUCT_VALUE_H (Struct, Type28, OEMDefined);\r
1048 PRINT_STRUCT_VALUE_H (Struct, Type28, NominalValue);\r
1049 break;\r
1050\r
1051 //\r
1052 // Electrical Current Probe (Type 29)\r
1053 //\r
1054 case 29:\r
1055 PRINT_PENDING_STRING (Struct, Type29, Description);\r
1056 DisplayECPStatus (*(UINT8 *)&(Struct->Type29->LocationAndStatus), Option);\r
1057 DisplayECPLoc (*(UINT8 *)&(Struct->Type29->LocationAndStatus), Option);\r
1058 PRINT_STRUCT_VALUE_H (Struct, Type29, MaximumValue);\r
1059 PRINT_STRUCT_VALUE_H (Struct, Type29, MinimumValue);\r
1060 PRINT_STRUCT_VALUE_H (Struct, Type29, Resolution);\r
1061 PRINT_STRUCT_VALUE_H (Struct, Type29, Tolerance);\r
1062 PRINT_STRUCT_VALUE_H (Struct, Type29, Accuracy);\r
1063 PRINT_STRUCT_VALUE_H (Struct, Type29, OEMDefined);\r
1064 PRINT_STRUCT_VALUE_H (Struct, Type29, NominalValue);\r
1065 break;\r
1066\r
1067 //\r
1068 // Out-of-Band Remote Access (Type 30)\r
1069 //\r
1070 case 30:\r
1071 PRINT_PENDING_STRING (Struct, Type30, ManufacturerName);\r
1072 DisplayOBRAConnections (Struct->Type30->Connections, Option);\r
1073 break;\r
1074\r
1075 //\r
1076 // Boot Integrity Services (BIS) Entry Point (Type 31)\r
1077 //\r
1078 case 31:\r
1079 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STRUCT_TYPE31), gShellDebug1HiiHandle);\r
1080 break;\r
1081\r
1082 //\r
1083 // System Boot Information (Type 32)\r
1084 //\r
1085 case 32:\r
1086 PRINT_BIT_FIELD (Struct, Type32, Reserved, 6);\r
1087 DisplaySystemBootStatus (Struct->Type32->BootStatus, Option);\r
1088 break;\r
1089\r
1090 //\r
1091 // 64-Bit Memory Error Information (Type 33)\r
1092 //\r
1093 case 33:\r
1094 DisplayMemoryErrorType (Struct->Type33->ErrorType, Option);\r
1095 DisplayMemoryErrorGranularity (\r
1096 Struct->Type33->ErrorGranularity,\r
1097 Option\r
1098 );\r
1099 DisplayMemoryErrorOperation (Struct->Type33->ErrorOperation, Option);\r
1100 PRINT_STRUCT_VALUE_H (Struct, Type33, VendorSyndrome);\r
1101 PRINT_STRUCT_VALUE_LH (Struct, Type33, MemoryArrayErrorAddress);\r
1102 PRINT_STRUCT_VALUE_LH (Struct, Type33, DeviceErrorAddress);\r
1103 PRINT_STRUCT_VALUE_H (Struct, Type33, ErrorResolution);\r
1104 break;\r
1105\r
1106 //\r
1107 // Management Device (Type 34)\r
1108 //\r
1109 case 34:\r
1110 PRINT_PENDING_STRING (Struct, Type34, Description);\r
1111 DisplayMDType (Struct->Type34->Type, Option);\r
1112 PRINT_STRUCT_VALUE_H (Struct, Type34, Address);\r
1113 DisplayMDAddressType (Struct->Type34->AddressType, Option);\r
1114 break;\r
1115\r
1116 //\r
1117 // Management Device Component (Type 35)\r
1118 //\r
1119 case 35:\r
1120 PRINT_PENDING_STRING (Struct, Type35, Description);\r
1121 PRINT_STRUCT_VALUE_H (Struct, Type35, ManagementDeviceHandle);\r
1122 PRINT_STRUCT_VALUE_H (Struct, Type35, ComponentHandle);\r
1123 PRINT_STRUCT_VALUE_H (Struct, Type35, ThresholdHandle);\r
1124 break;\r
1125\r
1126 //\r
1127 // Management Device Threshold Data (Type 36)\r
1128 //\r
1129 case 36:\r
1130 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdNonCritical);\r
1131 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdNonCritical);\r
1132 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdCritical);\r
1133 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdCritical);\r
1134 PRINT_STRUCT_VALUE_H (Struct, Type36, LowerThresholdNonRecoverable);\r
1135 PRINT_STRUCT_VALUE_H (Struct, Type36, UpperThresholdNonRecoverable);\r
1136 break;\r
1137\r
1138 //\r
1139 // Memory Channel (Type 37)\r
1140 //\r
1141 case 37:\r
5d73d92f 1142 {\r
187cb3dd
SZ
1143 UINT8 Count;\r
1144 MEMORY_DEVICE *Ptr;\r
a1d4bfcc 1145 DisplayMemoryChannelType (Struct->Type37->ChannelType, Option);\r
1146 PRINT_STRUCT_VALUE_H (Struct, Type37, MaximumChannelLoad);\r
1147 PRINT_STRUCT_VALUE_H (Struct, Type37, MemoryDeviceCount);\r
5d73d92f 1148\r
a1d4bfcc 1149 Count = Struct->Type37->MemoryDeviceCount;\r
1150 Ptr = Struct->Type37->MemoryDevice;\r
5d73d92f 1151 for (Index = 0; Index < Count; Index++) {\r
47d20b54
MK
1152 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_DEVICE), gShellDebug1HiiHandle, Index + 1);\r
1153 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DEV_LOAD), gShellDebug1HiiHandle, Ptr[Index].DeviceLoad);\r
1154 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DEV_HANDLE), gShellDebug1HiiHandle, Ptr[Index].DeviceHandle);\r
5d73d92f 1155 }\r
47d20b54
MK
1156\r
1157 break;\r
5d73d92f 1158 }\r
5d73d92f 1159\r
47d20b54
MK
1160 //\r
1161 // IPMI Device Information (Type 38)\r
1162 //\r
1163 case 38:\r
1164 DisplayIPMIDIBMCInterfaceType (Struct->Type38->InterfaceType, Option);\r
1165 PRINT_STRUCT_VALUE_H (Struct, Type38, IPMISpecificationRevision);\r
1166 PRINT_STRUCT_VALUE_H (Struct, Type38, I2CSlaveAddress);\r
1167 PRINT_STRUCT_VALUE_H (Struct, Type38, NVStorageDeviceAddress);\r
1168 PRINT_STRUCT_VALUE_LH (Struct, Type38, BaseAddress);\r
1169 break;\r
5d73d92f 1170\r
47d20b54
MK
1171 //\r
1172 // System Power Supply (Type 39)\r
1173 //\r
1174 case 39:\r
1175 PRINT_STRUCT_VALUE_H (Struct, Type39, PowerUnitGroup);\r
1176 PRINT_PENDING_STRING (Struct, Type39, Location);\r
1177 PRINT_PENDING_STRING (Struct, Type39, DeviceName);\r
1178 PRINT_PENDING_STRING (Struct, Type39, Manufacturer);\r
1179 PRINT_PENDING_STRING (Struct, Type39, SerialNumber);\r
1180 PRINT_PENDING_STRING (Struct, Type39, AssetTagNumber);\r
1181 PRINT_PENDING_STRING (Struct, Type39, ModelPartNumber);\r
1182 PRINT_PENDING_STRING (Struct, Type39, RevisionLevel);\r
1183 PRINT_STRUCT_VALUE_H (Struct, Type39, MaxPowerCapacity);\r
1184 DisplaySPSCharacteristics (\r
1185 *(UINT16 *)&(Struct->Type39->PowerSupplyCharacteristics),\r
1186 Option\r
1187 );\r
1188 PRINT_STRUCT_VALUE_H (Struct, Type39, InputVoltageProbeHandle);\r
1189 PRINT_STRUCT_VALUE_H (Struct, Type39, CoolingDeviceHandle);\r
1190 PRINT_STRUCT_VALUE_H (Struct, Type39, InputCurrentProbeHandle);\r
1191 break;\r
5d73d92f 1192\r
47d20b54
MK
1193 //\r
1194 // Additional Information (Type 40)\r
1195 //\r
1196 case 40:\r
5d73d92f 1197 {\r
47d20b54
MK
1198 UINT8 NumberOfEntries;\r
1199 UINT8 EntryLength;\r
1200 ADDITIONAL_INFORMATION_ENTRY *Entries;\r
5d73d92f 1201\r
1202 EntryLength = 0;\r
a1d4bfcc 1203 Entries = Struct->Type40->AdditionalInfoEntries;\r
1204 NumberOfEntries = Struct->Type40->NumberOfAdditionalInformationEntries;\r
5d73d92f 1205\r
a1d4bfcc 1206 PRINT_STRUCT_VALUE_H (Struct, Type40, NumberOfAdditionalInformationEntries);\r
5d73d92f 1207\r
1208 for (Index = 0; Index < NumberOfEntries; Index++) {\r
1209 EntryLength = Entries->EntryLength;\r
47d20b54
MK
1210 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_ENTRYLEN), gShellDebug1HiiHandle, EntryLength);\r
1211 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_REFERENCEDHANDLE), gShellDebug1HiiHandle, Entries->ReferencedHandle);\r
1212 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_SMBIOSVIEW_REFERENCEDOFFSET), gShellDebug1HiiHandle, Entries->ReferencedOffset);\r
a1d4bfcc 1213 PRINT_SMBIOS_STRING (Struct, Entries->EntryString, String);\r
1214 PRINT_SMBIOS_BIT_FIELD (Struct, Entries->Value, Value, EntryLength - 5);\r
47d20b54 1215 Entries = (ADDITIONAL_INFORMATION_ENTRY *)((UINT8 *)Entries + EntryLength);\r
5d73d92f 1216 }\r
47d20b54
MK
1217\r
1218 break;\r
5d73d92f 1219 }\r
5d73d92f 1220\r
47d20b54
MK
1221 //\r
1222 // Onboard Devices Extended Information (Type 41)\r
1223 //\r
1224 case 41:\r
1225 PRINT_PENDING_STRING (Struct, Type41, ReferenceDesignation);\r
1226 ShellPrintEx (-1, -1, (((Struct->Type41->DeviceType) & 0x80) != 0) ? L"Device Enabled\n" : L"Device Disabled\n");\r
1227 DisplayOnboardDeviceTypes ((Struct->Type41->DeviceType) & 0x7F, Option);\r
1228 PRINT_STRUCT_VALUE_H (Struct, Type41, DeviceTypeInstance);\r
1229 PRINT_STRUCT_VALUE_H (Struct, Type41, SegmentGroupNum);\r
1230 PRINT_STRUCT_VALUE_H (Struct, Type41, BusNum);\r
1231 PRINT_STRUCT_VALUE_H (Struct, Type41, DevFuncNum);\r
1232 break;\r
5d73d92f 1233\r
47d20b54
MK
1234 //\r
1235 // Management Controller Host Interface (Type 42)\r
1236 //\r
1237 case 42:\r
1238 DisplayMCHostInterfaceType (Struct->Type42->InterfaceType, Option);\r
1239 if (AE_SMBIOS_VERSION (0x3, 0x2)) {\r
1240 PRINT_STRUCT_VALUE_H (Struct, Type42, InterfaceTypeSpecificDataLength);\r
1241 PRINT_BIT_FIELD (Struct, Type42, InterfaceTypeSpecificData, Struct->Type42->InterfaceTypeSpecificDataLength);\r
1242 }\r
187cb3dd 1243\r
47d20b54 1244 break;\r
e9f0be02 1245\r
47d20b54
MK
1246 //\r
1247 // TPM Device (Type 43)\r
1248 //\r
1249 case 43:\r
1250 PRINT_BIT_FIELD (Struct, Type43, VendorID, 4);\r
1251 PRINT_STRUCT_VALUE_H (Struct, Type43, MajorSpecVersion);\r
1252 PRINT_STRUCT_VALUE_H (Struct, Type43, MinorSpecVersion);\r
1253 PRINT_STRUCT_VALUE_H (Struct, Type43, FirmwareVersion1);\r
1254 PRINT_STRUCT_VALUE_H (Struct, Type43, FirmwareVersion2);\r
1255 PRINT_PENDING_STRING (Struct, Type43, Description);\r
1256 DisplayTpmDeviceCharacteristics (ReadUnaligned64 ((UINT64 *)(UINTN)&(Struct->Type43->Characteristics)), Option);\r
1257 PRINT_STRUCT_VALUE_H (Struct, Type43, OemDefined);\r
1258 break;\r
e797a806 1259\r
47d20b54
MK
1260 //\r
1261 // Processor Additional Information (Type 44)\r
1262 //\r
1263 case 44:\r
1264 DisplayProcessorArchitectureType (Struct->Type44->ProcessorSpecificBlock.ProcessorArchType, Option);\r
1265 break;\r
5d73d92f 1266\r
47d20b54
MK
1267 //\r
1268 // Inactive (Type 126)\r
1269 //\r
1270 case 126:\r
1271 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INACTIVE_STRUCT), gShellDebug1HiiHandle);\r
1272 break;\r
1273\r
1274 //\r
1275 // End-of-Table (Type 127)\r
1276 //\r
1277 case 127:\r
1278 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_THIS_STRUCT_END_TABLE), gShellDebug1HiiHandle);\r
1279 break;\r
5d73d92f 1280\r
47d20b54
MK
1281 default:\r
1282 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STRUCT_TYPE_UNDEFINED), gShellDebug1HiiHandle);\r
1283 break;\r
5d73d92f 1284 }\r
1285\r
1286 return EFI_SUCCESS;\r
1287}\r
1288\r
a1d4bfcc 1289/**\r
1290 Display BIOS Information (Type 0) information.\r
1291\r
1292 @param[in] Chara The information bits.\r
1293 @param[in] Option The optional information.\r
1294**/\r
5d73d92f 1295VOID\r
1296DisplayBiosCharacteristics (\r
a1d4bfcc 1297 IN UINT64 Chara,\r
1298 IN UINT8 Option\r
5d73d92f 1299 )\r
1300{\r
1301 //\r
1302 // Print header\r
1303 //\r
47d20b54 1304 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR), gShellDebug1HiiHandle);\r
5d73d92f 1305 //\r
1306 // print option\r
1307 //\r
a1d4bfcc 1308 PRINT_INFO_OPTION (Chara, Option);\r
5d73d92f 1309\r
1310 //\r
1311 // Check all the bits and print information\r
1312 // This function does not use Table because table of bits\r
1313 // are designed not to deal with UINT64\r
1314 //\r
a1d4bfcc 1315 if (BIT (Chara, 0) != 0) {\r
47d20b54 1316 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
5d73d92f 1317 }\r
1318\r
a1d4bfcc 1319 if (BIT (Chara, 1) != 0) {\r
47d20b54 1320 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
5d73d92f 1321 }\r
1322\r
a1d4bfcc 1323 if (BIT (Chara, 2) != 0) {\r
47d20b54 1324 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN_BIT), gShellDebug1HiiHandle);\r
5d73d92f 1325 }\r
1326\r
a1d4bfcc 1327 if (BIT (Chara, 3) != 0) {\r
47d20b54 1328 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_NOT_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1329 }\r
1330\r
a1d4bfcc 1331 if (BIT (Chara, 4) != 0) {\r
47d20b54 1332 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ISA_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1333 }\r
1334\r
a1d4bfcc 1335 if (BIT (Chara, 5) != 0) {\r
47d20b54 1336 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MSA_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1337 }\r
1338\r
a1d4bfcc 1339 if (BIT (Chara, 6) != 0) {\r
47d20b54 1340 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EISA_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1341 }\r
1342\r
a1d4bfcc 1343 if (BIT (Chara, 7) != 0) {\r
47d20b54 1344 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PCI_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1345 }\r
1346\r
a1d4bfcc 1347 if (BIT (Chara, 8) != 0) {\r
47d20b54 1348 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PC_CARD_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1349 }\r
1350\r
a1d4bfcc 1351 if (BIT (Chara, 9) != 0) {\r
47d20b54 1352 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PLUG_PLAY_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1353 }\r
1354\r
a1d4bfcc 1355 if (BIT (Chara, 10) != 0) {\r
47d20b54 1356 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_APM_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1357 }\r
1358\r
a1d4bfcc 1359 if (BIT (Chara, 11) != 0) {\r
47d20b54 1360 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_UPGRADEABLE), gShellDebug1HiiHandle);\r
5d73d92f 1361 }\r
1362\r
a1d4bfcc 1363 if (BIT (Chara, 12) != 0) {\r
47d20b54 1364 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SHADOWING), gShellDebug1HiiHandle);\r
5d73d92f 1365 }\r
1366\r
a1d4bfcc 1367 if (BIT (Chara, 13) != 0) {\r
47d20b54 1368 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VESA_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1369 }\r
1370\r
a1d4bfcc 1371 if (BIT (Chara, 14) != 0) {\r
47d20b54 1372 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ECSD_SUPPORT), gShellDebug1HiiHandle);\r
5d73d92f 1373 }\r
1374\r
a1d4bfcc 1375 if (BIT (Chara, 15) != 0) {\r
47d20b54 1376 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_FROM_CD_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1377 }\r
1378\r
a1d4bfcc 1379 if (BIT (Chara, 16) != 0) {\r
47d20b54 1380 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SELECTED_BOOT_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1381 }\r
1382\r
a1d4bfcc 1383 if (BIT (Chara, 17) != 0) {\r
47d20b54 1384 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_ROM_SOCKETED), gShellDebug1HiiHandle);\r
5d73d92f 1385 }\r
1386\r
a1d4bfcc 1387 if (BIT (Chara, 18) != 0) {\r
47d20b54 1388 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_FROM_PC_CARD), gShellDebug1HiiHandle);\r
5d73d92f 1389 }\r
1390\r
a1d4bfcc 1391 if (BIT (Chara, 19) != 0) {\r
47d20b54 1392 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_EDD_ENHANCED_DRIVER), gShellDebug1HiiHandle);\r
5d73d92f 1393 }\r
1394\r
a1d4bfcc 1395 if (BIT (Chara, 20) != 0) {\r
47d20b54 1396 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_JAPANESE_FLOPPY_NEC), gShellDebug1HiiHandle);\r
5d73d92f 1397 }\r
1398\r
a1d4bfcc 1399 if (BIT (Chara, 21) != 0) {\r
47d20b54 1400 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_JAPANESE_FLOPPY_TOSHIBA), gShellDebug1HiiHandle);\r
5d73d92f 1401 }\r
1402\r
a1d4bfcc 1403 if (BIT (Chara, 22) != 0) {\r
47d20b54 1404 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FLOPPY_SERVICES_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1405 }\r
1406\r
a1d4bfcc 1407 if (BIT (Chara, 23) != 0) {\r
47d20b54 1408 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_POINT_TWO_MB), gShellDebug1HiiHandle);\r
5d73d92f 1409 }\r
1410\r
a1d4bfcc 1411 if (BIT (Chara, 24) != 0) {\r
47d20b54 1412 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_720_KB), gShellDebug1HiiHandle);\r
5d73d92f 1413 }\r
1414\r
a1d4bfcc 1415 if (BIT (Chara, 25) != 0) {\r
47d20b54 1416 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TWO_POINT_EIGHT_EIGHT_MB), gShellDebug1HiiHandle);\r
5d73d92f 1417 }\r
1418\r
a1d4bfcc 1419 if (BIT (Chara, 26) != 0) {\r
47d20b54 1420 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRINT_SCREEN_SUPPORT), gShellDebug1HiiHandle);\r
5d73d92f 1421 }\r
1422\r
a1d4bfcc 1423 if (BIT (Chara, 27) != 0) {\r
47d20b54 1424 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_KEYBOARD_SERV_SUPPORT), gShellDebug1HiiHandle);\r
5d73d92f 1425 }\r
1426\r
a1d4bfcc 1427 if (BIT (Chara, 28) != 0) {\r
47d20b54 1428 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SERIAL_SERVICES_SUPPORT), gShellDebug1HiiHandle);\r
5d73d92f 1429 }\r
1430\r
a1d4bfcc 1431 if (BIT (Chara, 29) != 0) {\r
47d20b54 1432 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRINTER_SERVICES_SUPPORT), gShellDebug1HiiHandle);\r
5d73d92f 1433 }\r
1434\r
a1d4bfcc 1435 if (BIT (Chara, 30) != 0) {\r
47d20b54 1436 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MONO_VIDEO_SUPPORT), gShellDebug1HiiHandle);\r
5d73d92f 1437 }\r
1438\r
a1d4bfcc 1439 if (BIT (Chara, 31) != 0) {\r
47d20b54 1440 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NEC_PC_98), gShellDebug1HiiHandle);\r
5d73d92f 1441 }\r
47d20b54 1442\r
5d73d92f 1443 //\r
a1d4bfcc 1444 // Just print the Reserved\r
5d73d92f 1445 //\r
47d20b54
MK
1446 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_32_47), gShellDebug1HiiHandle);\r
1447 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_48_64), gShellDebug1HiiHandle);\r
5d73d92f 1448}\r
1449\r
a1d4bfcc 1450/**\r
1451 Display Bios Characteristice extensions1 information.\r
1452\r
1453 @param[in] Byte1 The information.\r
1454 @param[in] Option The optional information.\r
1455**/\r
5d73d92f 1456VOID\r
1457DisplayBiosCharacteristicsExt1 (\r
47d20b54
MK
1458 IN UINT8 Byte1,\r
1459 IN UINT8 Option\r
5d73d92f 1460 )\r
1461{\r
47d20b54 1462 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_EXTENSION), gShellDebug1HiiHandle);\r
5d73d92f 1463 //\r
1464 // Print option\r
1465 //\r
a1d4bfcc 1466 PRINT_INFO_OPTION (Byte1, Option);\r
5d73d92f 1467\r
1468 //\r
1469 // check bit and print\r
1470 //\r
a1d4bfcc 1471 if (BIT (Byte1, 0) != 0) {\r
47d20b54 1472 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ACPI_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1473 }\r
1474\r
a1d4bfcc 1475 if (BIT (Byte1, 1) != 0) {\r
47d20b54 1476 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_USB_LEGACY_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1477 }\r
1478\r
a1d4bfcc 1479 if (BIT (Byte1, 2) != 0) {\r
47d20b54 1480 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AGP_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1481 }\r
1482\r
a1d4bfcc 1483 if (BIT (Byte1, 3) != 0) {\r
47d20b54 1484 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_I2O_BOOT_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1485 }\r
1486\r
a1d4bfcc 1487 if (BIT (Byte1, 4) != 0) {\r
47d20b54 1488 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LS_120_BOOT_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1489 }\r
1490\r
a1d4bfcc 1491 if (BIT (Byte1, 5) != 0) {\r
47d20b54 1492 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ATAPI_ZIP_DRIVE), gShellDebug1HiiHandle);\r
5d73d92f 1493 }\r
1494\r
a1d4bfcc 1495 if (BIT (Byte1, 6) != 0) {\r
47d20b54 1496 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_1394_BOOT_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1497 }\r
1498\r
a1d4bfcc 1499 if (BIT (Byte1, 7) != 0) {\r
47d20b54 1500 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SMART_BATTERY_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 1501 }\r
1502}\r
1503\r
a1d4bfcc 1504/**\r
1505 Display Bios Characteristice extensions2 information.\r
1506\r
1507 @param[in] byte2 The information.\r
1508 @param[in] Option The optional information.\r
1509**/\r
5d73d92f 1510VOID\r
1511DisplayBiosCharacteristicsExt2 (\r
47d20b54
MK
1512 IN UINT8 byte2,\r
1513 IN UINT8 Option\r
5d73d92f 1514 )\r
1515{\r
47d20b54 1516 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_CHAR_EXTENSION_2), gShellDebug1HiiHandle);\r
5d73d92f 1517 //\r
1518 // Print option\r
1519 //\r
1520 PRINT_INFO_OPTION (byte2, Option);\r
1521\r
1522 if (BIT (byte2, 0) != 0) {\r
47d20b54 1523 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_BOOT_SPEC_SUPP), gShellDebug1HiiHandle);\r
5d73d92f 1524 }\r
1525\r
1526 if (BIT (byte2, 1) != 0) {\r
47d20b54 1527 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FUNCTION_KEY_INIT), gShellDebug1HiiHandle);\r
5d73d92f 1528 }\r
1529\r
187cb3dd
SZ
1530 if (AE_SMBIOS_VERSION (0x2, 0x4)) {\r
1531 if (BIT (byte2, 2) != 0) {\r
47d20b54 1532 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLE_TAR_CONT_DIST), gShellDebug1HiiHandle);\r
187cb3dd 1533 }\r
47d20b54 1534\r
187cb3dd
SZ
1535 if (AE_SMBIOS_VERSION (0x2, 0x7)) {\r
1536 if (BIT (byte2, 3) != 0) {\r
47d20b54 1537 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UEFI_SPEC_SUPPORT), gShellDebug1HiiHandle);\r
187cb3dd 1538 }\r
47d20b54 1539\r
187cb3dd 1540 if (BIT (byte2, 4) != 0) {\r
47d20b54 1541 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VIRTUAL_MACHINE), gShellDebug1HiiHandle);\r
187cb3dd 1542 }\r
47d20b54
MK
1543\r
1544 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 5);\r
187cb3dd 1545 } else {\r
47d20b54 1546 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 3);\r
187cb3dd
SZ
1547 }\r
1548 } else {\r
47d20b54 1549 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RSVD_FOR_FUTURE), gShellDebug1HiiHandle, 2);\r
187cb3dd 1550 }\r
5d73d92f 1551}\r
1552\r
a1d4bfcc 1553/**\r
1554 Display Processor Information (Type 4) information.\r
1555\r
1556 @param[in] Family The family value.\r
1557 @param[in] Option The option value.\r
1558**/\r
5d73d92f 1559VOID\r
1560DisplayProcessorFamily (\r
47d20b54
MK
1561 UINT8 Family,\r
1562 UINT8 Option\r
5d73d92f 1563 )\r
1564{\r
1565 //\r
1566 // Print prompt message\r
1567 //\r
47d20b54 1568 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle);\r
5d73d92f 1569 //\r
1570 // Print option\r
1571 //\r
1572 PRINT_INFO_OPTION (Family, Option);\r
1573\r
1574 //\r
1575 // Use switch to check\r
1576 //\r
1577 switch (Family) {\r
47d20b54
MK
1578 case 0x01:\r
1579 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER), gShellDebug1HiiHandle);\r
1580 break;\r
5d73d92f 1581\r
47d20b54
MK
1582 case 0x02:\r
1583 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
1584 break;\r
5d73d92f 1585\r
47d20b54
MK
1586 case 0x03:\r
1587 Print (L"8086\n");\r
1588 break;\r
5d73d92f 1589\r
47d20b54
MK
1590 case 0x04:\r
1591 Print (L"80286\n");\r
1592 break;\r
5d73d92f 1593\r
47d20b54
MK
1594 case 0x05:\r
1595 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL386_PROCESSOR), gShellDebug1HiiHandle);\r
1596 break;\r
5d73d92f 1597\r
47d20b54
MK
1598 case 0x06:\r
1599 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL486_PROCESSOR), gShellDebug1HiiHandle);\r
1600 break;\r
5d73d92f 1601\r
47d20b54
MK
1602 case 0x07:\r
1603 Print (L"8087\n");\r
1604 break;\r
5d73d92f 1605\r
47d20b54
MK
1606 case 0x08:\r
1607 Print (L"80287\n");\r
1608 break;\r
5d73d92f 1609\r
47d20b54
MK
1610 case 0x09:\r
1611 Print (L"80387\n");\r
1612 break;\r
5d73d92f 1613\r
47d20b54
MK
1614 case 0x0A:\r
1615 Print (L"80487\n");\r
1616 break;\r
5d73d92f 1617\r
47d20b54
MK
1618 case 0x0B:\r
1619 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PROC_FAMILY), gShellDebug1HiiHandle);\r
1620 break;\r
5d73d92f 1621\r
47d20b54
MK
1622 case 0x0C:\r
1623 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PRO_PROC), gShellDebug1HiiHandle);\r
1624 break;\r
5d73d92f 1625\r
47d20b54
MK
1626 case 0x0D:\r
1627 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_II_PROC), gShellDebug1HiiHandle);\r
1628 break;\r
5d73d92f 1629\r
47d20b54
MK
1630 case 0x0E:\r
1631 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_PROC_MMX), gShellDebug1HiiHandle);\r
1632 break;\r
5d73d92f 1633\r
47d20b54
MK
1634 case 0x0F:\r
1635 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CELERON_PROC), gShellDebug1HiiHandle);\r
1636 break;\r
5d73d92f 1637\r
47d20b54
MK
1638 case 0x10:\r
1639 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_XEON_PROC), gShellDebug1HiiHandle);\r
1640 break;\r
5d73d92f 1641\r
47d20b54
MK
1642 case 0x11:\r
1643 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_III_PROC), gShellDebug1HiiHandle);\r
1644 break;\r
5d73d92f 1645\r
47d20b54
MK
1646 case 0x12:\r
1647 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_M1_FAMILY), gShellDebug1HiiHandle);\r
1648 break;\r
187cb3dd 1649\r
47d20b54
MK
1650 case 0x13:\r
1651 Print (L"M2 Family\n");\r
1652 break;\r
187cb3dd 1653\r
47d20b54
MK
1654 case 0x14:\r
1655 Print (L"Intel Celeron M\n");\r
1656 break;\r
187cb3dd 1657\r
47d20b54
MK
1658 case 0x15:\r
1659 Print (L"Intel Pentium 4 HT\n");\r
1660 break;\r
5d73d92f 1661\r
47d20b54
MK
1662 case 0x18:\r
1663 Print (L"AMD Duron\n");\r
1664 break;\r
5d73d92f 1665\r
47d20b54
MK
1666 case 0x19:\r
1667 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_K5_FAMILY), gShellDebug1HiiHandle);\r
1668 break;\r
187cb3dd 1669\r
47d20b54
MK
1670 case 0x1A:\r
1671 Print (L"K6 Family\n");\r
1672 break;\r
187cb3dd 1673\r
47d20b54
MK
1674 case 0x1B:\r
1675 Print (L"K6-2\n");\r
1676 break;\r
187cb3dd 1677\r
47d20b54
MK
1678 case 0x1C:\r
1679 Print (L"K6-3\n");\r
1680 break;\r
187cb3dd 1681\r
47d20b54
MK
1682 case 0x1D:\r
1683 Print (L"AMD Althon Processor Family\n");\r
1684 break;\r
187cb3dd 1685\r
47d20b54
MK
1686 case 0x1E:\r
1687 Print (L"AMD 29000 Family\n");\r
1688 break;\r
187cb3dd 1689\r
47d20b54
MK
1690 case 0x1F:\r
1691 Print (L"K6-2+\n");\r
1692 break;\r
5d73d92f 1693\r
47d20b54
MK
1694 case 0x20:\r
1695 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_FAMILY), gShellDebug1HiiHandle);\r
1696 break;\r
5d73d92f 1697\r
47d20b54
MK
1698 case 0x21:\r
1699 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_601), gShellDebug1HiiHandle);\r
1700 break;\r
5d73d92f 1701\r
47d20b54
MK
1702 case 0x22:\r
1703 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_603), gShellDebug1HiiHandle);\r
1704 break;\r
5d73d92f 1705\r
47d20b54
MK
1706 case 0x23:\r
1707 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_603_PLUS), gShellDebug1HiiHandle);\r
1708 break;\r
5d73d92f 1709\r
47d20b54
MK
1710 case 0x24:\r
1711 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_PC_604), gShellDebug1HiiHandle);\r
1712 break;\r
5d73d92f 1713\r
47d20b54
MK
1714 case 0x25:\r
1715 Print (L"Power PC 620\n");\r
1716 break;\r
5d73d92f 1717\r
47d20b54
MK
1718 case 0x26:\r
1719 Print (L"Power PC 704\n");\r
1720 break;\r
5d73d92f 1721\r
47d20b54
MK
1722 case 0x27:\r
1723 Print (L"Power PC 750\n");\r
1724 break;\r
5d73d92f 1725\r
47d20b54
MK
1726 case 0x28:\r
1727 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_DUO), gShellDebug1HiiHandle);\r
1728 break;\r
5d73d92f 1729\r
47d20b54
MK
1730 case 0x29:\r
1731 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_DUO_MOBILE), gShellDebug1HiiHandle);\r
1732 break;\r
5d73d92f 1733\r
47d20b54
MK
1734 case 0x2A:\r
1735 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_SOLO_MOBILE), gShellDebug1HiiHandle);\r
1736 break;\r
5d73d92f 1737\r
47d20b54
MK
1738 case 0x2B:\r
1739 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_ATOM), gShellDebug1HiiHandle);\r
1740 break;\r
c326e078 1741\r
47d20b54
MK
1742 case 0x2C:\r
1743 Print (L"Intel(R) Core(TM) M processor\n");\r
1744 break;\r
44175ee7 1745\r
47d20b54
MK
1746 case 0x2D:\r
1747 Print (L"Intel(R) Core(TM) m3 processor\n");\r
1748 break;\r
44175ee7 1749\r
47d20b54
MK
1750 case 0x2E:\r
1751 Print (L"Intel(R) Core(TM) m5 processor\n");\r
1752 break;\r
44175ee7 1753\r
47d20b54
MK
1754 case 0x2F:\r
1755 Print (L"Intel(R) Core(TM) m7 processor\n");\r
1756 break;\r
5d73d92f 1757\r
47d20b54
MK
1758 case 0x30:\r
1759 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ALPHA_FAMILY_2), gShellDebug1HiiHandle);\r
1760 break;\r
5d73d92f 1761\r
47d20b54
MK
1762 case 0x31:\r
1763 Print (L"Alpha 21064\n");\r
1764 break;\r
5d73d92f 1765\r
47d20b54
MK
1766 case 0x32:\r
1767 Print (L"Alpha 21066\n");\r
1768 break;\r
5d73d92f 1769\r
47d20b54
MK
1770 case 0x33:\r
1771 Print (L"Alpha 21164\n");\r
1772 break;\r
5d73d92f 1773\r
47d20b54
MK
1774 case 0x34:\r
1775 Print (L"Alpha 21164PC\n");\r
1776 break;\r
5d73d92f 1777\r
47d20b54
MK
1778 case 0x35:\r
1779 Print (L"Alpha 21164a\n");\r
1780 break;\r
5d73d92f 1781\r
47d20b54
MK
1782 case 0x36:\r
1783 Print (L"Alpha 21264\n");\r
1784 break;\r
5d73d92f 1785\r
47d20b54
MK
1786 case 0x37:\r
1787 Print (L"Alpha 21364\n");\r
1788 break;\r
187cb3dd 1789\r
47d20b54
MK
1790 case 0x38:\r
1791 Print (L"AMD Turion II Ultra Dual-Core Mobile M Processor Family\n");\r
1792 break;\r
187cb3dd 1793\r
47d20b54
MK
1794 case 0x39:\r
1795 Print (L"AMD Turion II Dual-Core Mobile M Processor Family\n");\r
1796 break;\r
187cb3dd 1797\r
47d20b54
MK
1798 case 0x3A:\r
1799 Print (L"AMD Althon II Dual-Core M Processor Family\n");\r
1800 break;\r
187cb3dd 1801\r
47d20b54
MK
1802 case 0x3B:\r
1803 Print (L"AMD Opteron 6100 Series Processor\n");\r
1804 break;\r
187cb3dd 1805\r
47d20b54
MK
1806 case 0x3C:\r
1807 Print (L"AMD Opteron 4100 Series Processor\n");\r
1808 break;\r
187cb3dd 1809\r
47d20b54
MK
1810 case 0x3D:\r
1811 Print (L"AMD Opteron 6200 Series Processor\n");\r
1812 break;\r
187cb3dd 1813\r
47d20b54
MK
1814 case 0x3E:\r
1815 Print (L"AMD Opteron 4200 Series Processor\n");\r
1816 break;\r
073fe587 1817\r
47d20b54
MK
1818 case 0x3F:\r
1819 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_FX_SERIES), gShellDebug1HiiHandle);\r
1820 break;\r
5d73d92f 1821\r
47d20b54
MK
1822 case 0x40:\r
1823 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MIPS_FAMILY), gShellDebug1HiiHandle);\r
1824 break;\r
5d73d92f 1825\r
47d20b54
MK
1826 case 0x41:\r
1827 Print (L"MIPS R4000\n");\r
1828 break;\r
5d73d92f 1829\r
47d20b54
MK
1830 case 0x42:\r
1831 Print (L"MIPS R4200\n");\r
1832 break;\r
5d73d92f 1833\r
47d20b54
MK
1834 case 0x43:\r
1835 Print (L"MIPS R4400\n");\r
1836 break;\r
5d73d92f 1837\r
47d20b54
MK
1838 case 0x44:\r
1839 Print (L"MIPS R4600\n");\r
1840 break;\r
5d73d92f 1841\r
47d20b54
MK
1842 case 0x45:\r
1843 Print (L"MIPS R10000\n");\r
1844 break;\r
187cb3dd 1845\r
47d20b54
MK
1846 case 0x46:\r
1847 Print (L"AMD C-Series Processor\n");\r
1848 break;\r
187cb3dd 1849\r
47d20b54
MK
1850 case 0x47:\r
1851 Print (L"AMD E-Series Processor\n");\r
1852 break;\r
187cb3dd 1853\r
47d20b54
MK
1854 case 0x48:\r
1855 Print (L"AMD A-Series Processor\n");\r
1856 break;\r
187cb3dd 1857\r
47d20b54
MK
1858 case 0x49:\r
1859 Print (L"AMD G-Series Processor\n");\r
1860 break;\r
073fe587 1861\r
47d20b54
MK
1862 case 0x4A:\r
1863 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_Z_SERIES), gShellDebug1HiiHandle);\r
1864 break;\r
073fe587 1865\r
47d20b54
MK
1866 case 0x4B:\r
1867 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_R_SERIES), gShellDebug1HiiHandle);\r
1868 break;\r
073fe587 1869\r
47d20b54
MK
1870 case 0x4C:\r
1871 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_4300_SERIES), gShellDebug1HiiHandle);\r
1872 break;\r
073fe587 1873\r
47d20b54
MK
1874 case 0x4D:\r
1875 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_6300_SERIES), gShellDebug1HiiHandle);\r
1876 break;\r
073fe587 1877\r
47d20b54
MK
1878 case 0x4E:\r
1879 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_3300_SERIES), gShellDebug1HiiHandle);\r
1880 break;\r
073fe587 1881\r
47d20b54
MK
1882 case 0x4F:\r
1883 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_FIREPRO_SERIES), gShellDebug1HiiHandle);\r
1884 break;\r
5d73d92f 1885\r
47d20b54
MK
1886 case 0x50:\r
1887 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SPARC_FAMILY), gShellDebug1HiiHandle);\r
1888 break;\r
5d73d92f 1889\r
47d20b54
MK
1890 case 0x51:\r
1891 Print (L"SuperSparc\n");\r
1892 break;\r
5d73d92f 1893\r
47d20b54
MK
1894 case 0x52:\r
1895 Print (L"microSparc II\n");\r
1896 break;\r
5d73d92f 1897\r
47d20b54
MK
1898 case 0x53:\r
1899 Print (L"microSparc IIep\n");\r
1900 break;\r
5d73d92f 1901\r
47d20b54
MK
1902 case 0x54:\r
1903 Print (L"UltraSparc\n");\r
1904 break;\r
5d73d92f 1905\r
47d20b54
MK
1906 case 0x55:\r
1907 Print (L"UltraSparc II\n");\r
1908 break;\r
5d73d92f 1909\r
47d20b54
MK
1910 case 0x56:\r
1911 Print (L"UltraSparcIIi\n");\r
1912 break;\r
5d73d92f 1913\r
47d20b54
MK
1914 case 0x57:\r
1915 Print (L"UltraSparcIII\n");\r
1916 break;\r
5d73d92f 1917\r
47d20b54
MK
1918 case 0x58:\r
1919 Print (L"UltraSparcIIIi\n");\r
1920 break;\r
5d73d92f 1921\r
47d20b54
MK
1922 case 0x60:\r
1923 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_68040_FAMILY), gShellDebug1HiiHandle);\r
1924 break;\r
5d73d92f 1925\r
47d20b54
MK
1926 case 0x61:\r
1927 Print (L"68xx\n");\r
1928 break;\r
5d73d92f 1929\r
47d20b54
MK
1930 case 0x62:\r
1931 Print (L"68000\n");\r
1932 break;\r
5d73d92f 1933\r
47d20b54
MK
1934 case 0x63:\r
1935 Print (L"68010\n");\r
1936 break;\r
5d73d92f 1937\r
47d20b54
MK
1938 case 0x64:\r
1939 Print (L"68020\n");\r
1940 break;\r
5d73d92f 1941\r
47d20b54
MK
1942 case 0x65:\r
1943 Print (L"68030\n");\r
1944 break;\r
c326e078 1945\r
47d20b54
MK
1946 case 0x66:\r
1947 Print (L"AMD Athlon(TM) X4 Quad-Core Processor Family\n");\r
1948 break;\r
c326e078 1949\r
47d20b54
MK
1950 case 0x67:\r
1951 Print (L"AMD Opteron(TM) X1000 Series Processor\n");\r
1952 break;\r
c326e078 1953\r
47d20b54
MK
1954 case 0x68:\r
1955 Print (L"AMD Opteron(TM) X2000 Series APU\n");\r
1956 break;\r
44175ee7 1957\r
47d20b54
MK
1958 case 0x69:\r
1959 Print (L"AMD Opteron(TM) A-Series Processor\n");\r
1960 break;\r
44175ee7 1961\r
47d20b54
MK
1962 case 0x6A:\r
1963 Print (L"AMD Opteron(TM) X3000 Series APU\n");\r
1964 break;\r
5734d486 1965\r
47d20b54
MK
1966 case 0x6B:\r
1967 Print (L"AMD Zen Processor Family\n");\r
1968 break;\r
5d73d92f 1969\r
47d20b54
MK
1970 case 0x70:\r
1971 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HOBBIT_FAMILY), gShellDebug1HiiHandle);\r
1972 break;\r
5d73d92f 1973\r
47d20b54
MK
1974 case 0x78:\r
1975 Print (L"Crusoe TM5000\n");\r
1976 break;\r
5d73d92f 1977\r
47d20b54
MK
1978 case 0x79:\r
1979 Print (L"Crusoe TM3000\n");\r
1980 break;\r
5d73d92f 1981\r
47d20b54
MK
1982 case 0x7A:\r
1983 Print (L"Efficeon TM8000\n");\r
1984 break;\r
5d73d92f 1985\r
47d20b54
MK
1986 case 0x80:\r
1987 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WEITEK), gShellDebug1HiiHandle);\r
1988 break;\r
5d73d92f 1989\r
47d20b54
MK
1990 case 0x82:\r
1991 Print (L"Itanium\n");\r
1992 break;\r
5d73d92f 1993\r
47d20b54
MK
1994 case 0x83:\r
1995 Print (L"AMD Athlon64\n");\r
1996 break;\r
5d73d92f 1997\r
47d20b54
MK
1998 case 0x84:\r
1999 Print (L"AMD Opteron\n");\r
2000 break;\r
5d73d92f 2001\r
47d20b54
MK
2002 case 0x85:\r
2003 Print (L"AMD Sempron\n");\r
2004 break;\r
5d73d92f 2005\r
47d20b54
MK
2006 case 0x86:\r
2007 Print (L"AMD Turion64 Mobile\n");\r
2008 break;\r
5d73d92f 2009\r
47d20b54
MK
2010 case 0x87:\r
2011 Print (L"Dual-Core AMD Opteron\n");\r
2012 break;\r
5d73d92f 2013\r
47d20b54
MK
2014 case 0x88:\r
2015 Print (L"AMD Athlon 64X2 DualCore\n");\r
2016 break;\r
5d73d92f 2017\r
47d20b54
MK
2018 case 0x89:\r
2019 Print (L"AMD Turion 64X2 Mobile\n");\r
2020 break;\r
5d73d92f 2021\r
47d20b54
MK
2022 case 0x8A:\r
2023 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_QUAD_CORE), gShellDebug1HiiHandle);\r
2024 break;\r
5d73d92f 2025\r
47d20b54
MK
2026 case 0x8B:\r
2027 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_THIRD_GENERATION), gShellDebug1HiiHandle);\r
2028 break;\r
5d73d92f 2029\r
47d20b54
MK
2030 case 0x8C:\r
2031 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_FX_QUAD_CORE), gShellDebug1HiiHandle);\r
2032 break;\r
5d73d92f 2033\r
47d20b54
MK
2034 case 0x8D:\r
2035 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_X4_QUAD_CORE), gShellDebug1HiiHandle);\r
2036 break;\r
5d73d92f 2037\r
47d20b54
MK
2038 case 0x8E:\r
2039 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_X2_DUAL_CORE), gShellDebug1HiiHandle);\r
2040 break;\r
5d73d92f 2041\r
47d20b54
MK
2042 case 0x8F:\r
2043 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_ATHLON_X2_DUAL_CORE), gShellDebug1HiiHandle);\r
2044 break;\r
5d73d92f 2045\r
47d20b54
MK
2046 case 0x90:\r
2047 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PA_RISC_FAMILY), gShellDebug1HiiHandle);\r
2048 break;\r
187cb3dd 2049\r
47d20b54
MK
2050 case 0x91:\r
2051 Print (L"PA-RISC 8500\n");\r
2052 break;\r
187cb3dd 2053\r
47d20b54
MK
2054 case 0x92:\r
2055 Print (L"PA-RISC 8000\n");\r
2056 break;\r
187cb3dd 2057\r
47d20b54
MK
2058 case 0x93:\r
2059 Print (L"PA-RISC 7300LC\n");\r
2060 break;\r
187cb3dd 2061\r
47d20b54
MK
2062 case 0x94:\r
2063 Print (L"PA-RISC 7200\n");\r
2064 break;\r
187cb3dd 2065\r
47d20b54
MK
2066 case 0x95:\r
2067 Print (L"PA-RISC 7100LC\n");\r
2068 break;\r
187cb3dd 2069\r
47d20b54
MK
2070 case 0x96:\r
2071 Print (L"PA-RISC 7100\n");\r
2072 break;\r
5d73d92f 2073\r
47d20b54
MK
2074 case 0xA0:\r
2075 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_V30_FAMILY), gShellDebug1HiiHandle);\r
2076 break;\r
5d73d92f 2077\r
47d20b54
MK
2078 case 0xA1:\r
2079 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3200_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2080 break;\r
5d73d92f 2081\r
47d20b54
MK
2082 case 0xA2:\r
2083 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3000_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2084 break;\r
5d73d92f 2085\r
47d20b54
MK
2086 case 0xA3:\r
2087 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5300_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2088 break;\r
5d73d92f 2089\r
47d20b54
MK
2090 case 0xA4:\r
2091 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5100_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2092 break;\r
5d73d92f 2093\r
47d20b54
MK
2094 case 0xA5:\r
2095 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5000_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2096 break;\r
5d73d92f 2097\r
47d20b54
MK
2098 case 0xA6:\r
2099 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_LV_DUAL_CORE), gShellDebug1HiiHandle);\r
2100 break;\r
5d73d92f 2101\r
47d20b54
MK
2102 case 0xA7:\r
2103 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_ULV_DUAL_CORE), gShellDebug1HiiHandle);\r
2104 break;\r
5d73d92f 2105\r
47d20b54
MK
2106 case 0xA8:\r
2107 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7100_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2108 break;\r
5d73d92f 2109\r
47d20b54
MK
2110 case 0xA9:\r
2111 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5400_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2112 break;\r
5d73d92f 2113\r
47d20b54
MK
2114 case 0xAA:\r
2115 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_QUAD_CORE), gShellDebug1HiiHandle);\r
2116 break;\r
5d73d92f 2117\r
47d20b54
MK
2118 case 0xAB:\r
2119 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5200_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2120 break;\r
5d73d92f 2121\r
47d20b54
MK
2122 case 0xAC:\r
2123 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7200_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2124 break;\r
5d73d92f 2125\r
47d20b54
MK
2126 case 0xAD:\r
2127 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7300_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2128 break;\r
5d73d92f 2129\r
47d20b54
MK
2130 case 0xAE:\r
2131 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7400_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2132 break;\r
5d73d92f 2133\r
47d20b54
MK
2134 case 0xAF:\r
2135 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7400_SERIES_MULTI_CORE), gShellDebug1HiiHandle);\r
2136 break;\r
5d73d92f 2137\r
47d20b54
MK
2138 case 0xB0:\r
2139 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PENTIUM_III_XEON), gShellDebug1HiiHandle);\r
2140 break;\r
187cb3dd 2141\r
47d20b54
MK
2142 case 0xB1:\r
2143 Print (L"Pentium III Processorwith Intel SpeedStep Technology\n");\r
2144 break;\r
187cb3dd 2145\r
47d20b54
MK
2146 case 0xB2:\r
2147 Print (L"Pentium 4 processor\n");\r
2148 break;\r
187cb3dd 2149\r
47d20b54
MK
2150 case 0xB3:\r
2151 Print (L"Intel Xeon Processor\n");\r
2152 break;\r
187cb3dd 2153\r
47d20b54
MK
2154 case 0xB4:\r
2155 Print (L"AS400 Family\n");\r
2156 break;\r
187cb3dd 2157\r
47d20b54
MK
2158 case 0xB5:\r
2159 Print (L"Intel Xeon processor MP\n");\r
2160 break;\r
187cb3dd 2161\r
47d20b54
MK
2162 case 0xB6:\r
2163 Print (L"AMD Althon XP Processor Family\n");\r
2164 break;\r
187cb3dd 2165\r
47d20b54
MK
2166 case 0xB7:\r
2167 Print (L"AMD Althon MP Promcessor Family\n");\r
2168 break;\r
187cb3dd 2169\r
47d20b54
MK
2170 case 0xB8:\r
2171 Print (L"Intel Itanium 2 processor\n");\r
2172 break;\r
187cb3dd 2173\r
47d20b54
MK
2174 case 0xB9:\r
2175 Print (L"Intel Penium M processor\n");\r
2176 break;\r
187cb3dd 2177\r
47d20b54
MK
2178 case 0xBA:\r
2179 Print (L"Intel Celeron D processor\n");\r
2180 break;\r
187cb3dd 2181\r
47d20b54
MK
2182 case 0xBB:\r
2183 Print (L"Intel Pentium D processor\n");\r
2184 break;\r
187cb3dd 2185\r
47d20b54
MK
2186 case 0xBC:\r
2187 Print (L"Intel Pentium Processor Extreme Edition\n");\r
2188 break;\r
187cb3dd 2189\r
47d20b54
MK
2190 case 0xBD:\r
2191 Print (L"Intel Core Solo Processor\n");\r
2192 break;\r
187cb3dd 2193\r
47d20b54
MK
2194 case 0xBF:\r
2195 Print (L"Intel Core 2 Duo Processor\n");\r
2196 break;\r
5d73d92f 2197\r
47d20b54
MK
2198 case 0xC0:\r
2199 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_SOLO), gShellDebug1HiiHandle);\r
2200 break;\r
5d73d92f 2201\r
47d20b54
MK
2202 case 0xC1:\r
2203 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_EXTREME), gShellDebug1HiiHandle);\r
2204 break;\r
5d73d92f 2205\r
47d20b54
MK
2206 case 0xC2:\r
2207 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_QUAD), gShellDebug1HiiHandle);\r
2208 break;\r
5d73d92f 2209\r
47d20b54
MK
2210 case 0xC3:\r
2211 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_EXTREME), gShellDebug1HiiHandle);\r
2212 break;\r
5d73d92f 2213\r
47d20b54
MK
2214 case 0xC4:\r
2215 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_DUO_MOBILE), gShellDebug1HiiHandle);\r
2216 break;\r
5d73d92f 2217\r
47d20b54
MK
2218 case 0xC5:\r
2219 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE2_SOLO_MOBILE), gShellDebug1HiiHandle);\r
2220 break;\r
5d73d92f 2221\r
47d20b54
MK
2222 case 0xC6:\r
2223 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CORE_I7), gShellDebug1HiiHandle);\r
2224 break;\r
5d73d92f 2225\r
47d20b54
MK
2226 case 0xC7:\r
2227 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_CELERON_DUAL_CORE), gShellDebug1HiiHandle);\r
2228 break;\r
5d73d92f 2229\r
47d20b54
MK
2230 case 0xC8:\r
2231 Print (L"IBM 390\n");\r
2232 break;\r
5d73d92f 2233\r
47d20b54
MK
2234 case 0xC9:\r
2235 Print (L"G4\n");\r
2236 break;\r
5d73d92f 2237\r
47d20b54
MK
2238 case 0xCA:\r
2239 Print (L"G5\n");\r
2240 break;\r
5d73d92f 2241\r
47d20b54
MK
2242 case 0xCB:\r
2243 Print (L"G6\n");\r
2244 break;\r
5d73d92f 2245\r
47d20b54
MK
2246 case 0xCC:\r
2247 Print (L"zArchitecture\n");\r
2248 break;\r
187cb3dd 2249\r
47d20b54
MK
2250 case 0xCD:\r
2251 Print (L"Intel Core i5 processor\n");\r
2252 break;\r
187cb3dd 2253\r
47d20b54
MK
2254 case 0xCE:\r
2255 Print (L"Intel Core i3 processor\n");\r
2256 break;\r
7475ac51 2257\r
47d20b54
MK
2258 case 0xCF:\r
2259 Print (L"Intel Core i9 processor\n");\r
2260 break;\r
5d73d92f 2261\r
47d20b54
MK
2262 case 0xD2:\r
2263 Print (L"ViaC7M\n");\r
2264 break;\r
5d73d92f 2265\r
47d20b54
MK
2266 case 0xD3:\r
2267 Print (L"ViaC7D\n");\r
2268 break;\r
5d73d92f 2269\r
47d20b54
MK
2270 case 0xD4:\r
2271 Print (L"ViaC7\n");\r
2272 break;\r
5d73d92f 2273\r
47d20b54
MK
2274 case 0xD5:\r
2275 Print (L"Eden\n");\r
2276 break;\r
5d73d92f 2277\r
47d20b54
MK
2278 case 0xD6:\r
2279 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_MULTI_CORE), gShellDebug1HiiHandle);\r
2280 break;\r
5d73d92f 2281\r
47d20b54
MK
2282 case 0xD7:\r
2283 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2284 break;\r
5d73d92f 2285\r
47d20b54
MK
2286 case 0xD8:\r
2287 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_3_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2288 break;\r
5d73d92f 2289\r
47d20b54
MK
2290 case 0xDA:\r
2291 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2292 break;\r
5d73d92f 2293\r
47d20b54
MK
2294 case 0xDB:\r
2295 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_5_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2296 break;\r
5d73d92f 2297\r
47d20b54
MK
2298 case 0xDD:\r
2299 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_DUAL_CORE), gShellDebug1HiiHandle);\r
2300 break;\r
5d73d92f 2301\r
47d20b54
MK
2302 case 0xDE:\r
2303 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_QUAD_CORE), gShellDebug1HiiHandle);\r
2304 break;\r
5d73d92f 2305\r
47d20b54
MK
2306 case 0xDF:\r
2307 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INTEL_XEON_7_SERIES_MULTI_CORE), gShellDebug1HiiHandle);\r
2308 break;\r
187cb3dd 2309\r
47d20b54
MK
2310 case 0xE0:\r
2311 Print (L"Multi-Core Intel Xeon processor 3400 Series\n");\r
2312 break;\r
073fe587 2313\r
47d20b54
MK
2314 case 0xE4:\r
2315 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_OPTERON_3000_SERIES), gShellDebug1HiiHandle);\r
2316 break;\r
073fe587 2317\r
47d20b54
MK
2318 case 0xE5:\r
2319 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_SEMPRON_II), gShellDebug1HiiHandle);\r
2320 break;\r
073fe587 2321\r
47d20b54
MK
2322 case 0xE6:\r
2323 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_EMBEDDED_OPTERON_QUAD_CORE), gShellDebug1HiiHandle);\r
2324 break;\r
5d73d92f 2325\r
47d20b54
MK
2326 case 0xE7:\r
2327 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_PHENOM_TRIPLE_CORE), gShellDebug1HiiHandle);\r
2328 break;\r
5d73d92f 2329\r
47d20b54
MK
2330 case 0xE8:\r
2331 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_TURION_ULTRA_DUAL_CORE_MOBILE), gShellDebug1HiiHandle);\r
2332 break;\r
5d73d92f 2333\r
47d20b54
MK
2334 case 0xE9:\r
2335 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_TURION_DUAL_CORE_MOBILE), gShellDebug1HiiHandle);\r
2336 break;\r
5d73d92f 2337\r
47d20b54
MK
2338 case 0xEA:\r
2339 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_ATHLON_DUAL_CORE), gShellDebug1HiiHandle);\r
2340 break;\r
5d73d92f 2341\r
47d20b54
MK
2342 case 0xEB:\r
2343 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AMD_SEMPRON_SI), gShellDebug1HiiHandle);\r
2344 break;\r
5d73d92f 2345\r
47d20b54
MK
2346 case 0xEC:\r
2347 Print (L"AMD Phenom II Processor Family\n");\r
2348 break;\r
187cb3dd 2349\r
47d20b54
MK
2350 case 0xED:\r
2351 Print (L"AMD Althon II Processor Family\n");\r
2352 break;\r
187cb3dd 2353\r
47d20b54
MK
2354 case 0xEE:\r
2355 Print (L"Six-Core AMD Opteron Processor Family\n");\r
2356 break;\r
187cb3dd 2357\r
47d20b54
MK
2358 case 0xEF:\r
2359 Print (L"AMD Sempron M Processor Family\n");\r
2360 break;\r
187cb3dd 2361\r
47d20b54
MK
2362 case 0xFA:\r
2363 Print (L"i860\n");\r
2364 break;\r
5d73d92f 2365\r
47d20b54
MK
2366 case 0xFB:\r
2367 Print (L"i960\n");\r
2368 break;\r
5d73d92f 2369\r
47d20b54
MK
2370 default:\r
2371 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY), gShellDebug1HiiHandle);\r
5d73d92f 2372 }\r
47d20b54 2373\r
5d73d92f 2374 //\r
2375 // end switch\r
2376 //\r
2377}\r
2378\r
a1d4bfcc 2379/**\r
2380 Display processor family information.\r
2381\r
2382 @param[in] Family2 The family value.\r
2383 @param[in] Option The option value.\r
2384**/\r
5d73d92f 2385VOID\r
2386DisplayProcessorFamily2 (\r
47d20b54
MK
2387 IN UINT16 Family2,\r
2388 IN UINT8 Option\r
5d73d92f 2389 )\r
2390{\r
2391 //\r
2392 // Print prompt message\r
2393 //\r
47d20b54 2394 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROCESSOR_FAMILY), gShellDebug1HiiHandle);\r
5d73d92f 2395\r
2396 //\r
2397 // Print option\r
2398 //\r
2399 PRINT_INFO_OPTION (Family2, Option);\r
2400\r
2401 //\r
2402 // Use switch to check\r
2403 //\r
2404 switch (Family2) {\r
44175ee7
SZ
2405 case 0x100:\r
2406 Print (L"ARMv7\n");\r
2407 break;\r
2408\r
2409 case 0x101:\r
2410 Print (L"ARMv8\n");\r
2411 break;\r
2412\r
5d73d92f 2413 case 0x104:\r
2414 Print (L"SH-3\n");\r
2415 break;\r
2416\r
2417 case 0x105:\r
2418 Print (L"SH-4\n");\r
2419 break;\r
2420\r
2421 case 0x118:\r
2422 Print (L"ARM\n");\r
2423 break;\r
2424\r
2425 case 0x119:\r
2426 Print (L"StrongARM\n");\r
2427 break;\r
2428\r
2429 case 0x12C:\r
2430 Print (L"6x86\n");\r
2431 break;\r
2432\r
2433 case 0x12D:\r
2434 Print (L"MediaGX\n");\r
2435 break;\r
2436\r
2437 case 0x12E:\r
2438 Print (L"MII\n");\r
2439 break;\r
2440\r
2441 case 0x140:\r
2442 Print (L"WinChip\n");\r
2443 break;\r
2444\r
2445 case 0x15E:\r
2446 Print (L"DSP\n");\r
2447 break;\r
2448\r
2449 case 0x1F4:\r
2450 Print (L"Video Processor\n");\r
2451 break;\r
2452\r
e797a806
AC
2453 case 0x200:\r
2454 Print (L"RISC-V RV32\n");\r
2455 break;\r
2456\r
2457 case 0x201:\r
2458 Print (L"RISC-V RV64\n");\r
2459 break;\r
2460\r
2461 case 0x202:\r
2462 Print (L"RISC-V RV128\n");\r
2463 break;\r
2464\r
5d73d92f 2465 default:\r
47d20b54 2466 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_PROC_FAMILY), gShellDebug1HiiHandle);\r
5d73d92f 2467 }\r
5d73d92f 2468}\r
2469\r
a1d4bfcc 2470/**\r
2471 Display processor voltage information.\r
2472\r
2473 @param[in] Voltage The Voltage.\r
e0c2cc6f 2474 Bit 7 Set to 0, indicating 'legacy' mode for processor voltage\r
2475 Bits 6:4 Reserved, must be zero\r
2476 Bits 3:0 Voltage Capability.\r
2477 A Set bit indicates that the voltage is supported.\r
2478 Bit 0 - 5V\r
2479 Bit 1 - 3.3V\r
2480 Bit 2 - 2.9V\r
2481 Bit 3 - Reserved, must be zero.\r
2482\r
2483 Note:\r
2484 Setting of multiple bits indicates the socket is configurable\r
2485 If bit 7 is set to 1, the remaining seven bits of the field are set to\r
2486 contain the processor's current voltage times 10.\r
2487 For example, the field value for a processor voltage of 1.8 volts would be\r
2488 92h = 80h + (1.8 * 10) = 80h + 18 = 80h +12h.\r
a1d4bfcc 2489\r
2490 @param[in] Option The option.\r
2491**/\r
5d73d92f 2492VOID\r
2493DisplayProcessorVoltage (\r
47d20b54
MK
2494 IN UINT8 Voltage,\r
2495 IN UINT8 Option\r
5d73d92f 2496 )\r
5d73d92f 2497{\r
47d20b54 2498 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_INFO), gShellDebug1HiiHandle);\r
5d73d92f 2499 //\r
2500 // Print option\r
2501 //\r
2502 PRINT_INFO_OPTION (Voltage, Option);\r
2503\r
2504 if (BIT (Voltage, 7) != 0) {\r
47d20b54 2505 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_CURRENT_VOLTAGE), gShellDebug1HiiHandle, (Voltage - 0x80));\r
5d73d92f 2506 } else {\r
2507 if (BIT (Voltage, 0) != 0) {\r
47d20b54 2508 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_5V_SUPOPRTED), gShellDebug1HiiHandle);\r
5d73d92f 2509 }\r
2510\r
2511 if (BIT (Voltage, 1) != 0) {\r
47d20b54 2512 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_33V_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 2513 }\r
2514\r
2515 if (BIT (Voltage, 2) != 0) {\r
47d20b54 2516 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_29V_SUPPORTED), gShellDebug1HiiHandle);\r
5d73d92f 2517 }\r
47d20b54 2518\r
5d73d92f 2519 //\r
2520 // check the reserved zero bits:\r
2521 //\r
2522 if (BIT (Voltage, 3) != 0) {\r
47d20b54 2523 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT3_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2524 }\r
2525\r
2526 if (BIT (Voltage, 4) != 0) {\r
47d20b54 2527 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2528 }\r
2529\r
2530 if (BIT (Voltage, 5) != 0) {\r
47d20b54 2531 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT5_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2532 }\r
2533\r
2534 if (BIT (Voltage, 6) != 0) {\r
47d20b54 2535 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT6_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2536 }\r
2537 }\r
2538}\r
2539\r
a1d4bfcc 2540/**\r
2541 Display processor information.\r
2542\r
2543 @param[in] Status The status.\r
e0c2cc6f 2544Bit 7 Reserved, must be 0\r
187cb3dd
SZ
2545Bit 6 CPU Socket Populated\r
2546 1 - CPU Socket Populated\r
2547 0 - CPU Socket Unpopulated\r
2548Bits 5:3 Reserved, must be zero\r
2549Bits 2:0 CPU Status\r
e0c2cc6f 2550 0h - Unknown\r
2551 1h - CPU Enabled\r
2552 2h - CPU Disabled by User via BIOS Setup\r
2553 3h - CPU Disabled By BIOS (POST Error)\r
2554 4h - CPU is Idle, waiting to be enabled.\r
2555 5-6h - Reserved\r
2556 7h - Other\r
a1d4bfcc 2557\r
2558 @param[in] Option The option\r
2559**/\r
5d73d92f 2560VOID\r
2561DisplayProcessorStatus (\r
47d20b54
MK
2562 IN UINT8 Status,\r
2563 IN UINT8 Option\r
5d73d92f 2564 )\r
5d73d92f 2565{\r
47d20b54 2566 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PROC_STATUS), gShellDebug1HiiHandle);\r
5d73d92f 2567 PRINT_INFO_OPTION (Status, Option);\r
2568\r
2569 if (BIT (Status, 7) != 0) {\r
47d20b54 2570 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT7_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2571 } else if (BIT (Status, 5) != 0) {\r
47d20b54 2572 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT5_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2573 } else if (BIT (Status, 4) != 0) {\r
47d20b54 2574 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2575 } else if (BIT (Status, 3) != 0) {\r
47d20b54 2576 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT3_NOT_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 2577 }\r
47d20b54 2578\r
5d73d92f 2579 //\r
2580 // Check BIT 6\r
2581 //\r
2582 if (BIT (Status, 6) != 0) {\r
47d20b54 2583 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_POPULATED), gShellDebug1HiiHandle);\r
5d73d92f 2584 } else {\r
47d20b54 2585 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_SOCKET_UNPOPULATED), gShellDebug1HiiHandle);\r
5d73d92f 2586 }\r
47d20b54 2587\r
5d73d92f 2588 //\r
2589 // Check BITs 2:0\r
2590 //\r
2591 switch (Status & 0x07) {\r
47d20b54
MK
2592 case 0:\r
2593 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
2594 break;\r
5d73d92f 2595\r
47d20b54
MK
2596 case 1:\r
2597 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_ENABLED), gShellDebug1HiiHandle);\r
2598 break;\r
5d73d92f 2599\r
47d20b54
MK
2600 case 2:\r
2601 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_DISABLED_BY_USER), gShellDebug1HiiHandle);\r
2602 break;\r
5d73d92f 2603\r
47d20b54
MK
2604 case 3:\r
2605 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_DIABLED_BY_BIOS), gShellDebug1HiiHandle);\r
2606 break;\r
5d73d92f 2607\r
47d20b54
MK
2608 case 4:\r
2609 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CPU_IDLE), gShellDebug1HiiHandle);\r
2610 break;\r
5d73d92f 2611\r
47d20b54
MK
2612 case 7:\r
2613 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHERS), gShellDebug1HiiHandle);\r
2614 break;\r
5d73d92f 2615\r
47d20b54
MK
2616 default:\r
2617 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle);\r
5d73d92f 2618 }\r
2619}\r
2620\r
a1d4bfcc 2621/**\r
2622 Display information about Memory Controller Information (Type 5).\r
2623\r
2624 @param[in] Size Memory size.\r
2625 @param[in] SlotNum Which slot is this about.\r
2626 @param[in] Option Option for the level of detail output required.\r
2627**/\r
5d73d92f 2628VOID\r
2629DisplayMaxMemoryModuleSize (\r
47d20b54
MK
2630 IN UINT8 Size,\r
2631 IN UINT8 SlotNum,\r
2632 IN UINT8 Option\r
5d73d92f 2633 )\r
2634{\r
47d20b54
MK
2635 UINTN MaxSize;\r
2636\r
2637 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SIZE_LARGEST_MEM), gShellDebug1HiiHandle);\r
5d73d92f 2638 //\r
2639 // MaxSize is determined by follow formula\r
2640 //\r
47d20b54
MK
2641 MaxSize = (UINTN)1 << Size;\r
2642 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), gShellDebug1HiiHandle, MaxSize);\r
5d73d92f 2643\r
2644 if (Option >= SHOW_DETAIL) {\r
47d20b54
MK
2645 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MAX_AMOUNT_MEM), gShellDebug1HiiHandle);\r
2646 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_MB), gShellDebug1HiiHandle, MaxSize, SlotNum, MaxSize * SlotNum);\r
5d73d92f 2647 }\r
2648}\r
2649\r
a1d4bfcc 2650/**\r
2651 Display information about memory configuration handles.\r
2652\r
2653 @param[in] Handles The buffer of handles to output info on.\r
2654 @param[in] SlotNum The number of handles in the above buffer.\r
2655 @param[in] Option Option for the level of detail output required.\r
2656**/\r
5d73d92f 2657VOID\r
2658DisplayMemoryModuleConfigHandles (\r
47d20b54
MK
2659 IN UINT16 *Handles,\r
2660 IN UINT8 SlotNum,\r
2661 IN UINT8 Option\r
5d73d92f 2662 )\r
2663{\r
47d20b54
MK
2664 UINT8 Index;\r
2665\r
2666 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLES_CONTROLLED), gShellDebug1HiiHandle, SlotNum);\r
5d73d92f 2667\r
2668 if (Option >= SHOW_DETAIL) {\r
2669 //\r
2670 // No handle, Handles is INVALID.\r
2671 //\r
2672 if (SlotNum == 0) {\r
47d20b54 2673 return;\r
5d73d92f 2674 }\r
2675\r
47d20b54 2676 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLES_LIST_CONTROLLED), gShellDebug1HiiHandle);\r
5d73d92f 2677 for (Index = 0; Index < SlotNum; Index++) {\r
47d20b54 2678 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HANDLE), gShellDebug1HiiHandle, Index + 1, Handles[Index]);\r
5d73d92f 2679 }\r
2680 }\r
2681}\r
a1d4bfcc 2682\r
2683/**\r
2684 Display Memory Module Information (Type 6).\r
2685\r
2686 @param[in] BankConnections\r
2687 @param[in] Option\r
2688**/\r
5d73d92f 2689VOID\r
2690DisplayMmBankConnections (\r
47d20b54
MK
2691 IN UINT8 BankConnections,\r
2692 IN UINT8 Option\r
5d73d92f 2693 )\r
2694{\r
47d20b54
MK
2695 UINT8 High;\r
2696 UINT8 Low;\r
5d73d92f 2697\r
47d20b54 2698 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_CONNECTIONS), gShellDebug1HiiHandle);\r
5d73d92f 2699 //\r
2700 // Print option\r
2701 //\r
2702 PRINT_INFO_OPTION (BankConnections, Option);\r
2703\r
2704 //\r
2705 // Divide it to high and low\r
2706 //\r
47d20b54
MK
2707 High = (UINT8)(BankConnections & 0xF0);\r
2708 Low = (UINT8)(BankConnections & 0x0F);\r
5d73d92f 2709 if (High != 0xF) {\r
2710 if (Low != 0xF) {\r
47d20b54 2711 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS), gShellDebug1HiiHandle, High, Low, High, Low);\r
5d73d92f 2712 } else {\r
47d20b54 2713 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS_2), gShellDebug1HiiHandle, High, High);\r
5d73d92f 2714 }\r
2715 } else {\r
2716 if (Low != 0xF) {\r
47d20b54 2717 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BANK_RAS_2), gShellDebug1HiiHandle, Low, Low);\r
5d73d92f 2718 } else {\r
47d20b54 2719 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_BANKS_CONNECTED), gShellDebug1HiiHandle);\r
5d73d92f 2720 }\r
2721 }\r
2722}\r
2723\r
a1d4bfcc 2724/**\r
2725 Display memory informcation.\r
2726\r
5d73d92f 2727 Bits 0:6 Size (n),\r
2728 where 2**n is the size in MB with three special-case values:\r
2729 7Dh Not determinable (Installed Size only)\r
2730 7Eh Module is installed, but no memory has been enabled\r
2731 7Fh Not installed\r
2732 Bit 7 Defines whether the memory module has a single- (0)\r
2733 or double-bank (1) connection.\r
2734\r
a1d4bfcc 2735 @param[in] Size - The size\r
2736 @param[in] Option - The option\r
5d73d92f 2737**/\r
a1d4bfcc 2738VOID\r
2739DisplayMmMemorySize (\r
47d20b54
MK
2740 IN UINT8 Size,\r
2741 IN UINT8 Option\r
a1d4bfcc 2742 )\r
5d73d92f 2743{\r
47d20b54
MK
2744 UINT8 Value;\r
2745\r
2746 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEMORY_SIZE), gShellDebug1HiiHandle);\r
5d73d92f 2747 //\r
2748 // Print option\r
2749 //\r
2750 PRINT_INFO_OPTION (Size, Option);\r
2751\r
2752 //\r
2753 // Get the low bits(0-6 bit)\r
2754 //\r
47d20b54 2755 Value = (UINT8)(Size & 0x7F);\r
5d73d92f 2756 if (Value == 0x7D) {\r
47d20b54 2757 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_SIZE_NOT_DETERMINABLE), gShellDebug1HiiHandle);\r
5d73d92f 2758 } else if (Value == 0x7E) {\r
47d20b54 2759 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MODULE_INSTALLED), gShellDebug1HiiHandle);\r
5d73d92f 2760 } else if (Value == 0x7F) {\r
47d20b54 2761 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_INSTALLED), gShellDebug1HiiHandle);\r
5d73d92f 2762 } else {\r
47d20b54 2763 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_SIZE), gShellDebug1HiiHandle, 1 << Value);\r
5d73d92f 2764 }\r
2765\r
2766 if (BIT (Size, 7) != 0) {\r
47d20b54 2767 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_MODULE_DOUBLE_BANK), gShellDebug1HiiHandle);\r
5d73d92f 2768 } else {\r
47d20b54 2769 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MEM_MODULE_SINGLE_BANK), gShellDebug1HiiHandle);\r
5d73d92f 2770 }\r
2771}\r
2772\r
187cb3dd
SZ
2773/**\r
2774 Display Cache Configuration.\r
2775\r
2776 @param[in] CacheConfiguration Cache Configuration.\r
2777Bits 15:10 Reserved, must be 0\r
2778Bits 9:8 Operational Mode\r
2779 0h - Write Through\r
2780 1h - Write Back\r
2781 2h - Varies with Memory Address\r
2782 3h - Unknown\r
2783Bit 7 Enabled/Disabled\r
2784 1 - Enabled\r
2785 0 - Disabled\r
2786Bits 6:5 Location\r
2787 0h - Internal\r
2788 1h - External\r
2789 2h - Reserved\r
2790 3h - Unknown\r
2791Bit 4 Reserved, must be zero\r
2792Bit 3 Cache Socketed\r
2793 1 - Socketed\r
2794 0 - Unsocketed\r
2795Bits 2:0 Cache Level\r
2796 1 through 8 (For example, an L1 cache would\r
2797 use value 000b and an L3 cache would use 010b.)\r
2798\r
2799 @param[in] Option The option\r
2800**/\r
2801VOID\r
2802DisplayCacheConfiguration (\r
47d20b54
MK
2803 IN UINT16 CacheConfiguration,\r
2804 IN UINT8 Option\r
187cb3dd
SZ
2805 )\r
2806{\r
47d20b54 2807 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_CONFIGURATION), gShellDebug1HiiHandle);\r
187cb3dd
SZ
2808 PRINT_INFO_OPTION (CacheConfiguration, Option);\r
2809\r
2810 if (BIT (CacheConfiguration, 15) != 0) {\r
47d20b54 2811 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT15_NOT_ZERO), gShellDebug1HiiHandle);\r
187cb3dd 2812 } else if (BIT (CacheConfiguration, 14) != 0) {\r
47d20b54 2813 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT14_NOT_ZERO), gShellDebug1HiiHandle);\r
187cb3dd 2814 } else if (BIT (CacheConfiguration, 13) != 0) {\r
47d20b54 2815 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT13_NOT_ZERO), gShellDebug1HiiHandle);\r
187cb3dd 2816 } else if (BIT (CacheConfiguration, 12) != 0) {\r
47d20b54 2817 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT12_NOT_ZERO), gShellDebug1HiiHandle);\r
187cb3dd 2818 } else if (BIT (CacheConfiguration, 11) != 0) {\r
47d20b54 2819 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT11_NOT_ZERO), gShellDebug1HiiHandle);\r
187cb3dd 2820 } else if (BIT (CacheConfiguration, 10) != 0) {\r
47d20b54 2821 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT10_NOT_ZERO), gShellDebug1HiiHandle);\r
187cb3dd 2822 } else if (BIT (CacheConfiguration, 4) != 0) {\r
47d20b54 2823 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIT4_NOT_ZERO), gShellDebug1HiiHandle);\r
187cb3dd
SZ
2824 }\r
2825\r
2826 //\r
2827 // Check BITs 9:8\r
2828 //\r
2829 switch ((CacheConfiguration & 0x300) >> 8) {\r
47d20b54
MK
2830 case 0:\r
2831 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_WRITE_THROUGH), gShellDebug1HiiHandle);\r
2832 break;\r
187cb3dd 2833\r
47d20b54
MK
2834 case 1:\r
2835 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_WRITE_BACK), gShellDebug1HiiHandle);\r
2836 break;\r
187cb3dd 2837\r
47d20b54
MK
2838 case 2:\r
2839 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_VARIES_WITH_MEM_ADDR), gShellDebug1HiiHandle);\r
2840 break;\r
187cb3dd 2841\r
47d20b54
MK
2842 case 3:\r
2843 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
2844 break;\r
187cb3dd
SZ
2845 }\r
2846\r
2847 //\r
2848 // Check BIT 7\r
2849 //\r
2850 if (BIT (CacheConfiguration, 7) != 0) {\r
47d20b54 2851 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED), gShellDebug1HiiHandle);\r
187cb3dd 2852 } else {\r
47d20b54 2853 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
187cb3dd
SZ
2854 }\r
2855\r
2856 //\r
2857 // Check BITs 6:5\r
2858 //\r
2859 switch ((CacheConfiguration & 0x60) >> 5) {\r
47d20b54
MK
2860 case 0:\r
2861 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_INTERNAL), gShellDebug1HiiHandle);\r
2862 break;\r
187cb3dd 2863\r
47d20b54
MK
2864 case 1:\r
2865 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_EXTERNAL), gShellDebug1HiiHandle);\r
2866 break;\r
187cb3dd 2867\r
47d20b54
MK
2868 case 2:\r
2869 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle);\r
2870 break;\r
187cb3dd 2871\r
47d20b54
MK
2872 case 3:\r
2873 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
2874 break;\r
187cb3dd
SZ
2875 }\r
2876\r
2877 //\r
2878 // Check BIT 3\r
2879 //\r
2880 if (BIT (CacheConfiguration, 3) != 0) {\r
47d20b54 2881 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_SOCKETED), gShellDebug1HiiHandle);\r
187cb3dd 2882 } else {\r
47d20b54 2883 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_NOT_SOCKETED), gShellDebug1HiiHandle);\r
187cb3dd
SZ
2884 }\r
2885\r
47d20b54 2886 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CACHE_LEVEL), gShellDebug1HiiHandle, (CacheConfiguration & 0x07) + 1);\r
187cb3dd
SZ
2887}\r
2888\r
a1d4bfcc 2889/**\r
5d73d92f 2890 The Slot ID field of the System Slot structure provides a mechanism to\r
2891 correlate the physical attributes of the slot to its logical access method\r
2892 (which varies based on the Slot Type field).\r
2893\r
a1d4bfcc 2894 @param[in] SlotId - The slot ID\r
2895 @param[in] SlotType - The slot type\r
2896 @param[in] Option - The Option\r
5d73d92f 2897**/\r
a1d4bfcc 2898VOID\r
2899DisplaySystemSlotId (\r
2900 IN UINT16 SlotId,\r
2901 IN UINT8 SlotType,\r
2902 IN UINT8 Option\r
2903 )\r
5d73d92f 2904{\r
47d20b54 2905 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SLOT_ID), gShellDebug1HiiHandle);\r
5d73d92f 2906 //\r
2907 // print option\r
2908 //\r
2909 PRINT_INFO_OPTION (SlotType, Option);\r
2910\r
2911 switch (SlotType) {\r
47d20b54
MK
2912 //\r
2913 // Slot Type: MCA\r
2914 //\r
2915 case 0x04:\r
2916 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LOGICAL_MICRO_CHAN), gShellDebug1HiiHandle);\r
2917 if ((SlotId > 0) && (SlotId < 15)) {\r
2918 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ONE_VAR_D), gShellDebug1HiiHandle, SlotId);\r
2919 } else {\r
2920 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ERROR_NOT_1_15), gShellDebug1HiiHandle);\r
2921 }\r
5d73d92f 2922\r
47d20b54 2923 break;\r
5d73d92f 2924\r
47d20b54
MK
2925 //\r
2926 // EISA\r
2927 //\r
2928 case 0x05:\r
2929 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LOGICAL_EISA_NUM), 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 // Slot Type: PCI\r
2940 //\r
2941 case 0x06:\r
2942 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId);\r
2943 break;\r
5d73d92f 2944\r
47d20b54
MK
2945 //\r
2946 // PCMCIA\r
2947 //\r
2948 case 0x07:\r
2949 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_IDENTIFIES_ADAPTER_NUM), gShellDebug1HiiHandle, SlotId);\r
2950 break;\r
2951\r
2952 //\r
2953 // Slot Type: PCI-E\r
2954 //\r
2955 case 0xA5:\r
2956 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId);\r
2957 break;\r
2958\r
2959 default:\r
2960 if (((SlotType >= 0x0E) && (SlotType <= 0x12)) || ((SlotType >= 0xA6) && (SlotType <= 0xB6))) {\r
2961 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VALUE_PRESENT), gShellDebug1HiiHandle, SlotId);\r
2962 } else {\r
2963 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED_SLOT_ID), gShellDebug1HiiHandle);\r
2964 }\r
5d73d92f 2965 }\r
2966}\r
2967\r
a1d4bfcc 2968/**\r
2969 Display System Boot Information (Type 32) information.\r
2970\r
2971 @param[in] Parameter The parameter.\r
2972 @param[in] Option The options.\r
2973**/\r
5d73d92f 2974VOID\r
2975DisplaySystemBootStatus (\r
47d20b54
MK
2976 IN UINT8 Parameter,\r
2977 IN UINT8 Option\r
5d73d92f 2978 )\r
2979{\r
47d20b54 2980 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_BOOT_STATUS), gShellDebug1HiiHandle);\r
5d73d92f 2981 //\r
2982 // Print option\r
2983 //\r
2984 PRINT_INFO_OPTION (Parameter, Option);\r
2985\r
2986 //\r
2987 // Check value and print\r
2988 //\r
2989 if (Parameter == 0) {\r
47d20b54 2990 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_ERRORS_DETECTED), gShellDebug1HiiHandle);\r
5d73d92f 2991 } else if (Parameter == 1) {\r
47d20b54 2992 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NO_BOOTABLE_MEDIA), gShellDebug1HiiHandle);\r
5d73d92f 2993 } else if (Parameter == 2) {\r
47d20b54 2994 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NORMAL_OP_SYSTEM), gShellDebug1HiiHandle);\r
5d73d92f 2995 } else if (Parameter == 3) {\r
47d20b54 2996 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FIRMWARE_DETECTED), gShellDebug1HiiHandle);\r
5d73d92f 2997 } else if (Parameter == 4) {\r
47d20b54 2998 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM), gShellDebug1HiiHandle);\r
5d73d92f 2999 } else if (Parameter == 5) {\r
47d20b54 3000 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_USER_REQUESTED_BOOT), gShellDebug1HiiHandle);\r
5d73d92f 3001 } else if (Parameter == 6) {\r
47d20b54 3002 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_SECURITY_VIOLATION), gShellDebug1HiiHandle);\r
5d73d92f 3003 } else if (Parameter == 7) {\r
47d20b54 3004 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PREV_REQ_IMAGE), gShellDebug1HiiHandle);\r
5d73d92f 3005 } else if (Parameter == 8) {\r
47d20b54
MK
3006 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WATCHDOG_TIMER), gShellDebug1HiiHandle);\r
3007 } else if ((Parameter >= 9) && (Parameter <= 127)) {\r
3008 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RSVD_FUTURE_ASSIGNMENT), gShellDebug1HiiHandle);\r
3009 } else if ((Parameter >= 128) && (Parameter <= 191)) {\r
3010 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_VENDOR_OEM_SPECIFIC), gShellDebug1HiiHandle);\r
e0c2cc6f 3011 } else if (Parameter >= 192) {\r
47d20b54 3012 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_PRODUCT_SPEC_IMPLMENTATION), gShellDebug1HiiHandle);\r
5d73d92f 3013 } else {\r
47d20b54 3014 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ERROR_VALUE), gShellDebug1HiiHandle);\r
5d73d92f 3015 }\r
3016}\r
a1d4bfcc 3017\r
3018/**\r
3019 Display Portable Battery (Type 22) information.\r
3020\r
5d73d92f 3021 The date the cell pack was manufactured, in packed format:\r
3022 Bits 15:9 Year, biased by 1980, in the range 0 to 127.\r
3023 Bits 8:5 Month, in the range 1 to 12.\r
3024 Bits 4:0 Date, in the range 1 to 31.\r
3025 For example, 01 February 2000 would be identified as\r
3026 0010 1000 0100 0001b (0x2841).\r
3027\r
a1d4bfcc 3028 @param[in] Date The date\r
3029 @param[in] Option The option\r
5d73d92f 3030**/\r
a1d4bfcc 3031VOID\r
3032DisplaySBDSManufactureDate (\r
3033 IN UINT16 Date,\r
3034 IN UINT8 Option\r
3035 )\r
5d73d92f 3036{\r
47d20b54
MK
3037 UINTN Day;\r
3038 UINTN Month;\r
3039 UINTN Year;\r
5d73d92f 3040\r
47d20b54 3041 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SBDS_MANUFACTURE_DATE), gShellDebug1HiiHandle);\r
5d73d92f 3042 PRINT_INFO_OPTION (Date, Option);\r
3043 //\r
3044 // Print date\r
3045 //\r
3046 Day = Date & 0x001F;\r
187cb3dd
SZ
3047 Month = (Date & 0x01E0) >> 5;\r
3048 Year = ((Date & 0xFE00) >> 9) + 1980;\r
47d20b54 3049 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MONTH_DAY_YEAR), gShellDebug1HiiHandle, Day, Month, Year);\r
5d73d92f 3050}\r
a1d4bfcc 3051\r
3052/**\r
187cb3dd 3053 Display System Reset (Type 23) information.\r
a1d4bfcc 3054\r
ba0014b9 3055\r
e0c2cc6f 3056Identifies the system-reset capabilities for the system.\r
3057 Bits 7:6 Reserved for future assignment via this specification, set to 00b.\r
3058 Bit 5 System contains a watchdog timer, either True (1) or False (0).\r
3059 Bits 4:3 Boot Option on Limit.\r
3060 Identifies the system action to be taken when the Reset Limit is reached, one of:\r
3061 00b Reserved, do not use.\r
3062 01b Operating system\r
3063 10b System utilities\r
3064 11b Do not rebootBits\r
3065 2:1 Boot Option. Indicates the action to be taken following a watchdog reset, one of:\r
3066 00b Reserved, do not use.\r
3067 01b Operating system\r
3068 10b System utilities\r
3069 11b Do not reboot\r
3070 Bit 0 Status.\r
3071 1b The system reset is enabled by the user\r
3072 0b The system reset is not enabled by the user\r
a1d4bfcc 3073\r
3074 @param[in] Reset Reset\r
3075 @param[in] Option The option\r
3076**/\r
5d73d92f 3077VOID\r
3078DisplaySystemResetCapabilities (\r
47d20b54
MK
3079 IN UINT8 Reset,\r
3080 IN UINT8 Option\r
5d73d92f 3081 )\r
5d73d92f 3082{\r
47d20b54 3083 UINTN Temp;\r
5d73d92f 3084\r
47d20b54 3085 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_RESET_CAPABILITIES), gShellDebug1HiiHandle);\r
5d73d92f 3086 PRINT_INFO_OPTION (Reset, Option);\r
3087\r
3088 //\r
3089 // Check reserved bits 7:6\r
3090 //\r
3091 if ((Reset & 0xC0) != 0) {\r
47d20b54 3092 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RESERVED_ZERO), gShellDebug1HiiHandle);\r
5d73d92f 3093 }\r
47d20b54 3094\r
5d73d92f 3095 //\r
3096 // Watch dog\r
3097 //\r
3098 if (BIT (Reset, 5) != 0) {\r
47d20b54 3099 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WATCHDOG_TIMER_2), gShellDebug1HiiHandle);\r
5d73d92f 3100 } else {\r
47d20b54 3101 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_NOT_CONTAIN_TIMER), gShellDebug1HiiHandle);\r
5d73d92f 3102 }\r
47d20b54 3103\r
5d73d92f 3104 //\r
3105 // Boot Option on Limit\r
3106 //\r
3107 Temp = (Reset & 0x18) >> 3;\r
47d20b54 3108 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_OPTION_LIMIT), gShellDebug1HiiHandle);\r
5d73d92f 3109 switch (Temp) {\r
47d20b54
MK
3110 case 0:\r
3111 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle);\r
3112 break;\r
5d73d92f 3113\r
47d20b54
MK
3114 case 1:\r
3115 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM_2), gShellDebug1HiiHandle);\r
3116 break;\r
5d73d92f 3117\r
47d20b54
MK
3118 case 2:\r
3119 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_UTIL), gShellDebug1HiiHandle);\r
3120 break;\r
5d73d92f 3121\r
47d20b54
MK
3122 case 3:\r
3123 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DO_NOT_REBOOT), gShellDebug1HiiHandle);\r
3124 break;\r
5d73d92f 3125 }\r
47d20b54 3126\r
5d73d92f 3127 //\r
3128 // Boot Option\r
3129 //\r
3130 Temp = (Reset & 0x06) >> 1;\r
47d20b54 3131 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BOOT_OPTION), gShellDebug1HiiHandle);\r
5d73d92f 3132 switch (Temp) {\r
47d20b54
MK
3133 case 0:\r
3134 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED), gShellDebug1HiiHandle);\r
3135 break;\r
5d73d92f 3136\r
47d20b54
MK
3137 case 1:\r
3138 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OP_SYSTEM_2), gShellDebug1HiiHandle);\r
3139 break;\r
5d73d92f 3140\r
47d20b54
MK
3141 case 2:\r
3142 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SYSTEM_UTIL), gShellDebug1HiiHandle);\r
3143 break;\r
5d73d92f 3144\r
47d20b54
MK
3145 case 3:\r
3146 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DO_NOT_REBOOT), gShellDebug1HiiHandle);\r
3147 break;\r
5d73d92f 3148 }\r
47d20b54 3149\r
5d73d92f 3150 //\r
3151 // Reset enable flag\r
3152 //\r
3153 if ((Reset & 0x01) != 0) {\r
3154 Print (L"The system reset is enabled by the user\n");\r
3155 } else {\r
3156 Print (L"The system reset is disabled by the user\n");\r
3157 }\r
3158}\r
a1d4bfcc 3159\r
3160/**\r
3161 Display Hardware Security (Type 24) information.\r
3162\r
ba0014b9 3163\r
e0c2cc6f 3164Identifies the password and reset status for the system:\r
3165\r
3166Bits 7:6 Power-on Password Status, one of:\r
3167 00b Disabled\r
3168 01b Enabled\r
3169 10b Not Implemented\r
3170 11b Unknown\r
3171Bits 5:4 Keyboard Password Status, one of:\r
3172 00b Disabled\r
3173 01b Enabled\r
3174 10b Not Implemented\r
3175 11b Unknown\r
3176Bits 3:2 Administrator Password Status, one of:\r
3177 00b Disabled\r
3178 01b Enabled\r
3179 10b Not Implemented\r
3180 11b Unknown\r
3181Bits 1:0 Front Panel Reset Status, one of:\r
3182 00b Disabled\r
3183 01b Enabled\r
3184 10b Not Implemented\r
3185 11b Unknown\r
a1d4bfcc 3186\r
3187 @param[in] Settings The device settings.\r
3188 @param[in] Option The device options.\r
3189**/\r
5d73d92f 3190VOID\r
3191DisplayHardwareSecuritySettings (\r
47d20b54
MK
3192 IN UINT8 Settings,\r
3193 IN UINT8 Option\r
5d73d92f 3194 )\r
5d73d92f 3195{\r
47d20b54 3196 UINTN Temp;\r
5d73d92f 3197\r
47d20b54 3198 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_HARDWARE_SECURITY_SET), gShellDebug1HiiHandle);\r
5d73d92f 3199 PRINT_INFO_OPTION (Settings, Option);\r
3200\r
3201 //\r
3202 // Power-on Password Status\r
3203 //\r
3204 Temp = (Settings & 0xC0) >> 6;\r
47d20b54 3205 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_ON_PASSWORD), gShellDebug1HiiHandle);\r
5d73d92f 3206 switch (Temp) {\r
47d20b54
MK
3207 case 0:\r
3208 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
3209 break;\r
5d73d92f 3210\r
47d20b54
MK
3211 case 1:\r
3212 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle);\r
3213 break;\r
5d73d92f 3214\r
47d20b54
MK
3215 case 2:\r
3216 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle);\r
3217 break;\r
5d73d92f 3218\r
47d20b54
MK
3219 case 3:\r
3220 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3221 break;\r
5d73d92f 3222 }\r
47d20b54 3223\r
5d73d92f 3224 //\r
3225 // Keyboard Password Status\r
3226 //\r
3227 Temp = (Settings & 0x30) >> 4;\r
47d20b54 3228 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_KEYBOARD_PASSWORD), gShellDebug1HiiHandle);\r
5d73d92f 3229 switch (Temp) {\r
47d20b54
MK
3230 case 0:\r
3231 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
3232 break;\r
5d73d92f 3233\r
47d20b54
MK
3234 case 1:\r
3235 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle);\r
3236 break;\r
5d73d92f 3237\r
47d20b54
MK
3238 case 2:\r
3239 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle);\r
3240 break;\r
5d73d92f 3241\r
47d20b54
MK
3242 case 3:\r
3243 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3244 break;\r
5d73d92f 3245 }\r
47d20b54 3246\r
5d73d92f 3247 //\r
3248 // Administrator Password Status\r
3249 //\r
3250 Temp = (Settings & 0x0C) >> 2;\r
47d20b54 3251 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ADMIN_PASSWORD_STATUS), gShellDebug1HiiHandle);\r
5d73d92f 3252 switch (Temp) {\r
47d20b54
MK
3253 case 0:\r
3254 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
3255 break;\r
5d73d92f 3256\r
47d20b54
MK
3257 case 1:\r
3258 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle);\r
3259 break;\r
5d73d92f 3260\r
47d20b54
MK
3261 case 2:\r
3262 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle);\r
3263 break;\r
5d73d92f 3264\r
47d20b54
MK
3265 case 3:\r
3266 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3267 break;\r
5d73d92f 3268 }\r
47d20b54 3269\r
5d73d92f 3270 //\r
3271 // Front Panel Reset Status\r
3272 //\r
3273 Temp = Settings & 0x3;\r
47d20b54 3274 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_FRONT_PANEL_RESET), gShellDebug1HiiHandle);\r
5d73d92f 3275 switch (Temp) {\r
47d20b54
MK
3276 case 0:\r
3277 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_DISABLED), gShellDebug1HiiHandle);\r
3278 break;\r
5d73d92f 3279\r
47d20b54
MK
3280 case 1:\r
3281 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_ENABLED_NEWLINE), gShellDebug1HiiHandle);\r
3282 break;\r
5d73d92f 3283\r
47d20b54
MK
3284 case 2:\r
3285 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_IMPLEMENTED), gShellDebug1HiiHandle);\r
3286 break;\r
5d73d92f 3287\r
47d20b54
MK
3288 case 3:\r
3289 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3290 break;\r
5d73d92f 3291 }\r
3292}\r
a1d4bfcc 3293\r
3294/**\r
3295 Display Out-of-Band Remote Access (Type 30) information.\r
3296\r
3297 @param[in] Connections The device characteristics.\r
3298 @param[in] Option The device options.\r
3299**/\r
5d73d92f 3300VOID\r
3301DisplayOBRAConnections (\r
47d20b54
MK
3302 IN UINT8 Connections,\r
3303 IN UINT8 Option\r
5d73d92f 3304 )\r
3305{\r
47d20b54 3306 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CONNECTIONS), gShellDebug1HiiHandle);\r
5d73d92f 3307 PRINT_INFO_OPTION (Connections, Option);\r
3308\r
3309 //\r
3310 // Check reserved bits 7:2\r
3311 //\r
3312 if ((Connections & 0xFC) != 0) {\r
47d20b54 3313 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_RESERVED_ZERO_2), gShellDebug1HiiHandle);\r
5d73d92f 3314 }\r
47d20b54 3315\r
5d73d92f 3316 //\r
3317 // Outbound Connection\r
3318 //\r
3319 if (BIT (Connections, 1) != 0) {\r
47d20b54 3320 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OUTBOUND_CONN_ENABLED), gShellDebug1HiiHandle);\r
5d73d92f 3321 } else {\r
47d20b54 3322 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTUBOUND_CONN_DISABLED), gShellDebug1HiiHandle);\r
5d73d92f 3323 }\r
47d20b54 3324\r
5d73d92f 3325 //\r
3326 // Inbound Connection\r
3327 //\r
3328 if (BIT (Connections, 0) != 0) {\r
47d20b54 3329 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INBOIUND_CONN_ENABLED), gShellDebug1HiiHandle);\r
5d73d92f 3330 } else {\r
47d20b54 3331 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INBOUND_CONN_DISABLED), gShellDebug1HiiHandle);\r
5d73d92f 3332 }\r
3333}\r
a1d4bfcc 3334\r
3335/**\r
3336 Display System Power Supply (Type 39) information.\r
3337\r
3338 @param[in] Characteristics The device characteristics.\r
3339 @param[in] Option The device options.\r
3340**/\r
5d73d92f 3341VOID\r
3342DisplaySPSCharacteristics (\r
a1d4bfcc 3343 IN UINT16 Characteristics,\r
3344 IN UINT8 Option\r
5d73d92f 3345 )\r
3346{\r
47d20b54 3347 UINTN Temp;\r
5d73d92f 3348\r
47d20b54 3349 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_CHAR), gShellDebug1HiiHandle);\r
5d73d92f 3350 PRINT_INFO_OPTION (Characteristics, Option);\r
3351\r
3352 //\r
3353 // Check reserved bits 15:14\r
3354 //\r
3355 if ((Characteristics & 0xC000) != 0) {\r
47d20b54 3356 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_15_14_RSVD), gShellDebug1HiiHandle);\r
5d73d92f 3357 }\r
47d20b54 3358\r
5d73d92f 3359 //\r
3360 // Bits 13:10 - DMTF Power Supply Type\r
3361 //\r
47d20b54 3362 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TYPE), gShellDebug1HiiHandle);\r
65e58382 3363 Temp = (Characteristics & 0x1C00) >> 10;\r
5d73d92f 3364 switch (Temp) {\r
47d20b54
MK
3365 case 1:\r
3366 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
3367 break;\r
5d73d92f 3368\r
47d20b54
MK
3369 case 2:\r
3370 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3371 break;\r
5d73d92f 3372\r
47d20b54
MK
3373 case 3:\r
3374 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_LINEAR), gShellDebug1HiiHandle);\r
3375 break;\r
5d73d92f 3376\r
47d20b54
MK
3377 case 4:\r
3378 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_SWITCHING), gShellDebug1HiiHandle);\r
3379 break;\r
5d73d92f 3380\r
47d20b54
MK
3381 case 5:\r
3382 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BATTERY), gShellDebug1HiiHandle);\r
3383 break;\r
5d73d92f 3384\r
47d20b54
MK
3385 case 6:\r
3386 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UPS), gShellDebug1HiiHandle);\r
3387 break;\r
5d73d92f 3388\r
47d20b54
MK
3389 case 7:\r
3390 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CONVERTER), gShellDebug1HiiHandle);\r
3391 break;\r
5d73d92f 3392\r
47d20b54
MK
3393 case 8:\r
3394 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_REGULATOR), gShellDebug1HiiHandle);\r
3395 break;\r
5d73d92f 3396\r
47d20b54
MK
3397 default:\r
3398 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_2), gShellDebug1HiiHandle);\r
5d73d92f 3399 }\r
47d20b54 3400\r
5d73d92f 3401 //\r
3402 // Bits 9:7 - Status\r
3403 //\r
47d20b54 3404 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_STATUS_DASH), gShellDebug1HiiHandle);\r
65e58382 3405 Temp = (Characteristics & 0x380) >> 7;\r
5d73d92f 3406 switch (Temp) {\r
47d20b54
MK
3407 case 1:\r
3408 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
3409 break;\r
5d73d92f 3410\r
47d20b54
MK
3411 case 2:\r
3412 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3413 break;\r
5d73d92f 3414\r
47d20b54
MK
3415 case 3:\r
3416 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OK), gShellDebug1HiiHandle);\r
3417 break;\r
5d73d92f 3418\r
47d20b54
MK
3419 case 4:\r
3420 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NON_CRITICAL), gShellDebug1HiiHandle);\r
3421 break;\r
5d73d92f 3422\r
47d20b54
MK
3423 case 5:\r
3424 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_CRITICAL_POWER_SUPPLY), gShellDebug1HiiHandle);\r
3425 break;\r
5d73d92f 3426\r
47d20b54
MK
3427 default:\r
3428 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNDEFINED), gShellDebug1HiiHandle);\r
5d73d92f 3429 }\r
47d20b54 3430\r
5d73d92f 3431 //\r
3432 // Bits 6:3 - DMTF Input Voltage Range Switching\r
3433 //\r
47d20b54 3434 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_INPUT_VOLTAGE_RANGE), gShellDebug1HiiHandle);\r
65e58382 3435 Temp = (Characteristics & 0x78) >> 3;\r
5d73d92f 3436 switch (Temp) {\r
47d20b54
MK
3437 case 1:\r
3438 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_OTHER_SPACE), gShellDebug1HiiHandle);\r
3439 break;\r
5d73d92f 3440\r
47d20b54
MK
3441 case 2:\r
3442 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_UNKNOWN), gShellDebug1HiiHandle);\r
3443 break;\r
5d73d92f 3444\r
47d20b54
MK
3445 case 3:\r
3446 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_MANUAL), gShellDebug1HiiHandle);\r
3447 break;\r
5d73d92f 3448\r
47d20b54
MK
3449 case 4:\r
3450 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_AUTO_SWITCH), gShellDebug1HiiHandle);\r
3451 break;\r
5d73d92f 3452\r
47d20b54
MK
3453 case 5:\r
3454 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_WIDE_RANGE), gShellDebug1HiiHandle);\r
3455 break;\r
5d73d92f 3456\r
47d20b54
MK
3457 case 6:\r
3458 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_NOT_APPLICABLE), gShellDebug1HiiHandle);\r
3459 break;\r
5d73d92f 3460\r
47d20b54
MK
3461 default:\r
3462 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_3), gShellDebug1HiiHandle);\r
3463 break;\r
5d73d92f 3464 }\r
47d20b54 3465\r
5d73d92f 3466 //\r
3467 // Power supply is unplugged from the wall\r
3468 //\r
3469 if (BIT (Characteristics, 2) != 0) {\r
47d20b54 3470 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_UNPLUGGED), gShellDebug1HiiHandle);\r
5d73d92f 3471 } else {\r
47d20b54 3472 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_PLUGGED), gShellDebug1HiiHandle);\r
5d73d92f 3473 }\r
47d20b54 3474\r
5d73d92f 3475 //\r
3476 // Power supply is present\r
3477 //\r
3478 if (BIT (Characteristics, 1) != 0) {\r
47d20b54 3479 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_PRESENT), gShellDebug1HiiHandle);\r
5d73d92f 3480 } else {\r
47d20b54 3481 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_PRESENT), gShellDebug1HiiHandle);\r
5d73d92f 3482 }\r
47d20b54 3483\r
5d73d92f 3484 //\r
3485 // hot replaceable\r
3486 //\r
3487 if (BIT (Characteristics, 0) != 0) {\r
47d20b54 3488 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_REPLACE), gShellDebug1HiiHandle);\r
5d73d92f 3489 } else {\r
47d20b54 3490 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_POWER_SUPPLY_NOT_REPLACE), gShellDebug1HiiHandle);\r
5d73d92f 3491 }\r
3492}\r
e9f0be02
LA
3493\r
3494/**\r
3495 Display TPM Device (Type 43) Characteristics.\r
3496\r
3497 @param[in] Chara The information bits.\r
3498 @param[in] Option The optional information.\r
3499**/\r
3500VOID\r
3501DisplayTpmDeviceCharacteristics (\r
3502 IN UINT64 Chara,\r
3503 IN UINT8 Option\r
3504 )\r
3505{\r
3506 //\r
3507 // Print header\r
3508 //\r
47d20b54 3509 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CHAR), gShellDebug1HiiHandle);\r
e9f0be02
LA
3510 //\r
3511 // print option\r
3512 //\r
3513 PRINT_INFO_OPTION (Chara, Option);\r
3514\r
3515 //\r
3516 // Check all the bits and print information\r
3517 // This function does not use Table because table of bits\r
3518 // are designed not to deal with UINT64\r
3519 //\r
3520 if (BIT (Chara, 0) != 0) {\r
47d20b54 3521 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
e9f0be02
LA
3522 }\r
3523\r
3524 if (BIT (Chara, 1) != 0) {\r
47d20b54 3525 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_RESERVED_BIT), gShellDebug1HiiHandle);\r
e9f0be02 3526 }\r
47d20b54 3527\r
e9f0be02 3528 if (BIT (Chara, 2) != 0) {\r
47d20b54 3529 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CHAR_NOT_SUPPORTED), gShellDebug1HiiHandle);\r
e9f0be02
LA
3530 }\r
3531\r
3532 if (BIT (Chara, 3) != 0) {\r
47d20b54 3533 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_FWU), gShellDebug1HiiHandle);\r
e9f0be02
LA
3534 }\r
3535\r
3536 if (BIT (Chara, 4) != 0) {\r
47d20b54 3537 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_PLAT_SW), gShellDebug1HiiHandle);\r
e9f0be02
LA
3538 }\r
3539\r
3540 if (BIT (Chara, 5) != 0) {\r
47d20b54 3541 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_TPM_DEVICE_CONFIG_OEM), gShellDebug1HiiHandle);\r
e9f0be02
LA
3542 }\r
3543\r
3544 //\r
3545 // Just print the Reserved\r
3546 //\r
47d20b54 3547 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BITS_06_63), gShellDebug1HiiHandle);\r
e9f0be02 3548}\r