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