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