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