/** @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> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#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[] = { | |
"http://www.tianocore.org/edk2/", // 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[] = { | |
"http://www.tianocore.org/edk2/", | |
"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[] = { | |
"http://www.tianocore.org/edk2/", | |
"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[] = { | |
"http://www.tianocore.org/edk2/", | |
"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://svn.code.sf.net/p/edk2/code/trunk/edk2/EmulatorPkg/", | |
NULL | |
}; | |
SMBIOS_TABLE_TYPE12 gSmbiosType12Template = { | |
{ EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 }, | |
1 // StringCount | |
}; | |
CHAR8 *gSmbiosType12Strings[] = { | |
"https://svn.code.sf.net/p/edk2/code/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 } | |
}; |