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