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