• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   Build a table, each item is (Key, Info) pair.
3   And give a interface of query a string out of a table.
4 
5   Copyright (c) 2005 - 2015, Intel Corporation. All rights reserved.<BR>
6   (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
7   This program and the accompanying materials
8   are licensed and made available under the terms and conditions of the BSD License
9   which accompanies this distribution.  The full text of the license may be found at
10   http://opensource.org/licenses/bsd-license.php
11 
12   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14 
15 **/
16 
17 #include "../UefiShellDebug1CommandsLib.h"
18 #include "QueryTable.h"
19 #include "PrintInfo.h"
20 
21 TABLE_ITEM  SystemWakeupTypeTable[] = {
22   {
23     0x0,
24     L" Reserved"
25   },
26   {
27     0x1,
28     L" Other"
29   },
30   {
31     0x2,
32     L" Unknown"
33   },
34   {
35     0x3,
36     L" APM Timer"
37   },
38   {
39     0x4,
40     L" Modem Ring"
41   },
42   {
43     0x5,
44     L" LAN Remote"
45   },
46   {
47     0x6,
48     L" Power Switch"
49   },
50   {
51     0x7,
52     L" AC Power Restored"
53   }
54 };
55 
56 TABLE_ITEM  BaseBoardFeatureFlagsTable[] = {
57   {
58     0,
59     L" Hosting board"
60   },
61   {
62     1,
63     L" Requires at least one daughter board or auxiliary card"
64   },
65   {
66     2,
67     L" Removable"
68   },
69   {
70     3,
71     L" Replaceable"
72   },
73   {
74     4,
75     L" Hot swappable"
76   }
77 };
78 
79 TABLE_ITEM  BaseBoardBoardTypeTable[] = {
80   {
81     0x01,
82     L" Unknown"
83   },
84   {
85     0x02,
86     L" Other"
87   },
88   {
89     0x03,
90     L" Server Blade"
91   },
92   {
93     0x04,
94     L" Connectivity Switch"
95   },
96   {
97     0x05,
98     L" System Management Module"
99   },
100   {
101     0x06,
102     L" Processor Module"
103   },
104   {
105     0x07,
106     L" I/O Module"
107   },
108   {
109     0x08,
110     L" Memory Module"
111   },
112   {
113     0x09,
114     L" Daughter board"
115   },
116   {
117     0x0A,
118     L" Motherboard"
119   },
120   {
121     0x0B,
122     L" Processor/Memory Module"
123   },
124   {
125     0x0C,
126     L" Processor/IO Module"
127   },
128   {
129     0x0D,
130     L" Interconnect Board"
131   }
132 };
133 
134 TABLE_ITEM  SystemEnclosureTypeTable[] = {
135   {
136     0x01,
137     L"  Other"
138   },
139   {
140     0x02,
141     L"  Unknown"
142   },
143   {
144     0x03,
145     L"  Desktop"
146   },
147   {
148     0x04,
149     L"  Low Profile Desktop"
150   },
151   {
152     0x05,
153     L"  Pizza Box"
154   },
155   {
156     0x06,
157     L"  Mini Tower"
158   },
159   {
160     0x07,
161     L"  Tower"
162   },
163   {
164     0x08,
165     L"  Portable"
166   },
167   {
168     0x09,
169     L"  LapTop"
170   },
171   {
172     0x0A,
173     L"  Notebook"
174   },
175   {
176     0x0B,
177     L"  Hand Held"
178   },
179   {
180     0x0C,
181     L"  Docking Station"
182   },
183   {
184     0x0D,
185     L"  All in One"
186   },
187   {
188     0x0E,
189     L"  Sub Notebook"
190   },
191   {
192     0x0F,
193     L"  Space-saving"
194   },
195   {
196     0x10,
197     L"  Main Server Chassis"
198   },
199   {
200     0x11,
201     L"  Expansion Chassis"
202   },
203   {
204     0x12,
205     L"  SubChassis"
206   },
207   {
208     0x13,
209     L"  Sub Notebook"
210   },
211   {
212     0x14,
213     L"  Bus Expansion Chassis"
214   },
215   {
216     0x15,
217     L"  Peripheral Chassis"
218   },
219   {
220     0x16,
221     L"  RAID Chassis"
222   },
223   {
224     0x17,
225     L"  Rack Mount Chassis"
226   },
227   {
228     0x18,
229     L"  Sealed-case PC"
230   },
231   {
232     0x19,
233     L"  Multi-system Chassis"
234   },
235   {
236     0x1A,
237     L"  CompactPCI"
238   },
239   {
240     0x1B,
241     L"  AdvancedTCA"
242   },
243   {
244     0x1C,
245     L"  Blade"
246   },
247   {
248     0x1D,
249     L"  Blade Enclosure"
250   },
251 };
252 
253 TABLE_ITEM  SystemEnclosureStatusTable[] = {
254   {
255     0x1,
256     L" Other"
257   },
258   {
259     0x2,
260     L" Unknown"
261   },
262   {
263     0x3,
264     L" Safe"
265   },
266   {
267     0x4,
268     L" Warning"
269   },
270   {
271     0x5,
272     L" Critical"
273   },
274   {
275     0x6,
276     L" Non-recoverable"
277   }
278 };
279 
280 TABLE_ITEM  SESecurityStatusTable[] = {
281   {
282     0x1,
283     L" Other"
284   },
285   {
286     0x2,
287     L" Unknown"
288   },
289   {
290     0x3,
291     L" None"
292   },
293   {
294     0x4,
295     L" External interface locked out"
296   },
297   {
298     0x5,
299     L" External interface enabled"
300   }
301 };
302 
303 TABLE_ITEM  ProcessorTypeTable[] = {
304   {
305     0x1,
306     L" Other"
307   },
308   {
309     0x2,
310     L" Unknown"
311   },
312   {
313     0x3,
314     L" Central Processor"
315   },
316   {
317     0x4,
318     L" Math Processor"
319   },
320   {
321     0x5,
322     L" DSP Processor"
323   },
324   {
325     0x6,
326     L" Video Processor "
327   },
328 };
329 
330 TABLE_ITEM  ProcessorUpgradeTable[] = {
331   {
332     0x01,
333     L"Other"
334   },
335   {
336     0x02,
337     L"Unknown"
338   },
339   {
340     0x03,
341     L"Daughter Board"
342   },
343   {
344     0x04,
345     L"ZIF Socket"
346   },
347   {
348     0x05,
349     L"Replaceable Piggy Back"
350   },
351   {
352     0x06,
353     L"None"
354   },
355   {
356     0x07,
357     L"LIF Socket"
358   },
359   {
360     0x08,
361     L"Slot 1"
362   },
363   {
364     0x09,
365     L"Slot 2"
366   },
367   {
368     0x0A,
369     L"370-pin socket"
370   },
371   {
372     0x0B,
373     L"Slot A"
374   },
375   {
376     0x0C,
377     L"Slot M"
378   },
379   {
380     0x0D,
381     L"Socket 423"
382   },
383   {
384     0x0E,
385     L"Socket A"
386   },
387   {
388     0x0F,
389     L"Socket 478"
390   },
391   {
392     0x10,
393     L"Socket 754"
394   },
395   {
396     0x11,
397     L"Socket 940"
398   },
399   {
400     0x12,
401     L"Socket 939"
402   },
403   {
404     0x13,
405     L"Socket mPGA604"
406   },
407   {
408     0x14,
409     L"Socket LGA771"
410   },
411   {
412     0x15,
413     L"Socket LGA775"
414   },
415   {
416     0x16,
417     L"Socket S1"
418   },
419   {
420     0x17,
421     L"Socket AM2"
422   },
423   {
424     0x18,
425     L"Socket F"
426   },
427   {
428     0x19,
429     L"Socket LGA1366"
430   },
431   {
432     0x1A,
433     L"Socket G34"
434   },
435   {
436     0x1B,
437     L"Socket AM3"
438   },
439   {
440     0x1C,
441     L"Socket C32"
442   },
443   {
444     0x1D,
445     L"Socket LGA1156"
446   },
447   {
448     0x1E,
449     L"Socket LGA1567"
450   },
451   {
452     0x1F,
453     L"Socket PGA988A"
454   },
455   {
456     0x20,
457     L"Socket BGA1288"
458   },
459   {
460     0x21,
461     L"Socket rPGA988B"
462   },
463   {
464     0x22,
465     L"Socket BGA1023"
466   },
467   {
468     0x23,
469     L"Socket BGA1224"
470   },
471   {
472     0x24,
473     L"Socket LGA1155"
474   },
475   {
476     0x25,
477     L"Socket LGA1356"
478   },
479   {
480     0x26,
481     L"Socket LGA2011"
482   },
483   {
484     0x27,
485     L"Socket FS1"
486   },
487   {
488     0x28,
489     L"Socket FS2"
490   },
491   {
492     0x29,
493     L"Socket FM1"
494   },
495   {
496     0x2A,
497     L"Socket FM2"
498   },
499   {
500     0x2B,
501     L"Socket LGA2011-3"
502   },
503   {
504     0x2C,
505     L"Socket LGA1356-3"
506   }
507 };
508 
509 TABLE_ITEM  ProcessorCharacteristicsTable[] = {
510   {
511     1,
512     L" Unknown"
513   },
514   {
515     2,
516     L" 64-bit Capable"
517   },
518   {
519     3,
520     L" Multi-Core"
521   },
522   {
523     4,
524     L" Hardware Thread"
525   },
526   {
527     5,
528     L" Execute Protection"
529   },
530   {
531     6,
532     L" Enhanced Virtualization"
533   },
534   {
535     7,
536     L" Power/Performance Control"
537   }
538 };
539 
540 
541 TABLE_ITEM  McErrorDetectMethodTable[] = {
542   {
543     0x01,
544     L"Other"
545   },
546   {
547     0x02,
548     L"Unknown"
549   },
550   {
551     0x03,
552     L"None"
553   },
554   {
555     0x04,
556     L"8-bit Parity"
557   },
558   {
559     0x05,
560     L"32-bit ECC"
561   },
562   {
563     0x06,
564     L"64-bit ECC"
565   },
566   {
567     0x07,
568     L"128-bit ECC"
569   },
570   {
571     0x08,
572     L"CRC"
573   },
574 };
575 
576 TABLE_ITEM  McErrorCorrectCapabilityTable[] = {
577   {
578     0,
579     L"Other"
580   },
581   {
582     1,
583     L"Unknown"
584   },
585   {
586     2,
587     L"None"
588   },
589   {
590     3,
591     L"Single Bit Error Correcting"
592   },
593   {
594     4,
595     L"Double Bit Error Correcting"
596   },
597   {
598     5,
599     L"Error Scrubbing"
600   },
601 };
602 
603 TABLE_ITEM  McInterleaveSupportTable[] = {
604   {
605     0x01,
606     L"Other"
607   },
608   {
609     0x02,
610     L"Unknown"
611   },
612   {
613     0x03,
614     L"One Way Interleave"
615   },
616   {
617     0x04,
618     L"Two Way Interleave"
619   },
620   {
621     0x05,
622     L"Four Way Interleave"
623   },
624   {
625     0x06,
626     L"Eight Way Interleave"
627   },
628   {
629     0x07,
630     L"Sixteen Way Interleave"
631   }
632 };
633 
634 TABLE_ITEM  McMemorySpeedsTable[] = {
635   {
636     0,
637     L" Other"
638   },
639   {
640     1,
641     L" Unknown"
642   },
643   {
644     2,
645     L" 70ns"
646   },
647   {
648     3,
649     L" 60ns"
650   },
651   {
652     4,
653     L" 50ns"
654   },
655 };
656 
657 TABLE_ITEM  MemoryModuleVoltageTable[] = {
658   {
659     0,
660     L" 5V"
661   },
662   {
663     1,
664     L" 3.3V"
665   },
666   {
667     2,
668     L" 2.9V"
669   },
670 };
671 
672 TABLE_ITEM  MmMemoryTypeTable[] = {
673   {
674     0,
675     L" Other"
676   },
677   {
678     1,
679     L" Unknown"
680   },
681   {
682     2,
683     L" Standard"
684   },
685   {
686     3,
687     L" Fast Page Mode"
688   },
689   {
690     4,
691     L" EDO"
692   },
693   {
694     5,
695     L" Parity"
696   },
697   {
698     6,
699     L" ECC "
700   },
701   {
702     7,
703     L" SIMM"
704   },
705   {
706     8,
707     L" DIMM"
708   },
709   {
710     9,
711     L" Burst EDO"
712   },
713   {
714     10,
715     L" SDRAM"
716   }
717 };
718 
719 TABLE_ITEM  MmErrorStatusTable[] = {
720   {
721     0,
722     L" Uncorrectable errors received"
723   },
724   {
725     1,
726     L" Correctable errors received"
727   },
728   {
729     2,
730     L" Error Status obtained from the event log"
731   }
732 };
733 
734 TABLE_ITEM  CacheSRAMTypeTable[] = {
735   {
736     0,
737     L" Other"
738   },
739   {
740     1,
741     L" Unknown"
742   },
743   {
744     2,
745     L" Non-Burst"
746   },
747   {
748     3,
749     L" Burst"
750   },
751   {
752     4,
753     L" Pipeline Burst"
754   },
755   {
756     5,
757     L" Synchronous"
758   },
759   {
760     6,
761     L" Asynchronous"
762   },
763 };
764 
765 TABLE_ITEM  CacheErrCorrectingTypeTable[] = {
766   {
767     0x01,
768     L"Other"
769   },
770   {
771     0x02,
772     L"Unknown"
773   },
774   {
775     0x03,
776     L"None"
777   },
778   {
779     0x04,
780     L"Parity"
781   },
782   {
783     0x05,
784     L"Single-bit ECC"
785   },
786   {
787     0x06,
788     L"Multi-bit ECC"
789   }
790 };
791 
792 TABLE_ITEM  CacheSystemCacheTypeTable[] = {
793   {
794     0x01,
795     L"Other"
796   },
797   {
798     0x02,
799     L"Unknown"
800   },
801   {
802     0x03,
803     L"Instruction"
804   },
805   {
806     0x04,
807     L"Data"
808   },
809   {
810     0x05,
811     L"Unified"
812   }
813 };
814 
815 TABLE_ITEM  CacheAssociativityTable[] = {
816   {
817     0x01,
818     L"Other"
819   },
820   {
821     0x02,
822     L"Unknown"
823   },
824   {
825     0x03,
826     L"Direct Mapped"
827   },
828   {
829     0x04,
830     L"2-way Set-Associative"
831   },
832   {
833     0x05,
834     L"4-way Set-Associative"
835   },
836   {
837     0x06,
838     L"Fully Associative"
839   },
840   {
841     0x07,
842     L"8-way Set-Associative"
843   },
844   {
845     0x08,
846     L"16-way Set-Associative"
847   },
848   {
849     0x09,
850     L"12-way Set-Associative"
851   },
852   {
853     0x0A,
854     L"24-way Set-Associative"
855   },
856   {
857     0x0B,
858     L"32-way Set-Associative"
859   },
860   {
861     0x0C,
862     L"48-way Set-Associative"
863   },
864   {
865     0x0D,
866     L"64-way Set-Associative"
867   },
868   {
869     0x0E,
870     L"20-way Set-Associative"
871   }
872 };
873 
874 TABLE_ITEM  PortConnectorTypeTable[] = {
875   {
876     0x00,
877     L"None"
878   },
879   {
880     0x01,
881     L"Centronics"
882   },
883   {
884     0x02,
885     L"Mini Centronics"
886   },
887   {
888     0x03,
889     L"Proprietary"
890   },
891   {
892     0x04,
893     L"DB-25 pin male"
894   },
895   {
896     0x05,
897     L"DB-25 pin female"
898   },
899   {
900     0x06,
901     L"DB-15 pin male"
902   },
903   {
904     0x07,
905     L"DB-15 pin female"
906   },
907   {
908     0x08,
909     L"DB-9 pin male"
910   },
911   {
912     0x09,
913     L"DB-9 pin female"
914   },
915   {
916     0x0A,
917     L"RJ-11"
918   },
919   {
920     0x0B,
921     L"RJ-45"
922   },
923   {
924     0x0C,
925     L"50 Pin MiniSCSI"
926   },
927   {
928     0x0D,
929     L"Mini-DIN"
930   },
931   {
932     0x0E,
933     L"Micro-DIN"
934   },
935   {
936     0x0F,
937     L"PS/2"
938   },
939   {
940     0x10,
941     L"Infrared"
942   },
943   {
944     0x11,
945     L"HP-HIL"
946   },
947   {
948     0x12,
949     L"Access Bus (USB)"
950   },
951   {
952     0x13,
953     L"SSA SCSI"
954   },
955   {
956     0x14,
957     L"Circular DIN-8 male"
958   },
959   {
960     0x15,
961     L"Circular DIN-8 female"
962   },
963   {
964     0x16,
965     L"On Board IDE"
966   },
967   {
968     0x17,
969     L"On Board Floppy"
970   },
971   {
972     0x18,
973     L"9 Pin Dual Inline (pin 10 cut)"
974   },
975   {
976     0x19,
977     L"25 Pin Dual Inline (pin 26 cut)"
978   },
979   {
980     0x1A,
981     L"50 Pin Dual Inline"
982   },
983   {
984     0x1B,
985     L"68 Pin Dual Inline"
986   },
987   {
988     0x1C,
989     L"On Board Sound Input from CD-ROM"
990   },
991   {
992     0x1D,
993     L"Mini-Centronics Type-14"
994   },
995   {
996     0x1E,
997     L"Mini-Centronics Type-26"
998   },
999   {
1000     0x1F,
1001     L"Mini-jack (headphones)"
1002   },
1003   {
1004     0x20,
1005     L"BNC"
1006   },
1007   {
1008     0x21,
1009     L"1394"
1010   },
1011   {
1012     0x22,
1013     L"SAS/SATA Plug Receptacle"
1014   },
1015   {
1016     0xA0,
1017     L"PC-98"
1018   },
1019   {
1020     0xA1,
1021     L"PC-98Hireso"
1022   },
1023   {
1024     0xA2,
1025     L"PC-H98"
1026   },
1027   {
1028     0xA3,
1029     L"PC-98Note"
1030   },
1031   {
1032     0xA4,
1033     L"PC-98Full"
1034   },
1035   {
1036     0xFF,
1037     L"Other"
1038   },
1039 };
1040 
1041 TABLE_ITEM  PortTypeTable[] = {
1042   {
1043     0x00,
1044     L"None"
1045   },
1046   {
1047     0x01,
1048     L"Parallel Port XT/AT Compatible"
1049   },
1050   {
1051     0x02,
1052     L"Parallel Port PS/2"
1053   },
1054   {
1055     0x03,
1056     L"Parallel Port ECP"
1057   },
1058   {
1059     0x04,
1060     L"Parallel Port EPP"
1061   },
1062   {
1063     0x05,
1064     L"Parallel Port ECP/EPP"
1065   },
1066   {
1067     0x06,
1068     L"Serial Port XT/AT Compatible"
1069   },
1070   {
1071     0x07,
1072     L"Serial Port 16450 Compatible"
1073   },
1074   {
1075     0x08,
1076     L"Serial Port 16550 Compatible"
1077   },
1078   {
1079     0x09,
1080     L"Serial Port 16550A Compatible"
1081   },
1082   {
1083     0x0A,
1084     L"SCSI Port"
1085   },
1086   {
1087     0x0B,
1088     L"MIDI Port"
1089   },
1090   {
1091     0x0C,
1092     L"Joy Stick Port"
1093   },
1094   {
1095     0x0D,
1096     L"Keyboard Port"
1097   },
1098   {
1099     0x0E,
1100     L"Mouse Port"
1101   },
1102   {
1103     0x0F,
1104     L"SSA SCSI"
1105   },
1106   {
1107     0x10,
1108     L"USB"
1109   },
1110   {
1111     0x11,
1112     L"FireWire (IEEE P1394)"
1113   },
1114   {
1115     0x12,
1116     L"PCMCIA Type II"
1117   },
1118   {
1119     0x13,
1120     L"PCMCIA Type II"
1121   },
1122   {
1123     0x14,
1124     L"PCMCIA Type III"
1125   },
1126   {
1127     0x15,
1128     L"Cardbus"
1129   },
1130   {
1131     0x16,
1132     L"Access Bus Port"
1133   },
1134   {
1135     0x17,
1136     L"SCSI II"
1137   },
1138   {
1139     0x18,
1140     L"SCSI Wide"
1141   },
1142   {
1143     0x19,
1144     L"PC-98"
1145   },
1146   {
1147     0x1A,
1148     L"PC-98-Hireso"
1149   },
1150   {
1151     0x1B,
1152     L"PC-H98"
1153   },
1154   {
1155     0x1C,
1156     L"Video Port"
1157   },
1158   {
1159     0x1D,
1160     L"Audio Port"
1161   },
1162   {
1163     0x1E,
1164     L"Modem Port"
1165   },
1166   {
1167     0x1F,
1168     L"Network Port"
1169   },
1170   {
1171     0x20,
1172     L"SATA Port"
1173   },
1174   {
1175     0x21,
1176     L"SAS Port"
1177   },
1178   {
1179     0xA0,
1180     L"8251 Compatible"
1181   },
1182   {
1183     0xA1,
1184     L"8251 FIFO Compatible"
1185   },
1186   {
1187     0xFF,
1188     L"Other "
1189   },
1190 };
1191 
1192 TABLE_ITEM  SystemSlotTypeTable[] = {
1193   {
1194     0x01,
1195     L"Other"
1196   },
1197   {
1198     0x02,
1199     L"Unknown"
1200   },
1201   {
1202     0x03,
1203     L"ISA"
1204   },
1205   {
1206     0x04,
1207     L"MCA"
1208   },
1209   {
1210     0x05,
1211     L"EISA"
1212   },
1213   {
1214     0x06,
1215     L"PCI"
1216   },
1217   {
1218     0x07,
1219     L"PC Card (PCMCIA)"
1220   },
1221   {
1222     0x08,
1223     L"VL-VESA"
1224   },
1225   {
1226     0x09,
1227     L"Proprietary"
1228   },
1229   {
1230     0x0A,
1231     L"Processor Card Slot"
1232   },
1233   {
1234     0x0B,
1235     L"Proprietary Memory Card Slot"
1236   },
1237   {
1238     0x0C,
1239     L"I/O Riser Card Slot"
1240   },
1241   {
1242     0x0D,
1243     L"NuBus"
1244   },
1245   {
1246     0x0E,
1247     L"PCI - 66MHz Capable"
1248   },
1249   {
1250     0x0F,
1251     L"AGP"
1252   },
1253   {
1254     0x10,
1255     L"AGP 2X"
1256   },
1257   {
1258     0x11,
1259     L"AGP 4X"
1260   },
1261   {
1262     0x12,
1263     L"PCI-X"
1264   },
1265   {
1266     0xA0,
1267     L"PC-98/C20 "
1268   },
1269   {
1270     0xA1,
1271     L"PC-98/C24 "
1272   },
1273   {
1274     0xA2,
1275     L"PC-98/E "
1276   },
1277   {
1278     0xA3,
1279     L"PC-98/Local Bus "
1280   },
1281   {
1282     0xA4,
1283     L"PC-98/Card "
1284   },
1285   {
1286     0xA5,
1287     L"PCI Express "
1288   },
1289   {
1290     0xA6,
1291     L"PCI Express X1"
1292   },
1293   {
1294     0xA7,
1295     L"PCI Express X2"
1296   },
1297   {
1298     0xA8,
1299     L"PCI Express X4"
1300   },
1301   {
1302     0xA9,
1303     L"PCI Express X8"
1304   },
1305   {
1306     0xAA,
1307     L"PCI Express X16"
1308   },
1309   {
1310     0xAB,
1311     L"PCI Express Gen 2"
1312   },
1313   {
1314     0xAC,
1315     L"PCI Express Gen 2 X1"
1316   },
1317   {
1318     0xAD,
1319     L"PCI Express Gen 2 X2"
1320   },
1321   {
1322     0xAE,
1323     L"PCI Express Gen 2 X4"
1324   },
1325   {
1326     0xAF,
1327     L"PCI Express Gen 2 X8"
1328   },
1329   {
1330     0xB0,
1331     L"PCI Express Gen 2 X16"
1332   },
1333   {
1334     0xB1,
1335     L"PCI Express Gen 3"
1336   },
1337   {
1338     0xB2,
1339     L"PCI Express Gen 3 X1"
1340   },
1341   {
1342     0xB3,
1343     L"PCI Express Gen 3 X2"
1344   },
1345   {
1346     0xB4,
1347     L"PCI Express Gen 3 X4"
1348   },
1349   {
1350     0xB5,
1351     L"PCI Express Gen 3 X8"
1352   },
1353   {
1354     0xB6,
1355     L"PCI Express Gen 3 X16"
1356   }
1357 };
1358 
1359 TABLE_ITEM  SystemSlotDataBusWidthTable[] = {
1360   {
1361     0x01,
1362     L" Other"
1363   },
1364   {
1365     0x02,
1366     L" Unknown"
1367   },
1368   {
1369     0x03,
1370     L" 8 bit"
1371   },
1372   {
1373     0x04,
1374     L" 16 bit"
1375   },
1376   {
1377     0x05,
1378     L" 32 bit"
1379   },
1380   {
1381     0x06,
1382     L" 64 bit"
1383   },
1384   {
1385     0x07,
1386     L" 128 bit"
1387   },
1388   {
1389     0x08,
1390     L" 1x or x1"
1391   },
1392   {
1393     0x09,
1394     L" 2x or x2"
1395   },
1396   {
1397     0x0A,
1398     L" 4x or x4"
1399   },
1400   {
1401     0x0B,
1402     L" 8x or x8"
1403   },
1404   {
1405     0x0C,
1406     L" 12x or x12"
1407   },
1408   {
1409     0x0D,
1410     L" 16x or x16"
1411   },
1412   {
1413     0x0E,
1414     L" 32x or x32"
1415   }
1416 };
1417 
1418 TABLE_ITEM  SystemSlotCurrentUsageTable[] = {
1419   {
1420     0x01,
1421     L" Other"
1422   },
1423   {
1424     0x02,
1425     L" Unknown"
1426   },
1427   {
1428     0x03,
1429     L" Available"
1430   },
1431   {
1432     0x04,
1433     L" In use"
1434   },
1435 };
1436 
1437 TABLE_ITEM  SystemSlotLengthTable[] = {
1438   {
1439     0x01,
1440     L" Other"
1441   },
1442   {
1443     0x02,
1444     L" Unknown"
1445   },
1446   {
1447     0x03,
1448     L" Short length"
1449   },
1450   {
1451     0x04,
1452     L" Long Length"
1453   },
1454 };
1455 
1456 TABLE_ITEM  SlotCharacteristics1Table[] = {
1457   {
1458     0,
1459     L" Characteristics Unknown"
1460   },
1461   {
1462     1,
1463     L" Provides 5.0 Volts"
1464   },
1465   {
1466     2,
1467     L" Provides 3.3 Volts"
1468   },
1469   {
1470     3,
1471     L" Slot's opening is shared with another slot, e.g. PCI/EISA shared slot."
1472   },
1473 
1474   {
1475     4,
1476     L" PC Card slot supports PC Card-16"
1477   },
1478   {
1479     5,
1480     L" PC Card slot supports CardBus"
1481   },
1482   {
1483     6,
1484     L" PC Card slot supports Zoom Video "
1485   },
1486   {
1487     7,
1488     L" PC Card slot supports Modem Ring Resume "
1489   }
1490 };
1491 
1492 TABLE_ITEM  SlotCharacteristics2Table[] = {
1493   {
1494     0,
1495     L" PCI slot supports Power Management Enable (PME#) signal"
1496   },
1497   {
1498     1,
1499     L" Slot supports hot-plug devices"
1500   },
1501   {
1502     2,
1503     L" PCI slot supports SMBus signal"
1504   }
1505 };
1506 
1507 TABLE_ITEM  OnboardDeviceTypesTable[] = {
1508   {
1509     0x01,
1510     L"  Other"
1511   },
1512   {
1513     0x02,
1514     L"  Unknown"
1515   },
1516   {
1517     0x03,
1518     L"  Video"
1519   },
1520   {
1521     0x04,
1522     L"  SCSI Controller"
1523   },
1524   {
1525     0x05,
1526     L"  Ethernet"
1527   },
1528   {
1529     0x06,
1530     L"  Token Ring"
1531   },
1532   {
1533     0x07,
1534     L"  Sound"
1535   },
1536   {
1537     0x08,
1538     L"  Pata Controller"
1539   },
1540   {
1541     0x09,
1542     L"  Sata Controller"
1543   },
1544   {
1545     0x0A,
1546     L"  Sas Controller"
1547   },
1548 };
1549 
1550 TABLE_ITEM  SELTypesTable[] = {
1551   {
1552     0x00,
1553     L" Reserved."
1554   },
1555   {
1556     0x01,
1557     L" Single-bit ECC memory error"
1558   },
1559   {
1560     0x02,
1561     L" Multi-bit ECC memory error"
1562   },
1563   {
1564     0x03,
1565     L" Parity memory error"
1566   },
1567   {
1568     0x04,
1569     L" Bus time-out"
1570   },
1571   {
1572     0x05,
1573     L" I/O Channel Check"
1574   },
1575   {
1576     0x06,
1577     L" Software NMI"
1578   },
1579   {
1580     0x07,
1581     L" POST Memory Resize"
1582   },
1583   {
1584     0x08,
1585     L" POST Error"
1586   },
1587   {
1588     0x09,
1589     L" PCI Parity Error"
1590   },
1591   {
1592     0x0A,
1593     L" PCI System Error"
1594   },
1595   {
1596     0x0B,
1597     L" CPU Failure"
1598   },
1599   {
1600     0x0C,
1601     L" EISA FailSafe Timer time-out"
1602   },
1603   {
1604     0x0D,
1605     L" Correctable memory log disabled"
1606   },
1607   {
1608     0x0E,
1609     L" Logging disabled for a specific Event Type"
1610   },
1611   {
1612     0x0F,
1613     L" Reserved"
1614   },
1615   {
1616     0x10,
1617     L" System Limit Exceeded"
1618   },
1619   {
1620     0x11,
1621     L" Asynchronous hardware timer expired and issued a system reset"
1622   },
1623   {
1624     0x12,
1625     L" System configuration information"
1626   },
1627   {
1628     0x13,
1629     L" Hard-disk information"
1630   },
1631   {
1632     0x14,
1633     L" System reconfigured"
1634   },
1635   {
1636     0x15,
1637     L" Uncorrectable CPU-complex error"
1638   },
1639   {
1640     0x16,
1641     L" Log Area Reset/Cleared"
1642   },
1643   {
1644     0x17,
1645     L" System boot"
1646   },
1647   {
1648     0x7F18,
1649     L" Unused by SMBIOS specification"
1650   },
1651   {
1652     0xFE80,
1653     L" System and OEM specified"
1654   },
1655   {
1656     0xFF,
1657     L" End-of-log"
1658   },
1659 };
1660 
1661 TABLE_ITEM  SELVarDataFormatTypeTable[] = {
1662   {
1663     0x00,
1664     L" None "
1665   },
1666   {
1667     0x01,
1668     L" Handle "
1669   },
1670   {
1671     0x02,
1672     L" Multiple-Event "
1673   },
1674   {
1675     0x03,
1676     L" Multiple-Event Handle "
1677   },
1678   {
1679     0x04,
1680     L" POST Results Bitmap "
1681   },
1682   //
1683   // Defined below
1684   //
1685   {
1686     0x05,
1687     L" System Management Type"
1688   },
1689   //
1690   // Defined below
1691   //
1692   {
1693     0x06,
1694     L" Multiple-Event System Management Type "
1695   },
1696   {
1697     0x7F07,
1698     L" Unused "
1699   },
1700   {
1701     0xFF80,
1702     L" OEM assigned "
1703   },
1704 };
1705 
1706 TABLE_ITEM  PostResultsBitmapDw1Table[] = {
1707   {
1708     0,
1709     L" Channel 2 Timer error "
1710   },
1711   {
1712     1,
1713     L" Master PIC (8259 #1) error "
1714   },
1715   {
1716     2,
1717     L" Slave PIC (8259 #2) error "
1718   },
1719   {
1720     3,
1721     L" CMOS Battery Failure "
1722   },
1723   {
1724     4,
1725     L" CMOS System Options Not Set "
1726   },
1727   {
1728     5,
1729     L" CMOS Checksum Error "
1730   },
1731   {
1732     6,
1733     L" CMOS Configuration Error "
1734   },
1735   {
1736     7,
1737     L" Mouse and Keyboard Swapped "
1738   },
1739   {
1740     8,
1741     L" Keyboard Locked "
1742   },
1743   {
1744     9,
1745     L" Keyboard Not Functional "
1746   },
1747   {
1748     10,
1749     L" Keyboard Controller Not Functional "
1750   },
1751   {
1752     11,
1753     L" CMOS Memory Size Different "
1754   },
1755   {
1756     12,
1757     L" Memory Decreased in Size "
1758   },
1759   {
1760     13,
1761     L" Cache Memory Error "
1762   },
1763   {
1764     14,
1765     L" Floppy Drive 0 Error "
1766   },
1767   {
1768     15,
1769     L" Floppy Drive 1 Error "
1770   },
1771   {
1772     16,
1773     L" Floppy Controller Failure "
1774   },
1775   {
1776     17,
1777     L" Number of ATA Drives Reduced Error "
1778   },
1779   {
1780     18,
1781     L" CMOS Time Not Set "
1782   },
1783   {
1784     19,
1785     L" DDC Monitor Configuration Change "
1786   },
1787   {
1788     20,
1789     L" Reserved, set to 0 "
1790   },
1791   {
1792     21,
1793     L" Reserved, set to 0 "
1794   },
1795   {
1796     22,
1797     L" Reserved, set to 0 "
1798   },
1799   {
1800     23,
1801     L" Reserved, set to 0 "
1802   },
1803   {
1804     24,
1805     L" Second DWORD has valid data "
1806   },
1807   {
1808     25,
1809     L" Reserved, set to 0 "
1810   },
1811   {
1812     26,
1813     L" Reserved, set to 0 "
1814   },
1815   {
1816     27,
1817     L" Reserved, set to 0 "
1818   },
1819   {
1820     28,
1821     L" Normally 0; available for OEM assignment "
1822   },
1823   {
1824     29,
1825     L" Normally 0; available for OEM assignment "
1826   },
1827   {
1828     30,
1829     L" Normally 0; available for OEM assignment "
1830   },
1831   {
1832     31,
1833     L" Normally 0; available for OEM assignment "
1834   },
1835 };
1836 
1837 TABLE_ITEM  PostResultsBitmapDw2Table[] = {
1838   {
1839     0,
1840     L" Normally 0; available for OEM assignment "
1841   },
1842   {
1843     1,
1844     L" Normally 0; available for OEM assignment "
1845   },
1846   {
1847     2,
1848     L" Normally 0; available for OEM assignment "
1849   },
1850   {
1851     3,
1852     L" Normally 0; available for OEM assignment "
1853   },
1854   {
1855     4,
1856     L" Normally 0; available for OEM assignment "
1857   },
1858   {
1859     5,
1860     L" Normally 0; available for OEM assignment "
1861   },
1862   {
1863     6,
1864     L" Normally 0; available for OEM assignment "
1865   },
1866   {
1867     7,
1868     L" PCI Memory Conflict "
1869   },
1870   {
1871     8,
1872     L" PCI I/O Conflict "
1873   },
1874   {
1875     9,
1876     L" PCI IRQ Conflict "
1877   },
1878   {
1879     10,
1880     L" PNP Memory Conflict "
1881   },
1882   {
1883     11,
1884     L" PNP 32 bit Memory Conflict "
1885   },
1886   {
1887     12,
1888     L" PNP I/O Conflict "
1889   },
1890   {
1891     13,
1892     L" PNP IRQ Conflict "
1893   },
1894   {
1895     14,
1896     L" PNP DMA Conflict "
1897   },
1898   {
1899     15,
1900     L" Bad PNP Serial ID Checksum "
1901   },
1902   {
1903     16,
1904     L" Bad PNP Resource Data Checksum "
1905   },
1906   {
1907     17,
1908     L" Static Resource Conflict "
1909   },
1910   {
1911     18,
1912     L" NVRAM Checksum Error, NVRAM Cleared "
1913   },
1914   {
1915     19,
1916     L" System Board Device Resource Conflict "
1917   },
1918   {
1919     20,
1920     L" Primary Output Device Not Found "
1921   },
1922   {
1923     21,
1924     L" Primary Input Device Not Found "
1925   },
1926   {
1927     22,
1928     L" Primary Boot Device Not Found "
1929   },
1930   {
1931     23,
1932     L" NVRAM Cleared By Jumper "
1933   },
1934   {
1935     24,
1936     L" NVRAM Data Invalid, NVRAM Cleared "
1937   },
1938   {
1939     25,
1940     L" FDC Resource Conflict "
1941   },
1942   {
1943     26,
1944     L" Primary ATA Controller Resource Conflict "
1945   },
1946   {
1947     27,
1948     L" Secondary ATA Controller Resource Conflict "
1949   },
1950   {
1951     28,
1952     L" Parallel Port Resource Conflict "
1953   },
1954   {
1955     29,
1956     L" Serial Port 1 Resource Conflict "
1957   },
1958   {
1959     30,
1960     L" Serial Port 2 Resource Conflict "
1961   },
1962   {
1963     31,
1964     L" Audio Resource Conflict "
1965   },
1966 };
1967 
1968 TABLE_ITEM  SELSysManagementTypesTable[] = {
1969   {
1970     0x01,
1971     L" +2.5V Out of range, #2 "
1972   },
1973   {
1974     0x02,
1975     L" +3.3V Out of range "
1976   },
1977   {
1978     0x03,
1979     L" +5V Out of range "
1980   },
1981   {
1982     0x04,
1983     L" -5V Out of range "
1984   },
1985   {
1986     0x05,
1987     L" +12V Out of range "
1988   },
1989   {
1990     0x06,
1991     L" -12V Out of range "
1992   },
1993   {
1994     0x0F07,
1995     L" Reserved for future out-of-range voltage levels "
1996   },
1997   {
1998     0x10,
1999     L" System board temperature out of range "
2000   },
2001   {
2002     0x11,
2003     L" Processor #1 temperature out of range "
2004   },
2005   {
2006     0x12,
2007     L" Processor #2 temperature out of range "
2008   },
2009   {
2010     0x13,
2011     L" Processor #3 temperature out of range "
2012   },
2013   {
2014     0x14,
2015     L" Processor #4 temperature out of range "
2016   },
2017   {
2018     0x1F15,
2019     L" Reserved for future out-of-range temperatures"
2020   },
2021   {
2022     0x2720,
2023     L" Fan n (n = 0 to 7) Out of range "
2024   },
2025   {
2026     0x2F28,
2027     L" Reserved for future assignment via this specification "
2028   },
2029   {
2030     0x30,
2031     L" Chassis secure switch activated "
2032   },
2033 };
2034 
2035 TABLE_ITEM  PMALocationTable[] = {
2036   {
2037     0x01,
2038     L"  Other"
2039   },
2040   {
2041     0x02,
2042     L"  Unknown"
2043   },
2044   {
2045     0x03,
2046     L"  System board or motherboard"
2047   },
2048   {
2049     0x04,
2050     L"  ISA add-on card"
2051   },
2052   {
2053     0x05,
2054     L"  EISA add-on card"
2055   },
2056   {
2057     0x06,
2058     L"  PCI add-on card"
2059   },
2060   {
2061     0x07,
2062     L"  MCA add-on card"
2063   },
2064   {
2065     0x08,
2066     L"  PCMCIA add-on card"
2067   },
2068   {
2069     0x09,
2070     L"  Proprietary add-on card"
2071   },
2072   {
2073     0x0A,
2074     L"  NuBus"
2075   },
2076   {
2077     0xA0,
2078     L"  PC-98/C20 add-on card"
2079   },
2080   {
2081     0xA1,
2082     L"  PC-98/C24 add-on card"
2083   },
2084   {
2085     0xA2,
2086     L"  PC-98/E add-on card"
2087   },
2088   {
2089     0xA3,
2090     L"  PC-98/Local bus add-on card"
2091   }
2092 };
2093 
2094 TABLE_ITEM  PMAUseTable[] = {
2095   {
2096     0x01,
2097     L" Other"
2098   },
2099   {
2100     0x02,
2101     L" Unknown"
2102   },
2103   {
2104     0x03,
2105     L" System memory"
2106   },
2107   {
2108     0x04,
2109     L" Video memory"
2110   },
2111   {
2112     0x05,
2113     L" Flash memory"
2114   },
2115   {
2116     0x06,
2117     L" Non-volatile RAM"
2118   },
2119   {
2120     0x07,
2121     L" Cache memory"
2122   }
2123 };
2124 
2125 TABLE_ITEM  PMAErrorCorrectionTypesTable[] = {
2126   {
2127     0x01,
2128     L"  Other"
2129   },
2130   {
2131     0x02,
2132     L"  Unknown"
2133   },
2134   {
2135     0x03,
2136     L"  None"
2137   },
2138   {
2139     0x04,
2140     L"  Parity"
2141   },
2142   {
2143     0x05,
2144     L"  Single-bit ECC"
2145   },
2146   {
2147     0x06,
2148     L"  Multi-bit ECC"
2149   },
2150   {
2151     0x07,
2152     L"  CRC"
2153   }
2154 };
2155 
2156 TABLE_ITEM  MemoryDeviceFormFactorTable[] = {
2157   {
2158     0x01,
2159     L"  Other"
2160   },
2161   {
2162     0x02,
2163     L"  Unknown"
2164   },
2165   {
2166     0x03,
2167     L"  SIMM"
2168   },
2169   {
2170     0x04,
2171     L"  SIP"
2172   },
2173   {
2174     0x05,
2175     L"  Chip"
2176   },
2177   {
2178     0x06,
2179     L"  DIP"
2180   },
2181   {
2182     0x07,
2183     L"  ZIP"
2184   },
2185   {
2186     0x08,
2187     L"  Proprietary Card"
2188   },
2189   {
2190     0x09,
2191     L"  DIMM"
2192   },
2193   {
2194     0x0A,
2195     L"  TSOP"
2196   },
2197   {
2198     0x0B,
2199     L"  Row of chips"
2200   },
2201   {
2202     0x0C,
2203     L"  RIMM"
2204   },
2205   {
2206     0x0D,
2207     L"  SODIMM"
2208   },
2209   {
2210     0x0E,
2211     L"  SRIMM"
2212   },
2213   {
2214     0x0F,
2215     L"  FB-DIMM"
2216   }
2217 };
2218 
2219 TABLE_ITEM  MemoryDeviceTypeTable[] = {
2220   {
2221     0x01,
2222     L"  Other"
2223   },
2224   {
2225     0x02,
2226     L"  Unknown"
2227   },
2228   {
2229     0x03,
2230     L"  DRAM"
2231   },
2232   {
2233     0x04,
2234     L"  EDRAM"
2235   },
2236   {
2237     0x05,
2238     L"  VRAM"
2239   },
2240   {
2241     0x06,
2242     L"  SRAM"
2243   },
2244   {
2245     0x07,
2246     L"  RAM"
2247   },
2248   {
2249     0x08,
2250     L"  ROM"
2251   },
2252   {
2253     0x09,
2254     L"  FLASH"
2255   },
2256   {
2257     0x0A,
2258     L"  EEPROM"
2259   },
2260   {
2261     0x0B,
2262     L"  FEPROM"
2263   },
2264   {
2265     0x0C,
2266     L"  EPROM"
2267   },
2268   {
2269     0x0D,
2270     L"  CDRAM"
2271   },
2272   {
2273     0x0E,
2274     L"  3DRAM"
2275   },
2276   {
2277     0x0F,
2278     L"  SDRAM"
2279   },
2280   {
2281     0x10,
2282     L"  SGRAM"
2283   },
2284   {
2285     0x11,
2286     L"  RDRAM"
2287   },
2288   {
2289     0x12,
2290     L"  DDR"
2291   },
2292   {
2293     0x13,
2294     L"  DDR2"
2295   },
2296   {
2297     0x14,
2298     L"  DDR2 FB-DIMM"
2299   },
2300   {
2301     0x18,
2302     L"  DDR3"
2303   },
2304   {
2305     0x19,
2306     L"  FBD2"
2307   },
2308   {
2309     0x1A,
2310     L"  DDR4"
2311   },
2312   {
2313     0x1B,
2314     L"  LPDDR"
2315   },
2316   {
2317     0x1C,
2318     L"  LPDDR2"
2319   },
2320   {
2321     0x1D,
2322     L"  LPDDR3"
2323   },
2324   {
2325     0x1E,
2326     L"  LPDDR4"
2327   }
2328 };
2329 
2330 TABLE_ITEM  MemoryDeviceTypeDetailTable[] = {
2331   {
2332     1,
2333     L" Other"
2334   },
2335   {
2336     2,
2337     L" Unknown"
2338   },
2339   {
2340     3,
2341     L" Fast-paged"
2342   },
2343   {
2344     4,
2345     L" Static column"
2346   },
2347   {
2348     5,
2349     L" Pseudo-STATIC"
2350   },
2351   {
2352     6,
2353     L" RAMBUS "
2354   },
2355   {
2356     7,
2357     L" Synchronous"
2358   },
2359   {
2360     8,
2361     L" CMOS"
2362   },
2363   {
2364     9,
2365     L" EDO"
2366   },
2367   {
2368     10,
2369     L" Window DRAM"
2370   },
2371   {
2372     11,
2373     L" Cache DRAM"
2374   },
2375   {
2376     12,
2377     L" Non-volatile"
2378   },
2379   {
2380     13,
2381     L" Registered(Buffered)"
2382   },
2383   {
2384     14,
2385     L" Unbuffered(Unregistered)"
2386   }
2387 };
2388 
2389 TABLE_ITEM  MemoryErrorTypeTable[] = {
2390   {
2391     0x01,
2392     L"  Other"
2393   },
2394   {
2395     0x02,
2396     L"  Unknown"
2397   },
2398   {
2399     0x03,
2400     L"  OK"
2401   },
2402   {
2403     0x04,
2404     L"  Bad read"
2405   },
2406   {
2407     0x05,
2408     L"  Parity error"
2409   },
2410   {
2411     0x06,
2412     L"  Single-bit error"
2413   },
2414   {
2415     0x07,
2416     L"  Double-bit error"
2417   },
2418   {
2419     0x08,
2420     L"  Multi-bit error"
2421   },
2422   {
2423     0x09,
2424     L"  Nibble error"
2425   },
2426   {
2427     0x0A,
2428     L"  Checksum error"
2429   },
2430   {
2431     0x0B,
2432     L"  CRC error"
2433   },
2434   {
2435     0x0C,
2436     L"  Corrected single-bit error"
2437   },
2438   {
2439     0x0D,
2440     L"  Corrected error"
2441   },
2442   {
2443     0x0E,
2444     L"  Uncorrectable error"
2445   },
2446 };
2447 
2448 TABLE_ITEM  MemoryErrorGranularityTable[] = {
2449   {
2450     0x01,
2451     L"  Other"
2452   },
2453   {
2454     0x02,
2455     L"  Unknown"
2456   },
2457   {
2458     0x03,
2459     L"  Device level"
2460   },
2461   {
2462     0x04,
2463     L"  Memory partition level"
2464   },
2465 };
2466 
2467 TABLE_ITEM  MemoryErrorOperationTable[] = {
2468   {
2469     0x01,
2470     L"  Other"
2471   },
2472   {
2473     0x02,
2474     L"  Unknown"
2475   },
2476   {
2477     0x03,
2478     L"  Read"
2479   },
2480   {
2481     0x04,
2482     L"  Write"
2483   },
2484   {
2485     0x05,
2486     L"  Partial Write"
2487   },
2488 };
2489 
2490 TABLE_ITEM  PointingDeviceTypeTable[] = {
2491   {
2492     0x01,
2493     L"  Other"
2494   },
2495   {
2496     0x02,
2497     L"  Unknown"
2498   },
2499   {
2500     0x03,
2501     L"  Mouse"
2502   },
2503   {
2504     0x04,
2505     L"  Track Ball"
2506   },
2507   {
2508     0x05,
2509     L"  Track Point"
2510   },
2511   {
2512     0x06,
2513     L"  Glide Point"
2514   },
2515   {
2516     0x07,
2517     L"  Touch Pad"
2518   },
2519 };
2520 
2521 TABLE_ITEM  PointingDeviceInterfaceTable[] = {
2522   {
2523     0x01,
2524     L" Other"
2525   },
2526   {
2527     0x02,
2528     L" Unknown"
2529   },
2530   {
2531     0x03,
2532     L" Serial"
2533   },
2534   {
2535     0x04,
2536     L" PS/2"
2537   },
2538   {
2539     0x05,
2540     L" Infrared"
2541   },
2542   {
2543     0x06,
2544     L" HP-HIL"
2545   },
2546   {
2547     0x07,
2548     L" Bus mouse"
2549   },
2550   {
2551     0x08,
2552     L" ADB(Apple Desktop Bus"
2553   },
2554   {
2555     0xA0,
2556     L" Bus mouse DB-9"
2557   },
2558   {
2559     0xA1,
2560     L" Bus mouse mirco-DIN"
2561   },
2562   {
2563     0xA2,
2564     L" USB"
2565   },
2566 };
2567 
2568 TABLE_ITEM  PBDeviceChemistryTable[] = {
2569   {
2570     0x01,
2571     L" Other "
2572   },
2573   {
2574     0x02,
2575     L" Unknown "
2576   },
2577   {
2578     0x03,
2579     L" Lead Acid "
2580   },
2581   {
2582     0x04,
2583     L" Nickel Cadmium "
2584   },
2585   {
2586     0x05,
2587     L" Nickel metal hydride "
2588   },
2589   {
2590     0x06,
2591     L" Lithium-ion "
2592   },
2593   {
2594     0x07,
2595     L" Zinc air "
2596   },
2597   {
2598     0x08,
2599     L" Lithium Polymer "
2600   },
2601 };
2602 
2603 TABLE_ITEM  VPLocationTable[] = {
2604   {
2605     0x01,
2606     L" Other "
2607   },
2608   {
2609     0x02,
2610     L" Unknown "
2611   },
2612   {
2613     0x03,
2614     L" OK "
2615   },
2616   {
2617     0x04,
2618     L" Non-critical "
2619   },
2620   {
2621     0x05,
2622     L" Critical "
2623   },
2624   {
2625     0x06,
2626     L" Non-recoverable "
2627   },
2628 };
2629 
2630 TABLE_ITEM  VPStatusTable[] = {
2631   {
2632     0x01,
2633     L" Other "
2634   },
2635   {
2636     0x02,
2637     L" Unknown "
2638   },
2639   {
2640     0x03,
2641     L" Processor "
2642   },
2643   {
2644     0x04,
2645     L" Disk "
2646   },
2647   {
2648     0x05,
2649     L" Peripheral Bay "
2650   },
2651   {
2652     0x06,
2653     L" System Management Module "
2654   },
2655   {
2656     0x07,
2657     L" Motherboard "
2658   },
2659   {
2660     0x08,
2661     L" Memory Module "
2662   },
2663   {
2664     0x09,
2665     L" Processor Module "
2666   },
2667   {
2668     0x0A,
2669     L" Power Unit "
2670   },
2671   {
2672     0x0B,
2673     L" Add-in Card "
2674   },
2675 };
2676 
2677 TABLE_ITEM  CoolingDeviceStatusTable[] = {
2678   {
2679     0x01,
2680     L" Other "
2681   },
2682   {
2683     0x02,
2684     L" Unknown "
2685   },
2686   {
2687     0x03,
2688     L" OK "
2689   },
2690   {
2691     0x04,
2692     L" Non-critical "
2693   },
2694   {
2695     0x05,
2696     L" Critical "
2697   },
2698   {
2699     0x06,
2700     L" Non-recoverable "
2701   },
2702 };
2703 
2704 TABLE_ITEM  CoolingDeviceTypeTable[] = {
2705   {
2706     0x01,
2707     L" Other "
2708   },
2709   {
2710     0x02,
2711     L" Unknown "
2712   },
2713   {
2714     0x03,
2715     L" Fan "
2716   },
2717   {
2718     0x04,
2719     L" Centrifugal Blower "
2720   },
2721   {
2722     0x05,
2723     L" Chip Fan "
2724   },
2725   {
2726     0x06,
2727     L" Cabinet Fan "
2728   },
2729   {
2730     0x07,
2731     L" Power Supply Fan "
2732   },
2733   {
2734     0x08,
2735     L" Heat Pipe "
2736   },
2737   {
2738     0x09,
2739     L" Integrated Refrigeration "
2740   },
2741   {
2742     0x10,
2743     L" Active Cooling "
2744   },
2745   {
2746     0x11,
2747     L" Passive Cooling "
2748   },
2749 };
2750 
2751 TABLE_ITEM  TemperatureProbeStatusTable[] = {
2752   {
2753     0x01,
2754     L" Other "
2755   },
2756   {
2757     0x02,
2758     L" Unknown "
2759   },
2760   {
2761     0x03,
2762     L" OK "
2763   },
2764   {
2765     0x04,
2766     L" Non-critical "
2767   },
2768   {
2769     0x05,
2770     L" Critical "
2771   },
2772   {
2773     0x06,
2774     L" Non-recoverable "
2775   },
2776 };
2777 
2778 TABLE_ITEM  TemperatureProbeLocTable[] = {
2779   {
2780     0x01,
2781     L" Other "
2782   },
2783   {
2784     0x02,
2785     L" Unknown "
2786   },
2787   {
2788     0x03,
2789     L" Processor "
2790   },
2791   {
2792     0x04,
2793     L" Disk "
2794   },
2795   {
2796     0x05,
2797     L" Peripheral Bay "
2798   },
2799   {
2800     0x06,
2801     L" System Management Module "
2802   },
2803   {
2804     0x07,
2805     L" Motherboard "
2806   },
2807   {
2808     0x08,
2809     L" Memory Module "
2810   },
2811   {
2812     0x09,
2813     L" Processor Module "
2814   },
2815   {
2816     0x0A,
2817     L" Power Unit "
2818   },
2819   {
2820     0x0B,
2821     L" Add-in Card "
2822   },
2823 };
2824 
2825 TABLE_ITEM  ECPStatusTable[] = {
2826   {
2827     0x01,
2828     L" Other "
2829   },
2830   {
2831     0x02,
2832     L" Unknown "
2833   },
2834   {
2835     0x03,
2836     L" OK "
2837   },
2838   {
2839     0x04,
2840     L" Non-critical "
2841   },
2842   {
2843     0x05,
2844     L" Critical "
2845   },
2846   {
2847     0x06,
2848     L" Non-recoverable "
2849   },
2850 };
2851 
2852 TABLE_ITEM  ECPLocTable[] = {
2853   {
2854     0x01,
2855     L" Other "
2856   },
2857   {
2858     0x02,
2859     L" Unknown "
2860   },
2861   {
2862     0x03,
2863     L" Processor "
2864   },
2865   {
2866     0x04,
2867     L" Disk "
2868   },
2869   {
2870     0x05,
2871     L" Peripheral Bay "
2872   },
2873   {
2874     0x06,
2875     L" System Management Module "
2876   },
2877   {
2878     0x07,
2879     L" Motherboard "
2880   },
2881   {
2882     0x08,
2883     L" Memory Module "
2884   },
2885   {
2886     0x09,
2887     L" Processor Module "
2888   },
2889   {
2890     0x0A,
2891     L" Power Unit "
2892   },
2893   {
2894     0x0B,
2895     L" Add-in Card "
2896   },
2897 };
2898 
2899 TABLE_ITEM  MDTypeTable[] = {
2900   {
2901     0x01,
2902     L" Other "
2903   },
2904   {
2905     0x02,
2906     L" Unknown "
2907   },
2908   {
2909     0x03,
2910     L" National Semiconductor LM75 "
2911   },
2912   {
2913     0x04,
2914     L" National Semiconductor LM78 "
2915   },
2916   {
2917     0x05,
2918     L" National Semiconductor LM79 "
2919   },
2920   {
2921     0x06,
2922     L" National Semiconductor LM80 "
2923   },
2924   {
2925     0x07,
2926     L" National Semiconductor LM81 "
2927   },
2928   {
2929     0x08,
2930     L" Analog Devices ADM9240 "
2931   },
2932   {
2933     0x09,
2934     L" Dallas Semiconductor DS1780 "
2935   },
2936   {
2937     0x0A,
2938     L" Maxim 1617 "
2939   },
2940   {
2941     0x0B,
2942     L" Genesys GL518SM "
2943   },
2944   {
2945     0x0C,
2946     L" Winbond W83781D "
2947   },
2948   {
2949     0x0D,
2950     L" Holtek HT82H791 "
2951   },
2952 };
2953 
2954 TABLE_ITEM  MDAddressTypeTable[] = {
2955   {
2956     0x01,
2957     L" Other "
2958   },
2959   {
2960     0x02,
2961     L" Unknown "
2962   },
2963   {
2964     0x03,
2965     L" I/O Port "
2966   },
2967   {
2968     0x04,
2969     L" Memory "
2970   },
2971   {
2972     0x05,
2973     L" SM Bus "
2974   },
2975 };
2976 
2977 TABLE_ITEM  MemoryChannelTypeTable[] = {
2978   {
2979     0x01,
2980     L" Other "
2981   },
2982   {
2983     0x02,
2984     L" Unknown "
2985   },
2986   {
2987     0x03,
2988     L" RamBus "
2989   },
2990   {
2991     0x04,
2992     L" SyncLink "
2993   },
2994 };
2995 
2996 TABLE_ITEM  IPMIDIBMCInterfaceTypeTable[] = {
2997   {
2998     0x00,
2999     L" Unknown "
3000   },
3001   {
3002     0x01,
3003     L" KCS: Keyboard Controller Style "
3004   },
3005   {
3006     0x02,
3007     L" SMIC: Server Management Interface Chip "
3008   },
3009   {
3010     0x03,
3011     L" BT: Block Transfer "
3012   },
3013   {
3014     0xFF04,
3015     L" Reserved for future assignment by this specification "
3016   },
3017 };
3018 
3019 TABLE_ITEM  StructureTypeInfoTable[] = {
3020   {
3021     0,
3022     L" BIOS Information"
3023   },
3024   {
3025     1,
3026     L" System Information"
3027   },
3028   {
3029     2,
3030     L" Base Board Information"
3031   },
3032   {
3033     3,
3034     L" System Enclosure"
3035   },
3036   {
3037     4,
3038     L" Processor Information"
3039   },
3040   {
3041     5,
3042     L" Memory Controller Information "
3043   },
3044   {
3045     6,
3046     L" Memory Module Information "
3047   },
3048   {
3049     7,
3050     L" Cache Information "
3051   },
3052   {
3053     8,
3054     L" Port Connector Information "
3055   },
3056   {
3057     9,
3058     L" System Slots "
3059   },
3060   {
3061     10,
3062     L" On Board Devices Information  "
3063   },
3064   {
3065     11,
3066     L" OEM Strings"
3067   },
3068   {
3069     12,
3070     L" System Configuration Options "
3071   },
3072   {
3073     13,
3074     L" BIOS Language Information  "
3075   },
3076   {
3077     14,
3078     L" Group Associations "
3079   },
3080   {
3081     15,
3082     L" System Event Log "
3083   },
3084   {
3085     16,
3086     L" Physical Memory Array "
3087   },
3088   {
3089     17,
3090     L" Memory Device "
3091   },
3092   {
3093     18,
3094     L" 32-bit Memory Error Information "
3095   },
3096   {
3097     19,
3098     L" Memory Array Mapped Address "
3099   },
3100   {
3101     20,
3102     L" Memory Device Mapped Address  "
3103   },
3104   {
3105     21,
3106     L" Built-in Pointing Device "
3107   },
3108   {
3109     22,
3110     L" Portable Battery "
3111   },
3112   {
3113     23,
3114     L" System Reset "
3115   },
3116   {
3117     24,
3118     L" Hardware Security "
3119   },
3120   {
3121     25,
3122     L" System Power Controls "
3123   },
3124   {
3125     26,
3126     L" Voltage Probe "
3127   },
3128   {
3129     27,
3130     L" Cooling Device "
3131   },
3132   {
3133     28,
3134     L" Temperature Probe "
3135   },
3136   {
3137     29,
3138     L" Electrical Current Probe "
3139   },
3140   {
3141     30,
3142     L" Out-of-Band Remote Access  "
3143   },
3144   {
3145     31,
3146     L" Boot Integrity Services (BIS) Entry Point"
3147   },
3148   {
3149     32,
3150     L" System Boot Information "
3151   },
3152   {
3153     33,
3154     L" 64-bit Memory Error Information "
3155   },
3156   {
3157     34,
3158     L" Management Device "
3159   },
3160   {
3161     35,
3162     L" Management Device Component "
3163   },
3164   {
3165     36,
3166     L" Management Device Threshold Data "
3167   },
3168   {
3169     37,
3170     L" Memory Channel "
3171   },
3172   {
3173     38,
3174     L" IPMI Device Information "
3175   },
3176   {
3177     39,
3178     L" System Power Supply"
3179   },
3180   {
3181     40,
3182     L" Additional Information"
3183   },
3184   {
3185     41,
3186     L" Onboard Devices Extended Information"
3187   },
3188   {
3189     42,
3190     L" Management Controller Host Interface"
3191   },
3192   {
3193     0x7E,
3194     L" Inactive"
3195   },
3196   {
3197     0x7F,
3198     L" End-of-Table "
3199   },
3200 };
3201 
3202 
3203 /**
3204   Given a table and a Key, return the responding info.
3205 
3206   Notes:
3207     Table[Index].Key is change from UINT8 to UINT16,
3208     in order to deal with "0xaa - 0xbb".
3209 
3210     For example:
3211       DisplaySELVariableDataFormatTypes(UINT8 Type, UINT8 Option)
3212     has a item:
3213       "0x07-0x7F,   Unused"
3214     Now define Key = 0x7F07, that is to say: High = 0x7F, Low = 0x07.
3215     Then all the Key Value between Low and High gets the same string
3216     L"Unused".
3217 
3218   @param[in] Table     The begin address of table.
3219   @param[in] Number    The number of table items.
3220   @param[in] Key       The query Key.
3221   @param[in, out] Info Input as empty buffer; output as data buffer.
3222   @param[in] InfoLen   The max number of characters for Info.
3223 
3224   @return the found Key and Info is valid.
3225   @retval QUERY_TABLE_UNFOUND and Info should be NULL.
3226 **/
3227 UINT8
QueryTable(IN TABLE_ITEM * Table,IN UINTN Number,IN UINT8 Key,IN OUT CHAR16 * Info,IN UINTN InfoLen)3228 QueryTable (
3229   IN  TABLE_ITEM    *Table,
3230   IN  UINTN         Number,
3231   IN  UINT8         Key,
3232   IN  OUT CHAR16    *Info,
3233   IN  UINTN         InfoLen
3234   )
3235 {
3236   UINTN Index;
3237   //
3238   // High byte and Low byte of word
3239   //
3240   UINT8 High;
3241   UINT8 Low;
3242 
3243   for (Index = 0; Index < Number; Index++) {
3244     High  = (UINT8) (Table[Index].Key >> 8);
3245     Low   = (UINT8) (Table[Index].Key & 0x00FF);
3246 
3247     //
3248     // Check if Key is in the range
3249     // or if Key == Value in the table
3250     //
3251     if ((High > Low && Key >= Low && Key <= High)
3252       || (Table[Index].Key == Key)) {
3253       StrnCpyS (Info, InfoLen, Table[Index].Info, InfoLen - 1);
3254       StrnCatS (Info, InfoLen, L"\n", InfoLen - 1 - StrLen(Info));
3255       return Key;
3256     }
3257   }
3258 
3259   StrCpyS (Info, InfoLen, L"Undefined Value\n");
3260   return QUERY_TABLE_UNFOUND;
3261 }
3262 
3263 /**
3264   Given a table of bit info and a Key, return the responding info to the Key.
3265 
3266   @param[in] Table     Point to a table which maintains a map of 'bit' to 'message'.
3267   @param[in] Number    Number of table items.
3268   @param[in] Bits      The Key of query the bit map information.
3269 **/
3270 VOID
PrintBitsInfo(IN TABLE_ITEM * Table,IN UINTN Number,IN UINT32 Bits)3271 PrintBitsInfo (
3272   IN  TABLE_ITEM    *Table,
3273   IN  UINTN         Number,
3274   IN  UINT32        Bits
3275   )
3276 {
3277   //
3278   // Get certain bit of 'Value':
3279   //
3280 #define BIT(Value, bit) ((Value) & ((UINT32) 1) << (bit))
3281   //
3282   // Clear certain bit of 'Value':
3283   //
3284 #define CLR_BIT(Value, bit) ((Value) -= (BIT (Value, bit)))
3285 
3286   UINTN   Index;
3287   UINT32  Value;
3288   BOOLEAN NoInfo;
3289 
3290   NoInfo  = TRUE;
3291   Value   = Bits;
3292   //
3293   // query the table and print information
3294   //
3295   for (Index = 0; Index < Number; Index++) {
3296     if (BIT (Value, Table[Index].Key) != 0) {
3297       Print (Table[Index].Info);
3298       Print (L" | ");
3299 
3300       NoInfo = FALSE;
3301       //
3302       // clear the bit, for reserved bits test
3303       //
3304       CLR_BIT (Value, Table[Index].Key);
3305     }
3306   }
3307 
3308   if (NoInfo) {
3309     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_NO_INFO), gShellDebug1HiiHandle);
3310   }
3311 
3312   if (Value != 0) {
3313     ShellPrintHiiEx(-1,-1,NULL,
3314       STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_RSVD_BITS_SET),
3315       gShellDebug1HiiHandle,
3316       Value
3317      );
3318   }
3319 
3320   Print (L"\n");
3321 }
3322 //
3323 // //////////////////////////////////////////////////////////////////
3324 //
3325 // Following uses QueryTable functions to simplify the coding.
3326 // QueryTable(), PrintBitsInfo()
3327 //
3328 //
3329 #define PRINT_TABLE_ITEM(Table, Key) \
3330   do { \
3331     UINTN   Num; \
3332     CHAR16  Info[66]; \
3333     Num = sizeof (Table) / sizeof (TABLE_ITEM); \
3334     ZeroMem (Info, sizeof (Info)); \
3335     QueryTable (Table, Num, Key, Info, sizeof(Info)/sizeof(Info[0])); \
3336     Print (Info); \
3337   } while (0);
3338 
3339 #define PRINT_BITS_INFO(Table, bits) \
3340   do { \
3341     UINTN Num; \
3342     Num = sizeof (Table) / sizeof (TABLE_ITEM); \
3343     PrintBitsInfo (Table, Num, (UINT32) bits); \
3344   } while (0);
3345 
3346 /**
3347   Display System Information (Type 1) Type.
3348 
3349   @param[in] Type           The key of the structure.
3350   @param[in] Option         The optional information.
3351 **/
3352 VOID
DisplaySystemWakeupType(IN UINT8 Type,IN UINT8 Option)3353 DisplaySystemWakeupType (
3354   IN UINT8 Type,
3355   IN UINT8 Option
3356   )
3357 {
3358   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_WAKEUP_TYPE), gShellDebug1HiiHandle);
3359   PRINT_INFO_OPTION (Type, Option);
3360   PRINT_TABLE_ITEM (SystemWakeupTypeTable, Type);
3361 }
3362 
3363 /**
3364   Display Base Board (Type 2) Feature Flags.
3365 
3366   @param[in] FeatureFlags   The key of the structure.
3367   @param[in] Option         The optional information.
3368 **/
3369 VOID
DisplayBaseBoardFeatureFlags(IN UINT8 FeatureFlags,IN UINT8 Option)3370 DisplayBaseBoardFeatureFlags (
3371   IN UINT8 FeatureFlags,
3372   IN UINT8 Option
3373   )
3374 {
3375   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BASE_BOARD_FEATURE_FLAGS), gShellDebug1HiiHandle);
3376   PRINT_INFO_OPTION (FeatureFlags, Option);
3377   PRINT_BITS_INFO (BaseBoardFeatureFlagsTable, FeatureFlags);
3378 }
3379 
3380 /**
3381   Display Base Board (Type 2) Board Type.
3382 
3383   @param[in] Type           The key of the structure.
3384   @param[in] Option         The optional information.
3385 **/
3386 VOID
DisplayBaseBoardBoardType(IN UINT8 Type,IN UINT8 Option)3387 DisplayBaseBoardBoardType(
3388   IN UINT8 Type,
3389   IN UINT8 Option
3390   )
3391 {
3392   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BASE_BOARD_BOARD_TYPE), gShellDebug1HiiHandle);
3393   PRINT_INFO_OPTION (Type, Option);
3394   PRINT_TABLE_ITEM (BaseBoardBoardTypeTable, Type);
3395 }
3396 
3397 /**
3398   Display System Enclosure (Type 3) Enclosure Type.
3399 
3400   @param[in] Type           The key of the structure.
3401   @param[in] Option         The optional information.
3402 **/
3403 VOID
DisplaySystemEnclosureType(IN UINT8 Type,IN UINT8 Option)3404 DisplaySystemEnclosureType (
3405   IN UINT8 Type,
3406   IN UINT8 Option
3407   )
3408 {
3409   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_CHASSIS_TYPE), gShellDebug1HiiHandle);
3410   PRINT_INFO_OPTION (Type, Option);
3411   //
3412   // query table and print info
3413   //
3414   PRINT_TABLE_ITEM (SystemEnclosureTypeTable, Type);
3415 
3416   if (BIT (Type, 7) != 0) {
3417     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CHASSIS_LOCK_PRESENT), gShellDebug1HiiHandle);
3418   }
3419 }
3420 
3421 /**
3422   Display System Enclosure (Type 3) Enclosure Status.
3423 
3424   @param[in] Status         The key of the structure.
3425   @param[in] Option         The optional information.
3426 **/
3427 VOID
DisplaySystemEnclosureStatus(IN UINT8 Status,IN UINT8 Option)3428 DisplaySystemEnclosureStatus (
3429   IN UINT8 Status,
3430   IN UINT8 Option
3431   )
3432 {
3433   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_CHASSIS_STATUS), gShellDebug1HiiHandle);
3434   PRINT_INFO_OPTION (Status, Option);
3435   PRINT_TABLE_ITEM (SystemEnclosureStatusTable, Status);
3436 }
3437 
3438 /**
3439   Display System Enclosure (Type 3) Security Status.
3440 
3441   @param[in] Status         The key of the structure.
3442   @param[in] Option         The optional information.
3443 **/
3444 VOID
DisplaySESecurityStatus(IN UINT8 Status,IN UINT8 Option)3445 DisplaySESecurityStatus (
3446   IN UINT8 Status,
3447   IN UINT8 Option
3448   )
3449 {
3450   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_CHASSIS_SECURITY), gShellDebug1HiiHandle);
3451   PRINT_INFO_OPTION (Status, Option);
3452   PRINT_TABLE_ITEM (SESecurityStatusTable, Status);
3453 }
3454 
3455 /**
3456   Display Processor Information (Type 4) Type.
3457 
3458   @param[in] Type           The key of the structure.
3459   @param[in] Option         The optional information.
3460 **/
3461 VOID
DisplayProcessorType(IN UINT8 Type,IN UINT8 Option)3462 DisplayProcessorType (
3463   IN UINT8 Type,
3464   IN UINT8 Option
3465   )
3466 {
3467   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PROC_TYPE), gShellDebug1HiiHandle);
3468   PRINT_INFO_OPTION (Type, Option);
3469   PRINT_TABLE_ITEM (ProcessorTypeTable, Type);
3470 }
3471 
3472 /**
3473   Display Processor Information (Type 4) Upgrade.
3474 
3475   @param[in] Upgrade        The key of the structure.
3476   @param[in] Option         The optional information.
3477 **/
3478 VOID
DisplayProcessorUpgrade(IN UINT8 Upgrade,IN UINT8 Option)3479 DisplayProcessorUpgrade (
3480   IN UINT8 Upgrade,
3481   IN UINT8 Option
3482   )
3483 {
3484   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PROC_UPDATE), gShellDebug1HiiHandle);
3485   PRINT_INFO_OPTION (Upgrade, Option);
3486   PRINT_TABLE_ITEM (ProcessorUpgradeTable, Upgrade);
3487 }
3488 
3489 /**
3490   Display Processor Information (Type 4) Characteristics.
3491 
3492   @param[in] Type           The key of the structure.
3493   @param[in] Option         The optional information.
3494 **/
3495 VOID
DisplayProcessorCharacteristics(IN UINT16 Type,IN UINT8 Option)3496 DisplayProcessorCharacteristics (
3497   IN UINT16 Type,
3498   IN UINT8 Option
3499   )
3500 {
3501   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PROC_CHARACTERISTICS), gShellDebug1HiiHandle);
3502   PRINT_INFO_OPTION (Type, Option);
3503   PRINT_BITS_INFO (ProcessorCharacteristicsTable, Type);
3504 }
3505 
3506 /**
3507   Display Memory Controller Information (Type 5) method.
3508 
3509   @param[in] Method         The key of the structure.
3510   @param[in] Option         The optional information.
3511 **/
3512 VOID
DisplayMcErrorDetectMethod(IN UINT8 Method,IN UINT8 Option)3513 DisplayMcErrorDetectMethod (
3514   IN UINT8 Method,
3515   IN UINT8 Option
3516   )
3517 {
3518   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_DETECTMETHOD), gShellDebug1HiiHandle);
3519   PRINT_INFO_OPTION (Method, Option);
3520   PRINT_TABLE_ITEM (McErrorDetectMethodTable, Method);
3521 }
3522 
3523 /**
3524   Display Memory Controller Information (Type 5) Capability.
3525 
3526   @param[in] Capability     The key of the structure.
3527   @param[in] Option         The optional information.
3528 **/
3529 VOID
DisplayMcErrorCorrectCapability(IN UINT8 Capability,IN UINT8 Option)3530 DisplayMcErrorCorrectCapability (
3531   IN UINT8 Capability,
3532   IN UINT8 Option
3533   )
3534 {
3535   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_CORRECT_CAPABILITY), gShellDebug1HiiHandle);
3536   PRINT_INFO_OPTION (Capability, Option);
3537   PRINT_BITS_INFO (McErrorCorrectCapabilityTable, Capability);
3538 }
3539 
3540 /**
3541   Display Memory Controller Information (Type 5) Support.
3542 
3543   @param[in] Support        The key of the structure.
3544   @param[in] Option         The optional information.
3545 **/
3546 VOID
DisplayMcInterleaveSupport(IN UINT8 Support,IN UINT8 Option)3547 DisplayMcInterleaveSupport (
3548   IN UINT8 Support,
3549   IN UINT8 Option
3550   )
3551 {
3552   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_INTERLEAVE_SUPPORT), gShellDebug1HiiHandle);
3553   PRINT_INFO_OPTION (Support, Option);
3554   PRINT_TABLE_ITEM (McInterleaveSupportTable, Support);
3555 }
3556 
3557 /**
3558   Display Memory Controller Information (Type 5) speeds.
3559 
3560   @param[in] Speed          The key of the structure.
3561   @param[in] Option         The optional information.
3562 **/
3563 VOID
DisplayMcMemorySpeeds(IN UINT16 Speed,IN UINT8 Option)3564 DisplayMcMemorySpeeds (
3565   IN UINT16  Speed,
3566   IN UINT8   Option
3567   )
3568 {
3569   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_MEMORY_SPEED), gShellDebug1HiiHandle);
3570   PRINT_INFO_OPTION (Speed, Option);
3571   PRINT_BITS_INFO (McMemorySpeedsTable, Speed);
3572 }
3573 
3574 /**
3575   Display Memory Controller Information (Type 5) voltage.
3576 
3577   @param[in] Voltage        The key of the structure.
3578   @param[in] Option         The optional information.
3579 **/
3580 VOID
DisplayMemoryModuleVoltage(IN UINT8 Voltage,IN UINT8 Option)3581 DisplayMemoryModuleVoltage (
3582   IN UINT8 Voltage,
3583   IN UINT8 Option
3584   )
3585 {
3586   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_REQUIRED_VOLTAGES), gShellDebug1HiiHandle);
3587   PRINT_INFO_OPTION (Voltage, Option);
3588   PRINT_BITS_INFO (MemoryModuleVoltageTable, Voltage);
3589 }
3590 
3591 /**
3592   Display Memory Module Information (Type 6) type.
3593 
3594   @param[in] Type           The key of the structure.
3595   @param[in] Option         The optional information.
3596 **/
3597 VOID
DisplayMmMemoryType(IN UINT16 Type,IN UINT8 Option)3598 DisplayMmMemoryType (
3599   IN UINT16  Type,
3600   IN UINT8   Option
3601   )
3602 {
3603   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_MODULE_TYPE), gShellDebug1HiiHandle);
3604   PRINT_INFO_OPTION (Type, Option);
3605   PRINT_BITS_INFO (MmMemoryTypeTable, Type);
3606 }
3607 
3608 /**
3609   Display Memory Module Information (Type 6) status.
3610 
3611   @param[in] Status         The key of the structure.
3612   @param[in] Option         The optional information.
3613 **/
3614 VOID
DisplayMmErrorStatus(IN UINT8 Status,IN UINT8 Option)3615 DisplayMmErrorStatus (
3616   IN UINT8 Status,
3617   IN UINT8 Option
3618   )
3619 {
3620   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_MODULE_ERROR_STATUS), gShellDebug1HiiHandle);
3621   PRINT_INFO_OPTION (Status, Option);
3622   PRINT_BITS_INFO (MmErrorStatusTable, Status);
3623 }
3624 
3625 /**
3626   Display Cache Information (Type 7) SRAM Type.
3627 
3628   @param[in] Type           The key of the structure.
3629   @param[in] Option         The optional information.
3630 **/
3631 VOID
DisplayCacheSRAMType(IN UINT16 Type,IN UINT8 Option)3632 DisplayCacheSRAMType (
3633   IN UINT16  Type,
3634   IN UINT8   Option
3635   )
3636 {
3637   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CACHE_SRAM_TYPE), gShellDebug1HiiHandle);
3638   PRINT_INFO_OPTION ((UINT8) Type, Option);
3639   PRINT_BITS_INFO (CacheSRAMTypeTable, (UINT8) Type);
3640 }
3641 
3642 /**
3643   Display Cache Information (Type 7) correcting Type.
3644 
3645   @param[in] Type           The key of the structure.
3646   @param[in] Option         The optional information.
3647 **/
3648 VOID
DisplayCacheErrCorrectingType(IN UINT8 Type,IN UINT8 Option)3649 DisplayCacheErrCorrectingType (
3650   IN UINT8 Type,
3651   IN UINT8 Option
3652   )
3653 {
3654   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CACHE_ERROR_CORRECTING), gShellDebug1HiiHandle);
3655   PRINT_INFO_OPTION (Type, Option);
3656   PRINT_TABLE_ITEM (CacheErrCorrectingTypeTable, Type);
3657 }
3658 
3659 /**
3660   Display Cache Information (Type 7) Type.
3661 
3662   @param[in] Type           The key of the structure.
3663   @param[in] Option         The optional information.
3664 **/
3665 VOID
DisplayCacheSystemCacheType(IN UINT8 Type,IN UINT8 Option)3666 DisplayCacheSystemCacheType (
3667   IN UINT8 Type,
3668   IN UINT8 Option
3669   )
3670 {
3671   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CACHE_SYSTEM_TYPE), gShellDebug1HiiHandle);
3672   PRINT_INFO_OPTION (Type, Option);
3673   PRINT_TABLE_ITEM (CacheSystemCacheTypeTable, Type);
3674 }
3675 
3676 /**
3677   Display Cache Information (Type 7) Associativity.
3678 
3679   @param[in] Associativity  The key of the structure.
3680   @param[in] Option         The optional information.
3681 **/
3682 VOID
DisplayCacheAssociativity(IN UINT8 Associativity,IN UINT8 Option)3683 DisplayCacheAssociativity (
3684   IN UINT8 Associativity,
3685   IN UINT8 Option
3686   )
3687 {
3688   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_CACHE_ASSOCIATIVITY), gShellDebug1HiiHandle);
3689   PRINT_INFO_OPTION (Associativity, Option);
3690   PRINT_TABLE_ITEM (CacheAssociativityTable, Associativity);
3691 }
3692 
3693 /**
3694   Display Port Connector Information  (Type 8) type.
3695 
3696   @param[in] Type       The key of the structure.
3697   @param[in] Option     The optional information.
3698 **/
3699 VOID
DisplayPortConnectorType(IN UINT8 Type,IN UINT8 Option)3700 DisplayPortConnectorType (
3701   IN UINT8 Type,
3702   IN UINT8 Option
3703   )
3704 {
3705   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PORT_CONNECTOR_TYPE), gShellDebug1HiiHandle);
3706   PRINT_INFO_OPTION (Type, Option);
3707   PRINT_TABLE_ITEM (PortConnectorTypeTable, Type);
3708 }
3709 
3710 /**
3711   Display Port Connector Information  (Type 8) port type.
3712 
3713   @param[in] Type       The key of the structure.
3714   @param[in] Option     The optional information.
3715 **/
3716 VOID
DisplayPortType(IN UINT8 Type,IN UINT8 Option)3717 DisplayPortType (
3718   IN UINT8 Type,
3719   IN UINT8 Option
3720   )
3721 {
3722   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PORT_TYPE), gShellDebug1HiiHandle);
3723   PRINT_INFO_OPTION (Type, Option);
3724   PRINT_TABLE_ITEM (PortTypeTable, Type);
3725 }
3726 
3727 /**
3728   Display System Slots (Type 9) slot type.
3729 
3730   @param[in] Type       The key of the structure.
3731   @param[in] Option     The optional information.
3732 **/
3733 VOID
DisplaySystemSlotType(IN UINT8 Type,IN UINT8 Option)3734 DisplaySystemSlotType (
3735   IN UINT8 Type,
3736   IN UINT8 Option
3737   )
3738 {
3739   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_TYPE), gShellDebug1HiiHandle);
3740   PRINT_INFO_OPTION (Type, Option);
3741   PRINT_TABLE_ITEM (SystemSlotTypeTable, Type);
3742 }
3743 
3744 /**
3745   Display System Slots (Type 9) data bus width.
3746 
3747   @param[in] Width      The key of the structure.
3748   @param[in] Option     The optional information.
3749 **/
3750 VOID
DisplaySystemSlotDataBusWidth(IN UINT8 Width,IN UINT8 Option)3751 DisplaySystemSlotDataBusWidth (
3752   IN UINT8 Width,
3753   IN UINT8 Option
3754   )
3755 {
3756   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_DATA), gShellDebug1HiiHandle);
3757   PRINT_INFO_OPTION (Width, Option);
3758   PRINT_TABLE_ITEM (SystemSlotDataBusWidthTable, Width);
3759 }
3760 
3761 /**
3762   Display System Slots (Type 9) usage information.
3763 
3764   @param[in] Usage      The key of the structure.
3765   @param[in] Option     The optional information.
3766 **/
3767 VOID
DisplaySystemSlotCurrentUsage(IN UINT8 Usage,IN UINT8 Option)3768 DisplaySystemSlotCurrentUsage (
3769   IN UINT8 Usage,
3770   IN UINT8 Option
3771   )
3772 {
3773   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_CURRENT_USAGE), gShellDebug1HiiHandle);
3774   PRINT_INFO_OPTION (Usage, Option);
3775   PRINT_TABLE_ITEM (SystemSlotCurrentUsageTable, Usage);
3776 }
3777 
3778 /**
3779   Display System Slots (Type 9) slot length.
3780 
3781   @param[in] Length     The key of the structure.
3782   @param[in] Option     The optional information.
3783 **/
3784 VOID
DisplaySystemSlotLength(IN UINT8 Length,IN UINT8 Option)3785 DisplaySystemSlotLength (
3786   IN UINT8 Length,
3787   IN UINT8 Option
3788   )
3789 {
3790   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_SLOT_LENGTH), gShellDebug1HiiHandle);
3791   PRINT_INFO_OPTION (Length, Option);
3792   PRINT_TABLE_ITEM (SystemSlotLengthTable, Length);
3793 }
3794 
3795 /**
3796   Display System Slots (Type 9) characteristics.
3797 
3798   @param[in] Chara1     The key of the structure.
3799   @param[in] Option     The optional information.
3800 **/
3801 VOID
DisplaySlotCharacteristics1(IN UINT8 Chara1,IN UINT8 Option)3802 DisplaySlotCharacteristics1 (
3803   IN UINT8 Chara1,
3804   IN UINT8 Option
3805   )
3806 {
3807   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SLOT_CHARACTERISTICS), gShellDebug1HiiHandle);
3808   PRINT_INFO_OPTION (Chara1, Option);
3809   PRINT_BITS_INFO (SlotCharacteristics1Table, Chara1);
3810 }
3811 
3812 /**
3813   Display System Slots (Type 9) characteristics.
3814 
3815   @param[in] Chara2     The key of the structure.
3816   @param[in] Option     The optional information.
3817 **/
3818 VOID
DisplaySlotCharacteristics2(IN UINT8 Chara2,IN UINT8 Option)3819 DisplaySlotCharacteristics2 (
3820   IN UINT8 Chara2,
3821   IN UINT8 Option
3822   )
3823 {
3824   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SLOT_CHARACTERISTICS_2), gShellDebug1HiiHandle);
3825   PRINT_INFO_OPTION (Chara2, Option);
3826   PRINT_BITS_INFO (SlotCharacteristics2Table, Chara2);
3827 }
3828 
3829 /**
3830   Display On Board Devices Information (Type 10) types.
3831 
3832   @param[in] Type       The key of the structure.
3833   @param[in] Option     The optional information.
3834 **/
3835 VOID
DisplayOnboardDeviceTypes(IN UINT8 Type,IN UINT8 Option)3836 DisplayOnboardDeviceTypes (
3837   IN UINT8 Type,
3838   IN UINT8 Option
3839   )
3840 {
3841   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_ONBOARD_DEVICE_TYPE), gShellDebug1HiiHandle);
3842   PRINT_INFO_OPTION (Type, Option);
3843   PRINT_TABLE_ITEM (OnboardDeviceTypesTable, Type);
3844 }
3845 
3846 /**
3847   Display System Event Log (Type 15) types.
3848 
3849   @param[in] Type       The key of the structure.
3850   @param[in] Option     The optional information.
3851 **/
3852 VOID
DisplaySELTypes(IN UINT8 Type,IN UINT8 Option)3853 DisplaySELTypes (
3854   IN UINT8 Type,
3855   IN UINT8 Option
3856   )
3857 {
3858   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_EVENT_LOG_TYPE), gShellDebug1HiiHandle);
3859   PRINT_INFO_OPTION (Type, Option);
3860   PRINT_TABLE_ITEM (SELTypesTable, Type);
3861 }
3862 
3863 /**
3864   Display System Event Log (Type 15) format type.
3865 
3866   @param[in] Type       The key of the structure.
3867   @param[in] Option     The optional information.
3868 **/
3869 VOID
DisplaySELVarDataFormatType(IN UINT8 Type,IN UINT8 Option)3870 DisplaySELVarDataFormatType (
3871   IN UINT8 Type,
3872   IN UINT8 Option
3873   )
3874 {
3875   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_EVENT_LOG_VAR_DATA_FORMAT), gShellDebug1HiiHandle);
3876   PRINT_INFO_OPTION (Type, Option);
3877   PRINT_TABLE_ITEM (SELVarDataFormatTypeTable, Type);
3878 }
3879 
3880 /**
3881   Display System Event Log (Type 15) dw1.
3882 
3883   @param[in] Key        The key of the structure.
3884   @param[in] Option     The optional information.
3885 **/
3886 VOID
DisplayPostResultsBitmapDw1(IN UINT32 Key,IN UINT8 Option)3887 DisplayPostResultsBitmapDw1 (
3888   IN UINT32  Key,
3889   IN UINT8   Option
3890   )
3891 {
3892   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_POST_RESULTS_BITMAP), gShellDebug1HiiHandle);
3893   PRINT_INFO_OPTION (Key, Option);
3894   PRINT_BITS_INFO (PostResultsBitmapDw1Table, Key);
3895 }
3896 
3897 /**
3898   Display System Event Log (Type 15) dw2.
3899 
3900   @param[in] Key        The key of the structure.
3901   @param[in] Option     The optional information.
3902 **/
3903 VOID
DisplayPostResultsBitmapDw2(IN UINT32 Key,IN UINT8 Option)3904 DisplayPostResultsBitmapDw2 (
3905   IN UINT32  Key,
3906   IN UINT8   Option
3907   )
3908 {
3909   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_POST_RESULTS_SECOND_DWORD), gShellDebug1HiiHandle);
3910   PRINT_INFO_OPTION (Key, Option);
3911   PRINT_BITS_INFO (PostResultsBitmapDw2Table, Key);
3912 }
3913 
3914 /**
3915   Display System Event Log (Type 15) type.
3916 
3917   @param[in] SMType     The key of the structure.
3918   @param[in] Option     The optional information.
3919 **/
3920 VOID
DisplaySELSysManagementTypes(IN UINT32 SMType,IN UINT8 Option)3921 DisplaySELSysManagementTypes (
3922   IN UINT32  SMType,
3923   IN UINT8   Option
3924   )
3925 {
3926   UINT8       Temp;
3927 
3928   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_MANAGEMENT_TYPES), gShellDebug1HiiHandle);
3929   PRINT_INFO_OPTION (SMType, Option);
3930 
3931   //
3932   // Deal with wide range Value
3933   //
3934   if (SMType >= 0x80000000) {
3935     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_OEM_ASSIGNED), gShellDebug1HiiHandle);
3936   } else if (SMType >= 0x00020000) {
3937     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_RSVD_FOR_FUTURE_ASSIGN), gShellDebug1HiiHandle);
3938   } else if (SMType >= 0x00010000) {
3939     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_SYSTEM_MANAGEMENT_PROBE), gShellDebug1HiiHandle);
3940   } else if (SMType >= 0x31) {
3941     ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_RSVD_FOR_FUTURE_ASSIGN), gShellDebug1HiiHandle);
3942   } else {
3943     //
3944     // Deal with One byte data
3945     //
3946     Temp = (UINT8) (SMType & 0x3F);
3947     PRINT_TABLE_ITEM (SELSysManagementTypesTable, Temp);
3948   }
3949 }
3950 
3951 /**
3952   Display Physical Memory Array (Type 16) Location.
3953 
3954   @param[in] Location   The key of the structure.
3955   @param[in] Option     The optional information.
3956 **/
3957 VOID
DisplayPMALocation(IN UINT8 Location,IN UINT8 Option)3958 DisplayPMALocation (
3959   IN UINT8 Location,
3960   IN UINT8 Option
3961   )
3962 {
3963   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_LOCATION), gShellDebug1HiiHandle);
3964   PRINT_INFO_OPTION (Location, Option);
3965   PRINT_TABLE_ITEM (PMALocationTable, Location);
3966 }
3967 
3968 /**
3969   Display Physical Memory Array (Type 16) Use.
3970 
3971   @param[in] Use        The key of the structure.
3972   @param[in] Option     The optional information.
3973 **/
3974 VOID
DisplayPMAUse(IN UINT8 Use,IN UINT8 Option)3975 DisplayPMAUse (
3976   IN UINT8 Use,
3977   IN UINT8 Option
3978   )
3979 {
3980   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_USE), gShellDebug1HiiHandle);
3981   PRINT_INFO_OPTION (Use, Option);
3982   PRINT_TABLE_ITEM (PMAUseTable, Use);
3983 }
3984 
3985 /**
3986   Display Physical Memory Array (Type 16) Types.
3987 
3988   @param[in] Type       The key of the structure.
3989   @param[in] Option     The optional information.
3990 **/
3991 VOID
DisplayPMAErrorCorrectionTypes(IN UINT8 Type,IN UINT8 Option)3992 DisplayPMAErrorCorrectionTypes (
3993   IN UINT8 Type,
3994   IN UINT8 Option
3995   )
3996 {
3997   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PHYS_MEM_ARRAY_ERROR), gShellDebug1HiiHandle);
3998   PRINT_INFO_OPTION (Type, Option);
3999   PRINT_TABLE_ITEM (PMAErrorCorrectionTypesTable, Type);
4000 }
4001 
4002 /**
4003   Display Memory Device (Type 17) form factor.
4004 
4005   @param[in] FormFactor The key of the structure.
4006   @param[in] Option     The optional information.
4007 **/
4008 VOID
DisplayMemoryDeviceFormFactor(IN UINT8 FormFactor,IN UINT8 Option)4009 DisplayMemoryDeviceFormFactor (
4010   IN UINT8 FormFactor,
4011   IN UINT8 Option
4012   )
4013 {
4014   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_FORM_FACTOR), gShellDebug1HiiHandle);
4015   PRINT_INFO_OPTION (FormFactor, Option);
4016   PRINT_TABLE_ITEM (MemoryDeviceFormFactorTable, FormFactor);
4017 }
4018 
4019 /**
4020   Display Memory Device (Type 17) type.
4021 
4022   @param[in] Type     The key of the structure.
4023   @param[in] Option   The optional information.
4024 **/
4025 VOID
DisplayMemoryDeviceType(IN UINT8 Type,IN UINT8 Option)4026 DisplayMemoryDeviceType (
4027   IN UINT8 Type,
4028   IN UINT8 Option
4029   )
4030 {
4031   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE), gShellDebug1HiiHandle);
4032   PRINT_INFO_OPTION (Type, Option);
4033   PRINT_TABLE_ITEM (MemoryDeviceTypeTable, Type);
4034 }
4035 
4036 /**
4037   Display Memory Device (Type 17) details.
4038 
4039   @param[in] Para     The key of the structure.
4040   @param[in] Option   The optional information.
4041 **/
4042 VOID
DisplayMemoryDeviceTypeDetail(IN UINT16 Para,IN UINT8 Option)4043 DisplayMemoryDeviceTypeDetail (
4044   IN UINT16  Para,
4045   IN UINT8   Option
4046   )
4047 {
4048   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_DEVICE_TYPE_DETAIL), gShellDebug1HiiHandle);
4049   PRINT_INFO_OPTION (Para, Option);
4050   PRINT_BITS_INFO (MemoryDeviceTypeDetailTable, Para);
4051 }
4052 
4053 /**
4054   Display 32-bit Memory Error Information (Type 18) type.
4055 
4056   @param[in] ErrorType  The key of the structure.
4057   @param[in] Option     The optional information.
4058 **/
4059 VOID
DisplayMemoryErrorType(IN UINT8 ErrorType,IN UINT8 Option)4060 DisplayMemoryErrorType (
4061   IN UINT8 ErrorType,
4062   IN UINT8 Option
4063   )
4064 {
4065   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_INFO), gShellDebug1HiiHandle);
4066   PRINT_INFO_OPTION (ErrorType, Option);
4067   PRINT_TABLE_ITEM (MemoryErrorTypeTable, ErrorType);
4068 }
4069 
4070 /**
4071   Display 32-bit Memory Error Information (Type 18) error granularity.
4072 
4073   @param[in] Granularity  The key of the structure.
4074   @param[in] Option       The optional information.
4075 **/
4076 VOID
DisplayMemoryErrorGranularity(IN UINT8 Granularity,IN UINT8 Option)4077 DisplayMemoryErrorGranularity (
4078   IN UINT8 Granularity,
4079   IN UINT8 Option
4080   )
4081 {
4082   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_GRANULARITY), gShellDebug1HiiHandle);
4083   PRINT_INFO_OPTION (Granularity, Option);
4084   PRINT_TABLE_ITEM (MemoryErrorGranularityTable, Granularity);
4085 }
4086 
4087 /**
4088   Display 32-bit Memory Error Information (Type 18) error information.
4089 
4090   @param[in] Operation  The key of the structure.
4091   @param[in] Option     The optional information.
4092 **/
4093 VOID
DisplayMemoryErrorOperation(IN UINT8 Operation,IN UINT8 Option)4094 DisplayMemoryErrorOperation (
4095   IN UINT8 Operation,
4096   IN UINT8 Option
4097   )
4098 {
4099   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_ERROR_OP), gShellDebug1HiiHandle);
4100   PRINT_INFO_OPTION (Operation, Option);
4101   PRINT_TABLE_ITEM (MemoryErrorOperationTable, Operation);
4102 }
4103 
4104 /**
4105   Display Built-in Pointing Device (Type 21) type information.
4106 
4107   @param[in] Type     The key of the structure.
4108   @param[in] Option   The optional information.
4109 **/
4110 VOID
DisplayPointingDeviceType(IN UINT8 Type,IN UINT8 Option)4111 DisplayPointingDeviceType (
4112   IN UINT8 Type,
4113   IN UINT8 Option
4114   )
4115 {
4116   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_POINTING_DEVICE_TYPE), gShellDebug1HiiHandle);
4117   PRINT_INFO_OPTION (Type, Option);
4118   PRINT_TABLE_ITEM (PointingDeviceTypeTable, Type);
4119 }
4120 
4121 /**
4122   Display Built-in Pointing Device (Type 21) information.
4123 
4124   @param[in] Interface  The key of the structure.
4125   @param[in] Option     The optional information.
4126 **/
4127 VOID
DisplayPointingDeviceInterface(IN UINT8 Interface,IN UINT8 Option)4128 DisplayPointingDeviceInterface (
4129   IN UINT8   Interface,
4130   IN UINT8   Option
4131   )
4132 {
4133   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_POINTING_DEVICE_INTERFACE), gShellDebug1HiiHandle);
4134   PRINT_INFO_OPTION (Interface, Option);
4135   PRINT_TABLE_ITEM (PointingDeviceInterfaceTable, Interface);
4136 }
4137 
4138 /**
4139   Display Portable Battery  (Type 22) information.
4140 
4141   @param[in] Key      The key of the structure.
4142   @param[in] Option   The optional information.
4143 **/
4144 VOID
DisplayPBDeviceChemistry(IN UINT8 Key,IN UINT8 Option)4145 DisplayPBDeviceChemistry (
4146   IN UINT8 Key,
4147   IN UINT8 Option
4148   )
4149 {
4150   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_PORTABLE_BATT_DEV_CHEM), gShellDebug1HiiHandle);
4151   PRINT_INFO_OPTION (Key, Option);
4152   PRINT_TABLE_ITEM (PBDeviceChemistryTable, Key);
4153 }
4154 
4155 /**
4156   Display Voltage Probe (Type 26) location information.
4157 
4158   @param[in] Key      The key of the structure.
4159   @param[in] Option   The optional information.
4160 **/
4161 VOID
DisplayVPLocation(IN UINT8 Key,IN UINT8 Option)4162 DisplayVPLocation (
4163   IN UINT8 Key,
4164   IN UINT8 Option
4165   )
4166 {
4167   UINT8       Loc;
4168 
4169   Loc = (UINT8) ((Key & 0xE0) >> 5);
4170   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_VOLTAGE_PROBE_LOC), gShellDebug1HiiHandle);
4171   PRINT_INFO_OPTION (Loc, Option);
4172   PRINT_TABLE_ITEM (VPLocationTable, Loc);
4173 }
4174 
4175 /**
4176   Display Voltage Probe (Type 26) status ype information.
4177 
4178   @param[in] Key      The key of the structure.
4179   @param[in] Option   The optional information.
4180 **/
4181 VOID
DisplayVPStatus(IN UINT8 Key,IN UINT8 Option)4182 DisplayVPStatus (
4183   IN UINT8 Key,
4184   IN UINT8 Option
4185   )
4186 {
4187   UINT8       Status;
4188 
4189   Status = (UINT8) (Key & 0x1F);
4190   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_VOLTAGE_PROBE_STATUS), gShellDebug1HiiHandle);
4191   PRINT_INFO_OPTION (Status, Option);
4192   PRINT_TABLE_ITEM (VPStatusTable, Status);
4193 }
4194 
4195 /**
4196   Display Cooling (Type 27) status information.
4197 
4198   @param[in] Key      The key of the structure.
4199   @param[in] Option   The optional information.
4200 **/
4201 VOID
DisplayCoolingDeviceStatus(IN UINT8 Key,IN UINT8 Option)4202 DisplayCoolingDeviceStatus (
4203   IN UINT8 Key,
4204   IN UINT8 Option
4205   )
4206 {
4207   UINT8       Status;
4208 
4209   Status = (UINT8) ((Key & 0xE0) >> 5);
4210   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_COOLING_DEV_STATUS), gShellDebug1HiiHandle);
4211   PRINT_INFO_OPTION (Status, Option);
4212   PRINT_TABLE_ITEM (CoolingDeviceStatusTable, Status);
4213 }
4214 
4215 /**
4216   Display Cooling (Type 27) type information.
4217 
4218   @param[in] Key      The key of the structure.
4219   @param[in] Option   The optional information.
4220 **/
4221 VOID
DisplayCoolingDeviceType(IN UINT8 Key,IN UINT8 Option)4222 DisplayCoolingDeviceType (
4223   IN UINT8 Key,
4224   IN UINT8 Option
4225   )
4226 {
4227   UINT8       Type;
4228 
4229   Type = (UINT8) (Key & 0x1F);
4230   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_COOLING_DEV_TYPE), gShellDebug1HiiHandle);
4231   PRINT_INFO_OPTION (Type, Option);
4232   PRINT_TABLE_ITEM (CoolingDeviceTypeTable, Type);
4233 }
4234 
4235 /**
4236   Display Temperature Probe (Type 28) status information.
4237 
4238   @param[in] Key      The key of the structure.
4239   @param[in] Option   The optional information.
4240 **/
4241 VOID
DisplayTemperatureProbeStatus(IN UINT8 Key,IN UINT8 Option)4242 DisplayTemperatureProbeStatus (
4243   IN UINT8 Key,
4244   IN UINT8 Option
4245   )
4246 {
4247   UINT8       Status;
4248 
4249   Status = (UINT8) ((Key & 0xE0) >> 5);
4250   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_TEMP_PROBE), gShellDebug1HiiHandle);
4251   PRINT_INFO_OPTION (Status, Option);
4252   PRINT_TABLE_ITEM (TemperatureProbeStatusTable, Status);
4253 }
4254 
4255 /**
4256   Display Temperature Probe  (Type 28) location information.
4257 
4258   @param[in] Key      The key of the structure.
4259   @param[in] Option   The optional information.
4260 **/
4261 VOID
DisplayTemperatureProbeLoc(IN UINT8 Key,IN UINT8 Option)4262 DisplayTemperatureProbeLoc (
4263   IN UINT8 Key,
4264   IN UINT8 Option
4265   )
4266 {
4267   UINT8       Loc;
4268 
4269   Loc = (UINT8) (Key & 0x1F);
4270   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_VOLTAGE_PROBE_LOC), gShellDebug1HiiHandle);
4271   PRINT_INFO_OPTION (Loc, Option);
4272   PRINT_TABLE_ITEM (TemperatureProbeLocTable, Loc);
4273 }
4274 
4275 /**
4276   Display Electrical Current Probe (Type 29)  status information.
4277 
4278   @param[in] Key      The key of the structure.
4279   @param[in] Option   The optional information.
4280 **/
4281 VOID
DisplayECPStatus(IN UINT8 Key,IN UINT8 Option)4282 DisplayECPStatus (
4283   IN UINT8 Key,
4284   IN UINT8 Option
4285   )
4286 {
4287   UINT8       Status;
4288 
4289   Status = (UINT8) ((Key & 0xE0) >> 5);
4290   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_ELEC_PROBE_STATUS), gShellDebug1HiiHandle);
4291   PRINT_INFO_OPTION (Status, Option);
4292   PRINT_TABLE_ITEM (ECPStatusTable, Status);
4293 }
4294 
4295 /**
4296   Display Type 29 information.
4297 
4298   @param[in] Key      The key of the structure.
4299   @param[in] Option   The optional information.
4300 **/
4301 VOID
DisplayECPLoc(IN UINT8 Key,IN UINT8 Option)4302 DisplayECPLoc (
4303   IN UINT8 Key,
4304   IN UINT8 Option
4305   )
4306 {
4307   UINT8       Loc;
4308 
4309   Loc = (UINT8) (Key & 0x1F);
4310   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_ELEC_PROBE_LOC), gShellDebug1HiiHandle);
4311   PRINT_INFO_OPTION (Loc, Option);
4312   PRINT_TABLE_ITEM (ECPLocTable, Loc);
4313 }
4314 
4315 /**
4316   Display Management Device (Type 34) Type.
4317 
4318   @param[in] Key      The key of the structure.
4319   @param[in] Option   The optional information.
4320 **/
4321 VOID
DisplayMDType(IN UINT8 Key,IN UINT8 Option)4322 DisplayMDType (
4323   IN UINT8 Key,
4324   IN UINT8 Option
4325   )
4326 {
4327   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MANAGEMENT_DEV_TYPE), gShellDebug1HiiHandle);
4328   PRINT_INFO_OPTION (Key, Option);
4329   PRINT_TABLE_ITEM (MDTypeTable, Key);
4330 }
4331 
4332 /**
4333   Display Management Device (Type 34) Address Type.
4334 
4335   @param[in] Key      The key of the structure.
4336   @param[in] Option   The optional information.
4337 **/
4338 VOID
DisplayMDAddressType(IN UINT8 Key,IN UINT8 Option)4339 DisplayMDAddressType (
4340   IN UINT8 Key,
4341   IN UINT8 Option
4342   )
4343 {
4344   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MANAGEMENT_DEV_ADDR_TYPE), gShellDebug1HiiHandle);
4345   PRINT_INFO_OPTION (Key, Option);
4346   PRINT_TABLE_ITEM (MDAddressTypeTable, Key);
4347 }
4348 
4349 /**
4350   Display Memory Channel (Type 37) information.
4351 
4352   @param[in] Key      The key of the structure.
4353   @param[in] Option   The optional information.
4354 **/
4355 VOID
DisplayMemoryChannelType(IN UINT8 Key,IN UINT8 Option)4356 DisplayMemoryChannelType (
4357   IN UINT8 Key,
4358   IN UINT8 Option
4359   )
4360 {
4361   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_MEM_CHANNEL_TYPE), gShellDebug1HiiHandle);
4362   PRINT_INFO_OPTION (Key, Option);
4363   PRINT_TABLE_ITEM (MemoryChannelTypeTable, Key);
4364 }
4365 
4366 /**
4367   Display IPMI Device Information (Type 38) information.
4368 
4369   @param[in] Key      The key of the structure.
4370   @param[in] Option   The optional information.
4371 **/
4372 VOID
DisplayIPMIDIBMCInterfaceType(IN UINT8 Key,IN UINT8 Option)4373 DisplayIPMIDIBMCInterfaceType (
4374   IN UINT8 Key,
4375   IN UINT8 Option
4376   )
4377 {
4378   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_BMC_INTERFACE_TYPE), gShellDebug1HiiHandle);
4379   PRINT_INFO_OPTION (Key, Option);
4380   PRINT_TABLE_ITEM (IPMIDIBMCInterfaceTypeTable, Key);
4381 }
4382 
4383 /**
4384   Display the structure type information.
4385 
4386   @param[in] Key      The key of the structure.
4387   @param[in] Option   The optional information.
4388 **/
4389 VOID
DisplayStructureTypeInfo(IN UINT8 Key,IN UINT8 Option)4390 DisplayStructureTypeInfo (
4391   IN UINT8 Key,
4392   IN UINT8 Option
4393   )
4394 {
4395   //
4396   // display
4397   //
4398   ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_QUERYTABLE_STRUCT_TYPE), gShellDebug1HiiHandle);
4399   PRINT_INFO_OPTION (Key, Option);
4400   PRINT_TABLE_ITEM (StructureTypeInfoTable, Key);
4401 }
4402