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