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