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