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