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