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