Home | History | Annotate | Download | only in PlatformSmbiosDxe
      1 /** @file
      2   Static SMBIOS Table for platform
      3 
      4   Note SMBIOS 2.7.1 Required structures:
      5     BIOS Information (Type 0)
      6     System Information (Type 1)
      7     System Enclosure (Type 3)
      8     Processor Information (Type 4) - CPU Driver
      9     Cache Information (Type 7) - For cache that is external to processor
     10     System Slots (Type 9) - If system has slots
     11     Physical Memory Array (Type 16)
     12     Memory Device (Type 17) - For each socketed system-memory Device
     13     Memory Array Mapped Address (Type 19) - One per contiguous block per Physical Memroy Array
     14     System Boot Information (Type 32)
     15 
     16   Copyright (c) 2012, Apple Inc. All rights reserved.<BR>
     17   This program and the accompanying materials
     18   are licensed and made available under the terms and conditions of the BSD License
     19   which accompanies this distribution.  The full text of the license may be found at
     20   http://opensource.org/licenses/bsd-license.php
     21 
     22   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     23   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     24 
     25 **/
     26 
     27 #include <PiDxe.h>
     28 #include <IndustryStandard/SmBios.h>
     29 #include <Protocol/Smbios.h>
     30 #include <Library/SmbiosLib.h>
     31 
     32 
     33 SMBIOS_TABLE_TYPE0 gSmbiosType0Template = {
     34   { EFI_SMBIOS_TYPE_BIOS_INFORMATION, sizeof (SMBIOS_TABLE_TYPE0), 0 },
     35   1,                    // Vendor String
     36   2,                    // BiosVersion String
     37   0xE000,               // BiosSegment
     38   3,                    // BiosReleaseDate String
     39   0x7F,                 // BiosSize
     40   {                     // BiosCharacteristics
     41     0,    //  Reserved                          :2;  ///< Bits 0-1.
     42     0,    //  Unknown                           :1;
     43     0,    //  BiosCharacteristicsNotSupported   :1;
     44     0,    //  IsaIsSupported                    :1;
     45     0,    //  McaIsSupported                    :1;
     46     0,    //  EisaIsSupported                   :1;
     47     1,    //  PciIsSupported                    :1;
     48     0,    //  PcmciaIsSupported                 :1;
     49     0,    //  PlugAndPlayIsSupported            :1;
     50     0,    //  ApmIsSupported                    :1;
     51     1,    //  BiosIsUpgradable                  :1;
     52     1,    //  BiosShadowingAllowed              :1;
     53     0,    //  VlVesaIsSupported                 :1;
     54     0,    //  EscdSupportIsAvailable            :1;
     55     0,    //  BootFromCdIsSupported             :1;
     56     1,    //  SelectableBootIsSupported         :1;
     57     0,    //  RomBiosIsSocketed                 :1;
     58     0,    //  BootFromPcmciaIsSupported         :1;
     59     0,    //  EDDSpecificationIsSupported       :1;
     60     0,    //  JapaneseNecFloppyIsSupported      :1;
     61     0,    //  JapaneseToshibaFloppyIsSupported  :1;
     62     0,    //  Floppy525_360IsSupported          :1;
     63     0,    //  Floppy525_12IsSupported           :1;
     64     0,    //  Floppy35_720IsSupported           :1;
     65     0,    //  Floppy35_288IsSupported           :1;
     66     0,    //  PrintScreenIsSupported            :1;
     67     0,    //  Keyboard8042IsSupported           :1;
     68     0,    //  SerialIsSupported                 :1;
     69     0,    //  PrinterIsSupported                :1;
     70     0,    //  CgaMonoIsSupported                :1;
     71     0,    //  NecPc98                           :1;
     72     0     //  ReservedForVendor                 :32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor
     73                                                  ///< and bits 48-63 reserved for System Vendor.
     74   },
     75   {       // BIOSCharacteristicsExtensionBytes[]
     76     0x81, //  AcpiIsSupported                   :1;
     77           //  UsbLegacyIsSupported              :1;
     78           //  AgpIsSupported                    :1;
     79           //  I2OBootIsSupported                :1;
     80           //  Ls120BootIsSupported              :1;
     81           //  AtapiZipDriveBootIsSupported      :1;
     82           //  Boot1394IsSupported               :1;
     83           //  SmartBatteryIsSupported           :1;
     84                   //  BIOSCharacteristicsExtensionBytes[1]
     85     0x0a, //  BiosBootSpecIsSupported              :1;
     86           //  FunctionKeyNetworkBootIsSupported    :1;
     87           //  TargetContentDistributionEnabled     :1;
     88           //  UefiSpecificationSupported           :1;
     89           //  VirtualMachineSupported              :1;
     90           //  ExtensionByte2Reserved               :3;
     91   },
     92   0x00,                    // SystemBiosMajorRelease
     93   0x01,                    // SystemBiosMinorRelease
     94   0xFF,                    // EmbeddedControllerFirmwareMajorRelease
     95   0xFF,                    // EmbeddedControllerFirmwareMinorRelease
     96 };
     97 CHAR8 *gSmbiosType0Strings[] = {
     98   "http://www.tianocore.org/edk2/",     // Vendor String
     99   __TIME__,                   // BiosVersion String
    100   __DATE__,                   // BiosReleaseDate String
    101   NULL
    102 };
    103 
    104 SMBIOS_TABLE_TYPE1 gSmbiosType1Template = {
    105   { EFI_SMBIOS_TYPE_SYSTEM_INFORMATION, sizeof (SMBIOS_TABLE_TYPE1), 0 },
    106   1,    // Manufacturer String
    107   2,    // ProductName String
    108   3,    // Version String
    109   4,    // SerialNumber String
    110   { 0x25EF0280, 0xEC82, 0x42B0, { 0x8F, 0xB6, 0x10, 0xAD, 0xCC, 0xC6, 0x7C, 0x02 } },
    111   SystemWakeupTypePowerSwitch,
    112   5,    // SKUNumber String
    113   6,    // Family String
    114 };
    115 CHAR8  *gSmbiosType1Strings[] = {
    116   "http://www.tianocore.org/edk2/",
    117   "EmulatorPkg",
    118   "1.0",
    119   "System Serial#",
    120   "System SKU#",
    121   "edk2",
    122   NULL
    123 };
    124 
    125 SMBIOS_TABLE_TYPE2  gSmbiosType2Template = {
    126   { EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION, sizeof (SMBIOS_TABLE_TYPE2), 0 },
    127   1,    // Manufacturer String
    128   2,    // ProductName String
    129   3,    // Version String
    130   4,    // SerialNumber String
    131   5,    // AssetTag String
    132   {     // FeatureFlag
    133     1,    //  Motherboard           :1;
    134     0,    //  RequiresDaughterCard  :1;
    135     0,    //  Removable             :1;
    136     0,    //  Replaceable           :1;
    137     0,    //  HotSwappable          :1;
    138     0,    //  Reserved              :3;
    139   },
    140   6,    // LocationInChassis String
    141   0,                        // ChassisHandle;
    142   BaseBoardTypeMotherBoard, // BoardType;
    143   0,                        // NumberOfContainedObjectHandles;
    144   { 0 }                     // ContainedObjectHandles[1];
    145 };
    146 CHAR8  *gSmbiosType2Strings[] = {
    147   "http://www.tianocore.org/edk2/",
    148   "EmulatorPkg",
    149   "1.0",
    150   "Base Board Serial#",
    151   "Base Board Asset Tag#",
    152   "Part Component",
    153   NULL
    154 };
    155 
    156 SMBIOS_TABLE_TYPE3  gSmbiosType3Template = {
    157   { EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, sizeof (SMBIOS_TABLE_TYPE3), 0 },
    158   1,                        // Manufacturer String
    159   MiscChassisTypeLapTop,    // Type;
    160   2,                        // Version String
    161   3,                        // SerialNumber String
    162   4,                        // AssetTag String
    163   ChassisStateSafe,         // BootupState;
    164   ChassisStateSafe,         // PowerSupplyState;
    165   ChassisStateSafe,         // ThermalState;
    166   ChassisSecurityStatusNone,// SecurityStatus;
    167   { 0, 0, 0, 0 },           // OemDefined[4];
    168   0,    // Height;
    169   0,    // NumberofPowerCords;
    170   0,    // ContainedElementCount;
    171   0,    // ContainedElementRecordLength;
    172   { { 0 } },    // ContainedElements[1];
    173 };
    174 CHAR8  *gSmbiosType3Strings[] = {
    175   "http://www.tianocore.org/edk2/",
    176   "EmulatorPkg",
    177   "Chassis Board Serial#",
    178   "Chassis Board Asset Tag#",
    179   NULL
    180 };
    181 
    182 SMBIOS_TABLE_TYPE8  gSmbiosType8Template1 = {
    183   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    184   0,                            // InternalReferenceDesignator String
    185   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    186   1,                            // ExternalReferenceDesignator String
    187   PortConnectorTypeNone,        // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    188   PortTypeOther,                // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    189 };
    190 CHAR8  *gSmbiosType8Strings1[] = {
    191   "Mini DisplayPort",
    192   NULL
    193 };
    194 
    195 SMBIOS_TABLE_TYPE8  gSmbiosType8Template2 = {
    196   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    197   0,                            // InternalReferenceDesignator String
    198   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    199   1,                            // ExternalReferenceDesignator String
    200   PortConnectorTypeNone,        // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    201   PortTypeFireWire,             // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    202 };
    203 CHAR8  *gSmbiosType8Strings2[] = {
    204   "FireWire 800",
    205   NULL
    206 };
    207 
    208 
    209 SMBIOS_TABLE_TYPE8  gSmbiosType8Template3 = {
    210   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    211   0,                            // InternalReferenceDesignator String
    212   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    213   1,                            // ExternalReferenceDesignator String
    214   PortConnectorTypeRJ45,        // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    215   PortTypeNetworkPort,          // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    216 };
    217 CHAR8  *gSmbiosType8Strings3[] = {
    218   "Ethernet",
    219   NULL
    220 };
    221 
    222 SMBIOS_TABLE_TYPE8  gSmbiosType8Template4 = {
    223   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    224   0,                            // InternalReferenceDesignator String
    225   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    226   1,                            // ExternalReferenceDesignator String
    227   PortConnectorTypeUsb,         // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    228   PortTypeUsb,                  // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    229 };
    230 CHAR8  *gSmbiosType8Strings4[] = {
    231   "USB0",
    232   NULL
    233 };
    234 
    235 SMBIOS_TABLE_TYPE8  gSmbiosType8Template5 = {
    236   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    237   0,                            // InternalReferenceDesignator String
    238   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    239   1,                            // ExternalReferenceDesignator String
    240   PortConnectorTypeUsb,         // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    241   PortTypeUsb,                  // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    242 };
    243 CHAR8  *gSmbiosType8Strings5[] = {
    244   "USB1",
    245   NULL
    246 };
    247 
    248 SMBIOS_TABLE_TYPE8  gSmbiosType8Template6 = {
    249   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    250   0,                            // InternalReferenceDesignator String
    251   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    252   1,                            // ExternalReferenceDesignator String
    253   PortConnectorTypeUsb,         // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    254   PortTypeUsb,                  // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    255 };
    256 CHAR8  *gSmbiosType8Strings6[] = {
    257   "USB2",
    258   NULL
    259 };
    260 
    261 SMBIOS_TABLE_TYPE8  gSmbiosType8Template7 = {
    262   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    263   0,                            // InternalReferenceDesignator String
    264   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    265   1,                            // ExternalReferenceDesignator String
    266   PortConnectorTypeUsb,         // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    267   PortTypeUsb,                  // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    268 };
    269 CHAR8  *gSmbiosType8Strings7[] = {
    270   "USB3",
    271   NULL
    272 };
    273 
    274 SMBIOS_TABLE_TYPE8  gSmbiosType8Template8 = {
    275   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    276   0,                            // InternalReferenceDesignator String
    277   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    278   1,                            // ExternalReferenceDesignator String
    279   PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    280   PortTypeAudioPort,                  // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    281 };
    282 CHAR8  *gSmbiosType8Strings8[] = {
    283   "Audio Line In",
    284   NULL
    285 };
    286 
    287 SMBIOS_TABLE_TYPE8  gSmbiosType8Template9 = {
    288   { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
    289   0,                            // InternalReferenceDesignator String
    290   PortConnectorTypeNone,        // InternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    291   1,                            // ExternalReferenceDesignator String
    292   PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType;          ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
    293   PortTypeAudioPort,                  // PortType;                       ///< The enumeration value from MISC_PORT_TYPE.
    294 };
    295 CHAR8  *gSmbiosType8Strings9[] = {
    296   "Audio Line Out",
    297   NULL
    298 };
    299 
    300 SMBIOS_TABLE_TYPE9  gSmbiosType9Template = {
    301   { EFI_SMBIOS_TYPE_SYSTEM_SLOTS, sizeof (SMBIOS_TABLE_TYPE9), 0 },
    302   1,    // SlotDesignation String
    303   SlotTypeOther,          // SlotType;                 ///< The enumeration value from MISC_SLOT_TYPE.
    304   SlotDataBusWidthOther,  // SlotDataBusWidth;         ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
    305   SlotUsageAvailable,    // CurrentUsage;             ///< The enumeration value from MISC_SLOT_USAGE.
    306   SlotLengthOther,    // SlotLength;               ///< The enumeration value from MISC_SLOT_LENGTH.
    307   0,    // SlotID;
    308   {    // SlotCharacteristics1;
    309     1,  // CharacteristicsUnknown  :1;
    310     0,  // Provides50Volts         :1;
    311     0,  // Provides33Volts         :1;
    312     0,  // SharedSlot              :1;
    313     0,  // PcCard16Supported       :1;
    314     0,  // CardBusSupported        :1;
    315     0,  // ZoomVideoSupported      :1;
    316     0,  // ModemRingResumeSupported:1;
    317   },
    318   {     // SlotCharacteristics2;
    319     0,  // PmeSignalSupported      :1;
    320     0,  // HotPlugDevicesSupported :1;
    321     0,  // SmbusSignalSupported    :1;
    322     0,  // Reserved                :5;  ///< Set to 0.
    323   },
    324   0,    // SegmentGroupNum;
    325   0,    // BusNum;
    326   0,    // DevFuncNum;
    327 };
    328 CHAR8  *gSmbiosType9Strings[] = {
    329   "SD Card",
    330   NULL
    331 };
    332 
    333 SMBIOS_TABLE_TYPE11 gSmbiosType11Template = {
    334   { EFI_SMBIOS_TYPE_OEM_STRINGS, sizeof (SMBIOS_TABLE_TYPE11), 0 },
    335   1 // StringCount
    336 };
    337 CHAR8 *gSmbiosType11Strings[] = {
    338   "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EmulatorPkg/",
    339   NULL
    340 };
    341 
    342 
    343 SMBIOS_TABLE_TYPE12 gSmbiosType12Template = {
    344   { EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 },
    345   1 // StringCount
    346 };
    347 CHAR8 *gSmbiosType12Strings[] = {
    348   "https://svn.code.sf.net/p/edk2/code/trunk/edk2/EmulatorPkg/EmulatorPkg.dsc",
    349   NULL
    350 };
    351 
    352 SMBIOS_TABLE_TYPE16 gSmbiosType16Template = {
    353   { EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY, sizeof (SMBIOS_TABLE_TYPE16), 0 },
    354   MemoryArrayLocationSystemBoard, // Location;                       ///< The enumeration value from MEMORY_ARRAY_LOCATION.
    355   MemoryArrayUseSystemMemory,     // Use;                            ///< The enumeration value from MEMORY_ARRAY_USE.
    356   MemoryErrorCorrectionUnknown,   // MemoryErrorCorrection;          ///< The enumeration value from MEMORY_ERROR_CORRECTION.
    357   0x80000000,                     // MaximumCapacity;
    358   0xFFFE,                         // MemoryErrorInformationHandle;
    359   1,                              // NumberOfMemoryDevices;
    360   0x3fffffffffffffffULL,          // ExtendedMaximumCapacity;
    361 };
    362 
    363 SMBIOS_TABLE_TYPE17 gSmbiosType17Template = {
    364   { EFI_SMBIOS_TYPE_MEMORY_DEVICE, sizeof (SMBIOS_TABLE_TYPE17), 0 },
    365   0,          // MemoryArrayHandle;
    366   0xFFFE,     // MemoryErrorInformationHandle;
    367   0xFFFF,     // TotalWidth;
    368   0xFFFF,     // DataWidth;
    369   0xFFFF,     // Size;
    370   MemoryFormFactorUnknown, // FormFactor;                     ///< The enumeration value from MEMORY_FORM_FACTOR.
    371   0xff,       // DeviceSet;
    372   1,          // DeviceLocator String
    373   2,          // BankLocator String
    374   MemoryTypeDram,         // MemoryType;                     ///< The enumeration value from MEMORY_DEVICE_TYPE.
    375   {           // TypeDetail;
    376     0,  // Reserved        :1;
    377     0,  // Other           :1;
    378     1,  // Unknown         :1;
    379     0,  // FastPaged       :1;
    380     0,  // StaticColumn    :1;
    381     0,  // PseudoStatic    :1;
    382     0,  // Rambus          :1;
    383     0,  // Synchronous     :1;
    384     0,  // Cmos            :1;
    385     0,  // Edo             :1;
    386     0,  // WindowDram      :1;
    387     0,  // CacheDram       :1;
    388     0,  // Nonvolatile     :1;
    389     0,  // Registered      :1;
    390     0,  // Unbuffered      :1;
    391     0,  // Reserved1       :1;
    392   },
    393   0,          // Speed;
    394   3,          // Manufacturer String
    395   0,          // SerialNumber String
    396   0,          // AssetTag String
    397   0,          // PartNumber String
    398   0,          // Attributes;
    399   0,          // ExtendedSize;
    400   0,          // ConfiguredMemoryClockSpeed;
    401 };
    402 CHAR8 *gSmbiosType17Strings[] = {
    403   "OS Virtual Memory",
    404   "malloc",
    405   "OSV",
    406   NULL
    407 };
    408 
    409 SMBIOS_TABLE_TYPE23 gSmbiosType23Template = {
    410   { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE23), 0 },
    411   0,  // Capabilities;
    412   0,  // ResetCount;
    413   0,  // ResetLimit;
    414   0,  // TimerInterval;
    415   0   // Timeout;
    416 };
    417 
    418 SMBIOS_TABLE_TYPE32 gSmbiosType32Template = {
    419   { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE32), 0 },
    420   { 0, 0, 0, 0, 0, 0 },         // Reserved[6];
    421   BootInformationStatusNoError  // BootStatus
    422 };
    423 
    424 
    425 
    426 SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[] = {
    427   { (SMBIOS_STRUCTURE *)&gSmbiosType0Template,   gSmbiosType0Strings  },
    428   { (SMBIOS_STRUCTURE *)&gSmbiosType1Template,   gSmbiosType1Strings  },
    429   { (SMBIOS_STRUCTURE *)&gSmbiosType2Template,   gSmbiosType2Strings  },
    430   { (SMBIOS_STRUCTURE *)&gSmbiosType3Template,   gSmbiosType3Strings  },
    431   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template1,  gSmbiosType8Strings1 },
    432   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template2,  gSmbiosType8Strings2 },
    433   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template3,  gSmbiosType8Strings3 },
    434   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template4,  gSmbiosType8Strings4 },
    435   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template5,  gSmbiosType8Strings5 },
    436   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template6,  gSmbiosType8Strings6 },
    437   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template7,  gSmbiosType8Strings7 },
    438   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template8,  gSmbiosType8Strings8 },
    439   { (SMBIOS_STRUCTURE *)&gSmbiosType8Template9,  gSmbiosType8Strings9 },
    440   { (SMBIOS_STRUCTURE *)&gSmbiosType9Template,   gSmbiosType9Strings  },
    441   { (SMBIOS_STRUCTURE *)&gSmbiosType11Template,  gSmbiosType11Strings },
    442   { (SMBIOS_STRUCTURE *)&gSmbiosType12Template,  gSmbiosType12Strings },
    443   { (SMBIOS_STRUCTURE *)&gSmbiosType16Template,  NULL                 },
    444   { (SMBIOS_STRUCTURE *)&gSmbiosType17Template,  gSmbiosType17Strings },
    445   { (SMBIOS_STRUCTURE *)&gSmbiosType23Template,  NULL                 },
    446   { (SMBIOS_STRUCTURE *)&gSmbiosType32Template,  NULL                 },
    447   { NULL, NULL }
    448 };
    449