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