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