| /** @file |
| Static SMBIOS Table for platform |
| |
| Note SMBIOS 2.7.1 Required structures: |
| BIOS Information (Type 0) |
| System Information (Type 1) |
| System Enclosure (Type 3) |
| Processor Information (Type 4) - CPU Driver |
| Cache Information (Type 7) - For cache that is external to processor |
| System Slots (Type 9) - If system has slots |
| Physical Memory Array (Type 16) |
| Memory Device (Type 17) - For each socketed system-memory Device |
| Memory Array Mapped Address (Type 19) - One per contiguous block per Physical Memroy Array |
| System Boot Information (Type 32) |
| |
| Copyright (c) 2012, Apple Inc. All rights reserved.<BR> |
| This program and the accompanying materials |
| are licensed and made available under the terms and conditions of the BSD License |
| which accompanies this distribution. The full text of the license may be found at |
| http://opensource.org/licenses/bsd-license.php |
| |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. |
| |
| **/ |
| |
| #include <PiDxe.h> |
| #include <IndustryStandard/SmBios.h> |
| #include <Protocol/Smbios.h> |
| #include <Library/SmbiosLib.h> |
| |
| |
| SMBIOS_TABLE_TYPE0 gSmbiosType0Template = { |
| { EFI_SMBIOS_TYPE_BIOS_INFORMATION, sizeof (SMBIOS_TABLE_TYPE0), 0 }, |
| 1, // Vendor String |
| 2, // BiosVersion String |
| 0xE000, // BiosSegment |
| 3, // BiosReleaseDate String |
| 0x7F, // BiosSize |
| { // BiosCharacteristics |
| 0, // Reserved :2; ///< Bits 0-1. |
| 0, // Unknown :1; |
| 0, // BiosCharacteristicsNotSupported :1; |
| 0, // IsaIsSupported :1; |
| 0, // McaIsSupported :1; |
| 0, // EisaIsSupported :1; |
| 1, // PciIsSupported :1; |
| 0, // PcmciaIsSupported :1; |
| 0, // PlugAndPlayIsSupported :1; |
| 0, // ApmIsSupported :1; |
| 1, // BiosIsUpgradable :1; |
| 1, // BiosShadowingAllowed :1; |
| 0, // VlVesaIsSupported :1; |
| 0, // EscdSupportIsAvailable :1; |
| 0, // BootFromCdIsSupported :1; |
| 1, // SelectableBootIsSupported :1; |
| 0, // RomBiosIsSocketed :1; |
| 0, // BootFromPcmciaIsSupported :1; |
| 0, // EDDSpecificationIsSupported :1; |
| 0, // JapaneseNecFloppyIsSupported :1; |
| 0, // JapaneseToshibaFloppyIsSupported :1; |
| 0, // Floppy525_360IsSupported :1; |
| 0, // Floppy525_12IsSupported :1; |
| 0, // Floppy35_720IsSupported :1; |
| 0, // Floppy35_288IsSupported :1; |
| 0, // PrintScreenIsSupported :1; |
| 0, // Keyboard8042IsSupported :1; |
| 0, // SerialIsSupported :1; |
| 0, // PrinterIsSupported :1; |
| 0, // CgaMonoIsSupported :1; |
| 0, // NecPc98 :1; |
| 0 // ReservedForVendor :32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor |
| ///< and bits 48-63 reserved for System Vendor. |
| }, |
| { // BIOSCharacteristicsExtensionBytes[] |
| 0x81, // AcpiIsSupported :1; |
| // UsbLegacyIsSupported :1; |
| // AgpIsSupported :1; |
| // I2OBootIsSupported :1; |
| // Ls120BootIsSupported :1; |
| // AtapiZipDriveBootIsSupported :1; |
| // Boot1394IsSupported :1; |
| // SmartBatteryIsSupported :1; |
| // BIOSCharacteristicsExtensionBytes[1] |
| 0x0a, // BiosBootSpecIsSupported :1; |
| // FunctionKeyNetworkBootIsSupported :1; |
| // TargetContentDistributionEnabled :1; |
| // UefiSpecificationSupported :1; |
| // VirtualMachineSupported :1; |
| // ExtensionByte2Reserved :3; |
| }, |
| 0x00, // SystemBiosMajorRelease |
| 0x01, // SystemBiosMinorRelease |
| 0xFF, // EmbeddedControllerFirmwareMajorRelease |
| 0xFF, // EmbeddedControllerFirmwareMinorRelease |
| }; |
| CHAR8 *gSmbiosType0Strings[] = { |
| "edk2.sourceforge.net", // Vendor String |
| __TIME__, // BiosVersion String |
| __DATE__, // BiosReleaseDate String |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE1 gSmbiosType1Template = { |
| { EFI_SMBIOS_TYPE_SYSTEM_INFORMATION, sizeof (SMBIOS_TABLE_TYPE1), 0 }, |
| 1, // Manufacturer String |
| 2, // ProductName String |
| 3, // Version String |
| 4, // SerialNumber String |
| { 0x25EF0280, 0xEC82, 0x42B0, { 0x8F, 0xB6, 0x10, 0xAD, 0xCC, 0xC6, 0x7C, 0x02 } }, |
| SystemWakeupTypePowerSwitch, |
| 5, // SKUNumber String |
| 6, // Family String |
| }; |
| CHAR8 *gSmbiosType1Strings[] = { |
| "edk2.sourceforge.net", |
| "EmulatorPkg", |
| "1.0", |
| "System Serial#", |
| "System SKU#", |
| "edk2", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE2 gSmbiosType2Template = { |
| { EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION, sizeof (SMBIOS_TABLE_TYPE2), 0 }, |
| 1, // Manufacturer String |
| 2, // ProductName String |
| 3, // Version String |
| 4, // SerialNumber String |
| 5, // AssetTag String |
| { // FeatureFlag |
| 1, // Motherboard :1; |
| 0, // RequiresDaughterCard :1; |
| 0, // Removable :1; |
| 0, // Replaceable :1; |
| 0, // HotSwappable :1; |
| 0, // Reserved :3; |
| }, |
| 6, // LocationInChassis String |
| 0, // ChassisHandle; |
| BaseBoardTypeMotherBoard, // BoardType; |
| 0, // NumberOfContainedObjectHandles; |
| { 0 } // ContainedObjectHandles[1]; |
| }; |
| CHAR8 *gSmbiosType2Strings[] = { |
| "edk2.sourceforge.net", |
| "EmulatorPkg", |
| "1.0", |
| "Base Board Serial#", |
| "Base Board Asset Tag#", |
| "Part Component", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE3 gSmbiosType3Template = { |
| { EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, sizeof (SMBIOS_TABLE_TYPE3), 0 }, |
| 1, // Manufacturer String |
| MiscChassisTypeLapTop, // Type; |
| 2, // Version String |
| 3, // SerialNumber String |
| 4, // AssetTag String |
| ChassisStateSafe, // BootupState; |
| ChassisStateSafe, // PowerSupplyState; |
| ChassisStateSafe, // ThermalState; |
| ChassisSecurityStatusNone,// SecurityStatus; |
| { 0, 0, 0, 0 }, // OemDefined[4]; |
| 0, // Height; |
| 0, // NumberofPowerCords; |
| 0, // ContainedElementCount; |
| 0, // ContainedElementRecordLength; |
| { 0 }, // ContainedElements[1]; |
| }; |
| CHAR8 *gSmbiosType3Strings[] = { |
| "edk2.sourceforge.net", |
| "EmulatorPkg", |
| "Chassis Board Serial#", |
| "Chassis Board Asset Tag#", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template1 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeNone, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeOther, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings1[] = { |
| "Mini DisplayPort", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template2 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeNone, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeFireWire, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings2[] = { |
| "FireWire 800", |
| NULL |
| }; |
| |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template3 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeRJ45, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeNetworkPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings3[] = { |
| "Ethernet", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template4 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings4[] = { |
| "USB0", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template5 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings5[] = { |
| "USB1", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template6 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings6[] = { |
| "USB2", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template7 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings7[] = { |
| "USB3", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template8 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeAudioPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings8[] = { |
| "Audio Line In", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE8 gSmbiosType8Template9 = { |
| { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 }, |
| 0, // InternalReferenceDesignator String |
| PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| 1, // ExternalReferenceDesignator String |
| PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE. |
| PortTypeAudioPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE. |
| }; |
| CHAR8 *gSmbiosType8Strings9[] = { |
| "Audio Line Out", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE9 gSmbiosType9Template = { |
| { EFI_SMBIOS_TYPE_SYSTEM_SLOTS, sizeof (SMBIOS_TABLE_TYPE9), 0 }, |
| 1, // SlotDesignation String |
| SlotTypeOther, // SlotType; ///< The enumeration value from MISC_SLOT_TYPE. |
| SlotDataBusWidthOther, // SlotDataBusWidth; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH. |
| SlotUsageAvailable, // CurrentUsage; ///< The enumeration value from MISC_SLOT_USAGE. |
| SlotLengthOther, // SlotLength; ///< The enumeration value from MISC_SLOT_LENGTH. |
| 0, // SlotID; |
| { // SlotCharacteristics1; |
| 1, // CharacteristicsUnknown :1; |
| 0, // Provides50Volts :1; |
| 0, // Provides33Volts :1; |
| 0, // SharedSlot :1; |
| 0, // PcCard16Supported :1; |
| 0, // CardBusSupported :1; |
| 0, // ZoomVideoSupported :1; |
| 0, // ModemRingResumeSupported:1; |
| }, |
| { // SlotCharacteristics2; |
| 0, // PmeSignalSupported :1; |
| 0, // HotPlugDevicesSupported :1; |
| 0, // SmbusSignalSupported :1; |
| 0, // Reserved :5; ///< Set to 0. |
| }, |
| 0, // SegmentGroupNum; |
| 0, // BusNum; |
| 0, // DevFuncNum; |
| }; |
| CHAR8 *gSmbiosType9Strings[] = { |
| "SD Card", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE11 gSmbiosType11Template = { |
| { EFI_SMBIOS_TYPE_OEM_STRINGS, sizeof (SMBIOS_TABLE_TYPE11), 0 }, |
| 1 // StringCount |
| }; |
| CHAR8 *gSmbiosType11Strings[] = { |
| "https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EmulatorPkg/", |
| NULL |
| }; |
| |
| |
| SMBIOS_TABLE_TYPE12 gSmbiosType12Template = { |
| { EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 }, |
| 1 // StringCount |
| }; |
| CHAR8 *gSmbiosType12Strings[] = { |
| "https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EmulatorPkg/EmulatorPkg.dsc", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE16 gSmbiosType16Template = { |
| { EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY, sizeof (SMBIOS_TABLE_TYPE16), 0 }, |
| MemoryArrayLocationSystemBoard, // Location; ///< The enumeration value from MEMORY_ARRAY_LOCATION. |
| MemoryArrayUseSystemMemory, // Use; ///< The enumeration value from MEMORY_ARRAY_USE. |
| MemoryErrorCorrectionUnknown, // MemoryErrorCorrection; ///< The enumeration value from MEMORY_ERROR_CORRECTION. |
| 0x80000000, // MaximumCapacity; |
| 0xFFFE, // MemoryErrorInformationHandle; |
| 1, // NumberOfMemoryDevices; |
| 0x3fffffffffffffffULL, // ExtendedMaximumCapacity; |
| }; |
| |
| SMBIOS_TABLE_TYPE17 gSmbiosType17Template = { |
| { EFI_SMBIOS_TYPE_MEMORY_DEVICE, sizeof (SMBIOS_TABLE_TYPE17), 0 }, |
| 0, // MemoryArrayHandle; |
| 0xFFFE, // MemoryErrorInformationHandle; |
| 0xFFFF, // TotalWidth; |
| 0xFFFF, // DataWidth; |
| 0xFFFF, // Size; |
| MemoryFormFactorUnknown, // FormFactor; ///< The enumeration value from MEMORY_FORM_FACTOR. |
| 0xff, // DeviceSet; |
| 1, // DeviceLocator String |
| 2, // BankLocator String |
| MemoryTypeDram, // MemoryType; ///< The enumeration value from MEMORY_DEVICE_TYPE. |
| { // TypeDetail; |
| 0, // Reserved :1; |
| 0, // Other :1; |
| 1, // Unknown :1; |
| 0, // FastPaged :1; |
| 0, // StaticColumn :1; |
| 0, // PseudoStatic :1; |
| 0, // Rambus :1; |
| 0, // Synchronous :1; |
| 0, // Cmos :1; |
| 0, // Edo :1; |
| 0, // WindowDram :1; |
| 0, // CacheDram :1; |
| 0, // Nonvolatile :1; |
| 0, // Registered :1; |
| 0, // Unbuffered :1; |
| 0, // Reserved1 :1; |
| }, |
| 0, // Speed; |
| 3, // Manufacturer String |
| 0, // SerialNumber String |
| 0, // AssetTag String |
| 0, // PartNumber String |
| 0, // Attributes; |
| 0, // ExtendedSize; |
| 0, // ConfiguredMemoryClockSpeed; |
| }; |
| CHAR8 *gSmbiosType17Strings[] = { |
| "OS Virtual Memory", |
| "malloc", |
| "OSV", |
| NULL |
| }; |
| |
| SMBIOS_TABLE_TYPE23 gSmbiosType23Template = { |
| { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE23), 0 }, |
| 0, // Capabilities; |
| 0, // ResetCount; |
| 0, // ResetLimit; |
| 0, // TimerInterval; |
| 0 // Timeout; |
| }; |
| |
| SMBIOS_TABLE_TYPE32 gSmbiosType32Template = { |
| { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE32), 0 }, |
| { 0, 0, 0, 0, 0, 0 }, // Reserved[6]; |
| BootInformationStatusNoError // BootStatus |
| }; |
| |
| |
| |
| SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[] = { |
| { (SMBIOS_STRUCTURE *)&gSmbiosType0Template, gSmbiosType0Strings }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType1Template, gSmbiosType1Strings }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType2Template, gSmbiosType2Strings }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType3Template, gSmbiosType3Strings }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template1, gSmbiosType8Strings1 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template2, gSmbiosType8Strings2 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template3, gSmbiosType8Strings3 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template4, gSmbiosType8Strings4 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template5, gSmbiosType8Strings5 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template6, gSmbiosType8Strings6 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template7, gSmbiosType8Strings7 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template8, gSmbiosType8Strings8 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType8Template9, gSmbiosType8Strings9 }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType9Template, gSmbiosType9Strings }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType11Template, gSmbiosType11Strings }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType12Template, gSmbiosType12Strings }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType16Template, NULL }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType17Template, gSmbiosType17Strings }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType23Template, NULL }, |
| { (SMBIOS_STRUCTURE *)&gSmbiosType32Template, NULL }, |
| { NULL, NULL } |
| }; |