/** @file | |
DataHubRecord.h includes all data hub subclass GUID definitions. | |
This file includes all data hub sub class defitions from | |
Cache subclass specification 0.9, DataHub SubClass specification 0.9, Memory SubClass Spec 0.9, | |
Processor Subclass specification 0.9, and Misc SubClass specification 0.9. | |
Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials are licensed and made available under | |
the terms and conditions of the BSD License that 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. | |
**/ | |
#ifndef _DATAHUB_RECORDS_GUID_H_ | |
#define _DATAHUB_RECORDS_GUID_H_ | |
// | |
// The include is required to retrieve type EFI_EXP_BASE10_DATA | |
// | |
#include <Guid/StatusCodeDataTypeId.h> | |
#define EFI_PROCESSOR_SUBCLASS_GUID \ | |
{ 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } } | |
extern EFI_GUID gEfiProcessorSubClassGuid; | |
#define EFI_CACHE_SUBCLASS_GUID \ | |
{ 0x7f0013a7, 0xdc79, 0x4b22, {0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d } } | |
extern EFI_GUID gEfiCacheSubClassGuid; | |
/// | |
/// The memory subclass belongs to the data class and is identified as the memory | |
/// subclass by the GUID. | |
/// | |
#define EFI_MEMORY_SUBCLASS_GUID \ | |
{0x4E8F4EBB, 0x64B9, 0x4e05, {0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97} } | |
extern EFI_GUID gEfiMemorySubClassGuid; | |
#define EFI_MISC_SUBCLASS_GUID \ | |
{ 0x772484B2, 0x7482, 0x4b91, {0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81 } } | |
extern EFI_GUID gEfiMiscSubClassGuid; | |
/// | |
/// Inconsistent with specification here: | |
/// In ProcSubclass specification 0.9, the value is 0x0100. | |
/// Keep it unchanged from the perspective of binary consistency. | |
/// | |
#define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000 | |
#pragma pack(1) | |
typedef struct _USB_PORT_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH PciBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} USB_PORT_DEVICE_PATH; | |
// | |
// IDE | |
// | |
typedef struct _IDE_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH PciBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} IDE_DEVICE_PATH; | |
// | |
// RMC Connector | |
// | |
typedef struct _RMC_CONN_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH PciBridgeDevicePath; | |
PCI_DEVICE_PATH PciBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} RMC_CONN_DEVICE_PATH; | |
// | |
// RIDE | |
// | |
typedef struct _RIDE_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH PciBridgeDevicePath; | |
PCI_DEVICE_PATH PciBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} RIDE_DEVICE_PATH; | |
// | |
// Gigabit NIC | |
// | |
typedef struct _GB_NIC_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH PciBridgeDevicePath; | |
PCI_DEVICE_PATH PciXBridgeDevicePath; | |
PCI_DEVICE_PATH PciXBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} GB_NIC_DEVICE_PATH; | |
// | |
// P/S2 Connector | |
// | |
typedef struct _PS2_CONN_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH LpcBridgeDevicePath; | |
ACPI_HID_DEVICE_PATH LpcBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} PS2_CONN_DEVICE_PATH; | |
// | |
// Serial Port Connector | |
// | |
typedef struct _SERIAL_CONN_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH LpcBridgeDevicePath; | |
ACPI_HID_DEVICE_PATH LpcBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} SERIAL_CONN_DEVICE_PATH; | |
// | |
// Parallel Port Connector | |
// | |
typedef struct _PARALLEL_CONN_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH LpcBridgeDevicePath; | |
ACPI_HID_DEVICE_PATH LpcBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} PARALLEL_CONN_DEVICE_PATH; | |
// | |
// Floopy Connector | |
// | |
typedef struct _FLOOPY_CONN_DEVICE_PATH { | |
ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath; | |
PCI_DEVICE_PATH LpcBridgeDevicePath; | |
ACPI_HID_DEVICE_PATH LpcBusDevicePath; | |
EFI_DEVICE_PATH_PROTOCOL EndDevicePath; | |
} FLOOPY_CONN_DEVICE_PATH; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. | |
/// It's implementation-specific to simplify the code logic. | |
/// | |
typedef union _EFI_MISC_PORT_DEVICE_PATH { | |
USB_PORT_DEVICE_PATH UsbDevicePath; | |
IDE_DEVICE_PATH IdeDevicePath; | |
RMC_CONN_DEVICE_PATH RmcConnDevicePath; | |
RIDE_DEVICE_PATH RideDevicePath; | |
GB_NIC_DEVICE_PATH GbNicDevicePath; | |
PS2_CONN_DEVICE_PATH Ps2ConnDevicePath; | |
SERIAL_CONN_DEVICE_PATH SerialConnDevicePath; | |
PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath; | |
FLOOPY_CONN_DEVICE_PATH FloppyConnDevicePath; | |
} EFI_MISC_PORT_DEVICE_PATH; | |
#pragma pack() | |
/// | |
/// String Token Definition | |
/// | |
/// Inconsistent with specification here: | |
/// The macro isn't defined by any specification. | |
/// Keep it unchanged for backward compatibility. | |
/// | |
#define EFI_STRING_TOKEN UINT16 | |
/// | |
/// Each data record that is a member of some subclass starts with a standard | |
/// header of type EFI_SUBCLASS_TYPE1_HEADER. | |
/// This header is only a guideline and applicable only to a data | |
/// subclass that is producing SMBIOS data records. A subclass can start with a | |
/// different header if needed. | |
/// | |
typedef struct { | |
/// | |
/// The version of the specification to which a specific subclass data record adheres. | |
/// | |
UINT32 Version; | |
/// | |
/// The size in bytes of this data class header. | |
/// | |
UINT32 HeaderSize; | |
/// | |
/// The instance number of the subclass with the same ProducerName. This number is | |
/// applicable in cases where multiple subclass instances that were produced by the same | |
/// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not | |
/// Applicable. All data consumer drivers should be able to handle all the possible values | |
/// of Instance, including Not Applicable and Reserved. | |
/// | |
UINT16 Instance; | |
/// | |
/// The instance number of the RecordType for the same Instance. This number is | |
/// applicable in cases where multiple instances of the RecordType exist for a specific | |
/// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable. | |
/// All data consumer drivers should be able to handle all the possible values of | |
/// SubInstance, including Not Applicable and Reserved. | |
/// | |
UINT16 SubInstance; | |
/// | |
/// The record number for the data record being specified. The numbering scheme and | |
/// definition is defined in the specific subclass specification. | |
/// | |
UINT32 RecordType; | |
} EFI_SUBCLASS_TYPE1_HEADER; | |
/// | |
/// This structure is used to link data records in the same subclasses. A data record is | |
/// defined as a link to another data record in the same subclass using this structure. | |
/// | |
typedef struct { | |
/// | |
/// An EFI_GUID that identifies the component that produced this data record. Type | |
/// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification. | |
/// | |
EFI_GUID ProducerName; | |
/// | |
/// The instance number of the subclass with the same ProducerName. This number is | |
/// applicable in cases where multiple subclass instances that were produced by the same | |
/// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not | |
/// Applicable. All data consumer drivers should be able to handle all the possible values | |
/// of Instance, including Not Applicable and Reserved. | |
/// | |
UINT16 Instance; | |
/// The instance number of the RecordType for the same Instance. This number is | |
/// applicable in cases where multiple instances of the RecordType exist for a specific | |
/// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable. | |
/// All data consumer drivers should be able to handle all the possible values of | |
/// SubInstance, including Not Applicable and Reserved. | |
UINT16 SubInstance; | |
} EFI_INTER_LINK_DATA; | |
// | |
// EXP data | |
// | |
/// | |
/// This macro provides a calculation for base-10 representations. Value and Exponent are each | |
/// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit | |
/// for the sign). | |
/// | |
typedef struct { | |
/// | |
/// The INT16 number by which to multiply the base-10 representation. | |
/// | |
UINT16 Value; | |
/// | |
/// The INT16 number by which to raise the base-10 calculation. | |
/// | |
UINT16 Exponent; | |
} EFI_EXP_BASE2_DATA; | |
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA; | |
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA; | |
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA; | |
/// | |
/// This data record refers to the list of frequencies that the processor core supports. The list of | |
/// supported frequencies is determined by the firmware based on hardware capabilities--for example, | |
/// it could be a common subset of all processors and the chipset. The unit of measurement of this data | |
/// record is in Hertz. For asynchronous processors, the content of this data record is zero. | |
/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means | |
/// that the processor/driver supports automatic frequency selection. | |
/// | |
/// Inconsistent with specification here: | |
/// According to MiscSubclass 0.9 specification, it should be a pointer since it refers to a list of frequencies. | |
/// | |
typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA; | |
/// | |
/// This data record refers to the list of supported frequencies of the processor external bus. The list of | |
/// supported frequencies is determined by the firmware based on hardware capabilities--for example, | |
/// it could be a common subset of all processors and the chipset. The unit of measurement of this data | |
/// record is in Hertz. For asynchronous processors, the content of this data record is NULL. | |
/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means | |
/// that the processor/driver supports automatic frequency selection. | |
/// | |
typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA; | |
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA; | |
typedef STRING_REF EFI_PROCESSOR_VERSION_DATA; | |
typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA; | |
typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA; | |
typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA; | |
typedef STRING_REF EFI_PROCESSOR_PART_NUMBER_DATA; | |
typedef struct { | |
UINT32 ProcessorSteppingId:4; | |
UINT32 ProcessorModel: 4; | |
UINT32 ProcessorFamily: 4; | |
UINT32 ProcessorType: 2; | |
UINT32 ProcessorReserved1: 2; | |
UINT32 ProcessorXModel: 4; | |
UINT32 ProcessorXFamily: 8; | |
UINT32 ProcessorReserved2: 4; | |
} EFI_PROCESSOR_SIGNATURE; | |
/// | |
/// Inconsistent with specification here: | |
/// The name of third field in ProcSubClass specification 0.9 is LogicalProcessorCount. | |
/// Keep it unchanged for backward compatibility. | |
/// | |
typedef struct { | |
UINT32 ProcessorBrandIndex :8; | |
UINT32 ProcessorClflush :8; | |
UINT32 ProcessorReserved :8; | |
UINT32 ProcessorDfltApicId :8; | |
} EFI_PROCESSOR_MISC_INFO; | |
typedef struct { | |
UINT32 ProcessorFpu: 1; | |
UINT32 ProcessorVme: 1; | |
UINT32 ProcessorDe: 1; | |
UINT32 ProcessorPse: 1; | |
UINT32 ProcessorTsc: 1; | |
UINT32 ProcessorMsr: 1; | |
UINT32 ProcessorPae: 1; | |
UINT32 ProcessorMce: 1; | |
UINT32 ProcessorCx8: 1; | |
UINT32 ProcessorApic: 1; | |
UINT32 ProcessorReserved1: 1; | |
UINT32 ProcessorSep: 1; | |
UINT32 ProcessorMtrr: 1; | |
UINT32 ProcessorPge: 1; | |
UINT32 ProcessorMca: 1; | |
UINT32 ProcessorCmov: 1; | |
UINT32 ProcessorPat: 1; | |
UINT32 ProcessorPse36: 1; | |
UINT32 ProcessorPsn: 1; | |
UINT32 ProcessorClfsh: 1; | |
UINT32 ProcessorReserved2: 1; | |
UINT32 ProcessorDs: 1; | |
UINT32 ProcessorAcpi: 1; | |
UINT32 ProcessorMmx: 1; | |
UINT32 ProcessorFxsr: 1; | |
UINT32 ProcessorSse: 1; | |
UINT32 ProcessorSse2: 1; | |
UINT32 ProcessorSs: 1; | |
UINT32 ProcessorReserved3: 1; | |
UINT32 ProcessorTm: 1; | |
UINT32 ProcessorReserved4: 2; | |
} EFI_PROCESSOR_FEATURE_FLAGS; | |
/// | |
/// This data record refers to the unique ID that identifies a set of processors. This data record is 16 | |
/// bytes in length. The data in this structure is processor specific and reserved values can be defined | |
/// for future use. The consumer of this data should not make any assumption and should use this data | |
/// with respect to the processor family defined in the Family record number. | |
/// | |
typedef struct { | |
/// | |
/// Identifies the processor. | |
/// | |
EFI_PROCESSOR_SIGNATURE Signature; | |
/// | |
/// Provides additional processor information. | |
/// | |
EFI_PROCESSOR_MISC_INFO MiscInfo; | |
/// | |
/// Reserved for future use. | |
/// | |
UINT32 Reserved; | |
/// | |
/// Provides additional processor information. | |
/// | |
EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags; | |
} EFI_PROCESSOR_ID_DATA; | |
/// | |
/// This data record refers to the general classification of the processor. This data record is 4 bytes in | |
/// length. | |
/// | |
typedef enum { | |
EfiProcessorOther = 1, | |
EfiProcessorUnknown = 2, | |
EfiCentralProcessor = 3, | |
EfiMathProcessor = 4, | |
EfiDspProcessor = 5, | |
EfiVideoProcessor = 6 | |
} EFI_PROCESSOR_TYPE_DATA; | |
/// | |
/// This data record refers to the family of the processor as defined by the DMTF. | |
/// This data record is 4 bytes in length. | |
/// | |
typedef enum { | |
EfiProcessorFamilyOther = 0x01, | |
EfiProcessorFamilyUnknown = 0x02, | |
EfiProcessorFamily8086 = 0x03, | |
EfiProcessorFamily80286 = 0x04, | |
EfiProcessorFamilyIntel386 = 0x05, | |
EfiProcessorFamilyIntel486 = 0x06, | |
EfiProcessorFamily8087 = 0x07, | |
EfiProcessorFamily80287 = 0x08, | |
EfiProcessorFamily80387 = 0x09, | |
EfiProcessorFamily80487 = 0x0A, | |
EfiProcessorFamilyPentium = 0x0B, | |
EfiProcessorFamilyPentiumPro = 0x0C, | |
EfiProcessorFamilyPentiumII = 0x0D, | |
EfiProcessorFamilyPentiumMMX = 0x0E, | |
EfiProcessorFamilyCeleron = 0x0F, | |
EfiProcessorFamilyPentiumIIXeon = 0x10, | |
EfiProcessorFamilyPentiumIII = 0x11, | |
EfiProcessorFamilyM1 = 0x12, | |
EfiProcessorFamilyM2 = 0x13, | |
EfiProcessorFamilyM1Reserved2 = 0x14, | |
EfiProcessorFamilyM1Reserved3 = 0x15, | |
EfiProcessorFamilyM1Reserved4 = 0x16, | |
EfiProcessorFamilyM1Reserved5 = 0x17, | |
EfiProcessorFamilyAmdDuron = 0x18, | |
EfiProcessorFamilyK5 = 0x19, | |
EfiProcessorFamilyK6 = 0x1A, | |
EfiProcessorFamilyK6_2 = 0x1B, | |
EfiProcessorFamilyK6_3 = 0x1C, | |
EfiProcessorFamilyAmdAthlon = 0x1D, | |
EfiProcessorFamilyAmd29000 = 0x1E, | |
EfiProcessorFamilyK6_2Plus = 0x1F, | |
EfiProcessorFamilyPowerPC = 0x20, | |
EfiProcessorFamilyPowerPC601 = 0x21, | |
EfiProcessorFamilyPowerPC603 = 0x22, | |
EfiProcessorFamilyPowerPC603Plus = 0x23, | |
EfiProcessorFamilyPowerPC604 = 0x24, | |
EfiProcessorFamilyPowerPC620 = 0x25, | |
EfiProcessorFamilyPowerPCx704 = 0x26, | |
EfiProcessorFamilyPowerPC750 = 0x27, | |
EfiProcessorFamilyAlpha3 = 0x30, | |
EfiProcessorFamilyAlpha21064 = 0x31, | |
EfiProcessorFamilyAlpha21066 = 0x32, | |
EfiProcessorFamilyAlpha21164 = 0x33, | |
EfiProcessorFamilyAlpha21164PC = 0x34, | |
EfiProcessorFamilyAlpha21164a = 0x35, | |
EfiProcessorFamilyAlpha21264 = 0x36, | |
EfiProcessorFamilyAlpha21364 = 0x37, | |
EfiProcessorFamilyMips = 0x40, | |
EfiProcessorFamilyMIPSR4000 = 0x41, | |
EfiProcessorFamilyMIPSR4200 = 0x42, | |
EfiProcessorFamilyMIPSR4400 = 0x43, | |
EfiProcessorFamilyMIPSR4600 = 0x44, | |
EfiProcessorFamilyMIPSR10000 = 0x45, | |
EfiProcessorFamilySparc = 0x50, | |
EfiProcessorFamilySuperSparc = 0x51, | |
EfiProcessorFamilymicroSparcII = 0x52, | |
EfiProcessorFamilymicroSparcIIep = 0x53, | |
EfiProcessorFamilyUltraSparc = 0x54, | |
EfiProcessorFamilyUltraSparcII = 0x55, | |
EfiProcessorFamilyUltraSparcIIi = 0x56, | |
EfiProcessorFamilyUltraSparcIII = 0x57, | |
/// | |
/// Inconsistent with specification here: | |
/// This field in ProcSubClass specification 0.9 is defined as EfiProcessorFamilyUltraSparcIIi. | |
/// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break. | |
/// | |
EfiProcessorFamilyUltraSparcIIIi = 0x58, | |
EfiProcessorFamily68040 = 0x60, | |
EfiProcessorFamily68xxx = 0x61, | |
EfiProcessorFamily68000 = 0x62, | |
EfiProcessorFamily68010 = 0x63, | |
EfiProcessorFamily68020 = 0x64, | |
EfiProcessorFamily68030 = 0x65, | |
EfiProcessorFamilyHobbit = 0x70, | |
EfiProcessorFamilyCrusoeTM5000 = 0x78, | |
EfiProcessorFamilyCrusoeTM3000 = 0x79, | |
EfiProcessorFamilyEfficeonTM8000 = 0x7A, | |
EfiProcessorFamilyWeitek = 0x80, | |
EfiProcessorFamilyItanium = 0x82, | |
EfiProcessorFamilyAmdAthlon64 = 0x83, | |
EfiProcessorFamilyAmdOpteron = 0x84, | |
EfiProcessorFamilyAmdSempron = 0x85, | |
EfiProcessorFamilyAmdTurion64Mobile = 0x86, | |
EfiProcessorFamilyDualCoreAmdOpteron = 0x87, | |
EfiProcessorFamilyAmdAthlon64X2DualCore = 0x88, | |
EfiProcessorFamilyAmdTurion64X2Mobile = 0x89, | |
EfiProcessorFamilyPARISC = 0x90, | |
EfiProcessorFamilyPaRisc8500 = 0x91, | |
EfiProcessorFamilyPaRisc8000 = 0x92, | |
EfiProcessorFamilyPaRisc7300LC = 0x93, | |
EfiProcessorFamilyPaRisc7200 = 0x94, | |
EfiProcessorFamilyPaRisc7100LC = 0x95, | |
EfiProcessorFamilyPaRisc7100 = 0x96, | |
EfiProcessorFamilyV30 = 0xA0, | |
EfiProcessorFamilyPentiumIIIXeon = 0xB0, | |
EfiProcessorFamilyPentiumIIISpeedStep = 0xB1, | |
EfiProcessorFamilyPentium4 = 0xB2, | |
EfiProcessorFamilyIntelXeon = 0xB3, | |
EfiProcessorFamilyAS400 = 0xB4, | |
EfiProcessorFamilyIntelXeonMP = 0xB5, | |
EfiProcessorFamilyAMDAthlonXP = 0xB6, | |
EfiProcessorFamilyAMDAthlonMP = 0xB7, | |
EfiProcessorFamilyIntelItanium2 = 0xB8, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyIntelPentiumM = 0xB9, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyIntelCeleronD = 0xBA, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyIntelPentiumD = 0xBB, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyIntelPentiumEx = 0xBC, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyIntelCoreSolo = 0xBD, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyReserved = 0xBE, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyIntelCore2 = 0xBF, | |
EfiProcessorFamilyIBM390 = 0xC8, | |
EfiProcessorFamilyG4 = 0xC9, | |
EfiProcessorFamilyG5 = 0xCA, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyG6 = 0xCB, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyzArchitectur = 0xCC, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyViaC7M = 0xD2, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyViaC7D = 0xD3, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyViaC7 = 0xD4, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyViaEden = 0xD5, | |
EfiProcessorFamilyi860 = 0xFA, | |
EfiProcessorFamilyi960 = 0xFB, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyIndicatorFamily2 = 0xFE, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorFamilyReserved1 = 0xFF | |
} EFI_PROCESSOR_FAMILY_DATA; | |
typedef enum { | |
EfiProcessorFamilySh3 = 0x104, | |
EfiProcessorFamilySh4 = 0x105, | |
EfiProcessorFamilyArm = 0x118, | |
EfiProcessorFamilyStrongArm = 0x119, | |
EfiProcessorFamily6x86 = 0x12C, | |
EfiProcessorFamilyMediaGx = 0x12D, | |
EfiProcessorFamilyMii = 0x12E, | |
EfiProcessorFamilyWinChip = 0x140, | |
EfiProcessorFamilyDsp = 0x15E, | |
EfiProcessorFamilyVideo = 0x1F4 | |
} EFI_PROCESSOR_FAMILY2_DATA; | |
/// | |
/// This data record refers to the core voltage of the processor being defined. The unit of measurement | |
/// of this data record is in volts. | |
/// | |
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA; | |
/// | |
/// This data record refers to the base address of the APIC of the processor being defined. This data | |
/// record is a physical address location. | |
/// | |
typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA; | |
/// | |
/// This data record refers to the ID of the APIC of the processor being defined. This data record is a | |
/// 4-byte entry. | |
/// | |
typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA; | |
/// | |
/// This data record refers to the version number of the APIC of the processor being defined. This data | |
/// record is a 4-byte entry. | |
/// | |
typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA; | |
typedef enum { | |
EfiProcessorIa32Microcode = 1, | |
EfiProcessorIpfPalAMicrocode = 2, | |
EfiProcessorIpfPalBMicrocode = 3 | |
} EFI_PROCESSOR_MICROCODE_TYPE; | |
/// | |
/// This data record refers to the revision of the processor microcode that is loaded in the processor. | |
/// This data record is a 4-byte entry. | |
/// | |
typedef struct { | |
/// | |
/// Identifies what type of microcode the data is. | |
/// | |
EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType; | |
/// | |
/// Indicates the revision number of this microcode. | |
/// | |
UINT32 ProcessorMicrocodeRevisionNumber; | |
} EFI_PROCESSOR_MICROCODE_REVISION_DATA; | |
/// | |
/// This data record refers to the status of the processor. | |
/// | |
typedef struct { | |
UINT32 CpuStatus :3; ///< Indicates the status of the processor. | |
UINT32 Reserved1 :3; ///< Reserved for future use. Should be set to zero. | |
UINT32 SocketPopulated :1; ///< Indicates if the processor is socketed or not. | |
UINT32 Reserved2 :1; ///< Reserved for future use. Should be set to zero. | |
UINT32 ApicEnable :1; ///< Indicates if the APIC is enabled or not. | |
UINT32 BootApplicationProcessor :1; ///< Indicates if this processor is the boot processor. | |
UINT32 Reserved3 :22;///< Reserved for future use. Should be set to zero. | |
} EFI_PROCESSOR_STATUS_DATA; | |
typedef enum { | |
EfiCpuStatusUnknown = 0, | |
EfiCpuStatusEnabled = 1, | |
EfiCpuStatusDisabledByUser = 2, | |
EfiCpuStatusDisabledbyBios = 3, | |
EfiCpuStatusIdle = 4, | |
EfiCpuStatusOther = 7 | |
} EFI_CPU_STATUS; | |
typedef enum { | |
EfiProcessorSocketOther = 1, | |
EfiProcessorSocketUnknown = 2, | |
EfiProcessorSocketDaughterBoard = 3, | |
EfiProcessorSocketZIF = 4, | |
EfiProcessorSocketReplacePiggyBack = 5, | |
EfiProcessorSocketNone = 6, | |
EfiProcessorSocketLIF = 7, | |
EfiProcessorSocketSlot1 = 8, | |
EfiProcessorSocketSlot2 = 9, | |
EfiProcessorSocket370Pin = 0xA, | |
EfiProcessorSocketSlotA = 0xB, | |
EfiProcessorSocketSlotM = 0xC, | |
EfiProcessorSocket423 = 0xD, | |
EfiProcessorSocketA462 = 0xE, | |
EfiProcessorSocket478 = 0xF, | |
EfiProcessorSocket754 = 0x10, | |
EfiProcessorSocket940 = 0x11, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorSocket939 = 0x12, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorSocketmPGA604 = 0x13, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorSocketLGA771 = 0x14, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in ProcSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiProcessorSocketLGA775 = 0x15 | |
} EFI_PROCESSOR_SOCKET_TYPE_DATA; | |
typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA; | |
/// | |
/// Inconsistent with specification here: | |
/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA; | |
/// | |
/// This data record refers to the health status of the processor. | |
/// | |
/// Inconsistent with specification here: | |
/// In ProcSubclass specification 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef enum { | |
EfiProcessorHealthy = 1, | |
EfiProcessorPerfRestricted = 2, | |
EfiProcessorFuncRestricted = 3 | |
} EFI_PROCESSOR_HEALTH_STATUS; | |
/// | |
/// This data record refers to the package number of this processor. Multiple logical processors can | |
/// exist in a system and each logical processor can be correlated to the physical processor using this | |
/// record type. | |
/// | |
typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA; | |
typedef UINT8 EFI_PROCESSOR_CORE_COUNT_DATA; | |
typedef UINT8 EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA; | |
typedef UINT8 EFI_PROCESSOR_THREAD_COUNT_DATA; | |
typedef struct { | |
UINT16 Reserved :1; | |
UINT16 Unknown :1; | |
UINT16 Capable64Bit :1; | |
UINT16 Reserved2 :13; | |
} EFI_PROCESSOR_CHARACTERISTICS_DATA; | |
/// | |
/// Inconsistent with specification here: | |
/// In ProcSubclass specification 0.9, the enumeration type data structure is NOT defined. | |
/// The equivalent in specification is | |
/// #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER 0x00000001 | |
/// #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER 0x00000002 | |
/// #define EFI_PROCESSOR_VERSION_RECORD_NUMBER 0x00000003 | |
/// #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER 0x00000004 | |
/// #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER 0x00000005 | |
/// #define EFI_PROCESSOR_ID_RECORD_NUMBER 0x00000006 | |
/// #define EFI_PROCESSOR_TYPE_RECORD_NUMBER 0x00000007 | |
/// #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER 0x00000008 | |
/// #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER 0x00000009 | |
/// #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER 0x0000000A | |
/// #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER 0x0000000B | |
/// #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER 0x0000000C | |
/// #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER 0x0000000D | |
/// #define EFI_PROCESSOR_STATUS_RECORD_NUMBER 0x0000000E | |
/// #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER 0x0000000F | |
/// #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER 0x00000010 | |
/// #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER 0x00000011 | |
/// #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER 0x00000012 | |
/// #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER 0x00000013 | |
/// #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER 0x00000014 | |
/// #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER 0x00000015 | |
/// #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER 0x00000016 | |
/// #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER 0x00000017 | |
/// #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER 0x00000018 | |
/// | |
/// Keep the definition unchanged for backward compatibility. | |
typedef enum { | |
ProcessorCoreFrequencyRecordType = 1, | |
ProcessorFsbFrequencyRecordType = 2, | |
ProcessorVersionRecordType = 3, | |
ProcessorManufacturerRecordType = 4, | |
ProcessorSerialNumberRecordType = 5, | |
ProcessorIdRecordType = 6, | |
ProcessorTypeRecordType = 7, | |
ProcessorFamilyRecordType = 8, | |
ProcessorVoltageRecordType = 9, | |
ProcessorApicBaseAddressRecordType = 10, | |
ProcessorApicIdRecordType = 11, | |
ProcessorApicVersionNumberRecordType = 12, | |
CpuUcodeRevisionDataRecordType = 13, | |
ProcessorStatusRecordType = 14, | |
ProcessorSocketTypeRecordType = 15, | |
ProcessorSocketNameRecordType = 16, | |
CacheAssociationRecordType = 17, | |
ProcessorMaxCoreFrequencyRecordType = 18, | |
ProcessorAssetTagRecordType = 19, | |
ProcessorMaxFsbFrequencyRecordType = 20, | |
ProcessorPackageNumberRecordType = 21, | |
ProcessorCoreFrequencyListRecordType = 22, | |
ProcessorFsbFrequencyListRecordType = 23, | |
ProcessorHealthStatusRecordType = 24, | |
ProcessorCoreCountRecordType = 25, | |
ProcessorEnabledCoreCountRecordType = 26, | |
ProcessorThreadCountRecordType = 27, | |
ProcessorCharacteristicsRecordType = 28, | |
ProcessorFamily2RecordType = 29, | |
ProcessorPartNumberRecordType = 30, | |
} EFI_CPU_VARIABLE_RECORD_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In ProcSubclass specification 0.9, the union type data structure is NOT defined. | |
/// It's implementation-specific to simplify the code logic. | |
/// | |
typedef union { | |
EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList; | |
EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList; | |
EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber; | |
EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency; | |
EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency; | |
EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency; | |
EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency; | |
EFI_PROCESSOR_VERSION_DATA ProcessorVersion; | |
EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer; | |
EFI_PROCESSOR_ID_DATA ProcessorId; | |
EFI_PROCESSOR_TYPE_DATA ProcessorType; | |
EFI_PROCESSOR_FAMILY_DATA ProcessorFamily; | |
EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage; | |
EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase; | |
EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId; | |
EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber; | |
EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData; | |
EFI_PROCESSOR_STATUS_DATA ProcessorStatus; | |
EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType; | |
EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName; | |
EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag; | |
EFI_PROCESSOR_PART_NUMBER_DATA ProcessorPartNumber; | |
EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus; | |
EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber; | |
EFI_PROCESSOR_CORE_COUNT_DATA ProcessorCoreCount; | |
EFI_PROCESSOR_ENABLED_CORE_COUNT_DATA ProcessorEnabledCoreCount; | |
EFI_PROCESSOR_THREAD_COUNT_DATA ProcessorThreadCount; | |
EFI_PROCESSOR_CHARACTERISTICS_DATA ProcessorCharacteristics; | |
EFI_PROCESSOR_FAMILY2_DATA ProcessorFamily2; | |
} EFI_CPU_VARIABLE_RECORD; | |
typedef struct { | |
EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader; | |
EFI_CPU_VARIABLE_RECORD VariableRecord; | |
} EFI_CPU_DATA_RECORD; | |
#define EFI_CACHE_SUBCLASS_VERSION 0x00010000 | |
typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA; | |
/// | |
/// Inconsistent with specification here: | |
/// In CacheSubclass specification 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA; | |
typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA; | |
typedef STRING_REF EFI_CACHE_SOCKET_DATA; | |
typedef struct { | |
UINT32 Other :1; | |
UINT32 Unknown :1; | |
UINT32 NonBurst :1; | |
UINT32 Burst :1; | |
UINT32 PipelineBurst :1; | |
/// | |
/// Inconsistent between CacheSubclass 0.9 and SMBIOS specifications here: | |
/// In CacheSubclass specification 0.9, the sequence of Asynchronous and Synchronous fileds | |
/// are opposite to SMBIOS specification. | |
/// | |
UINT32 Asynchronous :1; | |
UINT32 Synchronous :1; | |
UINT32 Reserved :25; | |
} EFI_CACHE_SRAM_TYPE_DATA; | |
typedef EFI_CACHE_SRAM_TYPE_DATA EFI_CACHE_SRAM_INSTALL_DATA; | |
typedef enum { | |
EfiCacheErrorOther = 1, | |
EfiCacheErrorUnknown = 2, | |
EfiCacheErrorNone = 3, | |
EfiCacheErrorParity = 4, | |
EfiCacheErrorSingleBit = 5, | |
EfiCacheErrorMultiBit = 6 | |
} EFI_CACHE_ERROR_TYPE_DATA; | |
typedef enum { | |
EfiCacheTypeOther = 1, | |
EfiCacheTypeUnknown = 2, | |
EfiCacheTypeInstruction = 3, | |
EfiCacheTypeData = 4, | |
EfiCacheTypeUnified = 5 | |
} EFI_CACHE_TYPE_DATA; | |
typedef enum { | |
EfiCacheAssociativityOther = 1, | |
EfiCacheAssociativityUnknown = 2, | |
EfiCacheAssociativityDirectMapped = 3, | |
EfiCacheAssociativity2Way = 4, | |
EfiCacheAssociativity4Way = 5, | |
EfiCacheAssociativityFully = 6, | |
EfiCacheAssociativity8Way = 7, | |
EfiCacheAssociativity16Way = 8 | |
} EFI_CACHE_ASSOCIATIVITY_DATA; | |
/// | |
/// Inconsistent with specification here: | |
/// In CacheSubclass 0.9 specification. It defines the field type as UINT16. | |
/// In fact, it should be UINT32 type because it refers to a 32bit width data. | |
/// | |
typedef struct { | |
UINT32 Level :3; | |
UINT32 Socketed :1; | |
UINT32 Reserved2 :1; | |
UINT32 Location :2; | |
UINT32 Enable :1; | |
UINT32 OperationalMode :2; | |
UINT32 Reserved1 :22; | |
} EFI_CACHE_CONFIGURATION_DATA; | |
#define EFI_CACHE_L1 1 | |
#define EFI_CACHE_L2 2 | |
#define EFI_CACHE_L3 3 | |
#define EFI_CACHE_L4 4 | |
#define EFI_CACHE_LMAX EFI_CACHE_L4 | |
#define EFI_CACHE_SOCKETED 1 | |
#define EFI_CACHE_NOT_SOCKETED 0 | |
typedef enum { | |
EfiCacheInternal = 0, | |
EfiCacheExternal = 1, | |
EfiCacheReserved = 2, | |
EfiCacheUnknown = 3 | |
} EFI_CACHE_LOCATION; | |
#define EFI_CACHE_ENABLED 1 | |
#define EFI_CACHE_DISABLED 0 | |
typedef enum { | |
EfiCacheWriteThrough = 0, | |
EfiCacheWriteBack = 1, | |
EfiCacheDynamicMode = 2, | |
EfiCacheUnknownMode = 3 | |
} EFI_CACHE_OPERATIONAL_MODE; | |
/// | |
/// Inconsistent with specification here: | |
/// In CacheSubclass specification 0.9, the enumeration type data structure is NOT defined. | |
/// The equivalent in specification is | |
/// #define EFI_CACHE_SIZE_RECORD_NUMBER 0x00000001 | |
/// #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER 0x00000002 | |
/// #define EFI_CACHE_SPEED_RECORD_NUMBER 0x00000003 | |
/// #define EFI_CACHE_SOCKET_RECORD_NUMBER 0x00000004 | |
/// #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER 0x00000005 | |
/// #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER 0x00000006 | |
/// #define EFI_CACHE_ERROR_SUPPORT_RECORD_NUMBER 0x00000007 | |
/// #define EFI_CACHE_TYPE_RECORD_NUMBER 0x00000008 | |
/// #define EFI_CACHE_ASSOCIATIVITY_RECORD_NUMBER 0x00000009 | |
/// #define EFI_CACHE_CONFIGURATION_RECORD_NUMBER 0x0000000A | |
/// Keep the definition unchanged for backward compatibility. | |
/// | |
typedef enum { | |
CacheSizeRecordType = 1, | |
MaximumSizeCacheRecordType = 2, | |
CacheSpeedRecordType = 3, | |
CacheSocketRecordType = 4, | |
CacheSramTypeRecordType = 5, | |
CacheInstalledSramTypeRecordType = 6, | |
CacheErrorTypeRecordType = 7, | |
CacheTypeRecordType = 8, | |
CacheAssociativityRecordType = 9, | |
CacheConfigRecordType = 10 | |
} EFI_CACHE_VARIABLE_RECORD_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In CacheSubclass specification 0.9, the union type data structure is NOT defined. | |
/// It's implementation-specific to simplify the code logic. | |
/// | |
typedef union { | |
EFI_CACHE_SIZE_DATA CacheSize; | |
EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize; | |
EFI_CACHE_SPEED_DATA CacheSpeed; | |
EFI_CACHE_SOCKET_DATA CacheSocket; | |
EFI_CACHE_SRAM_TYPE_DATA CacheSramType; | |
EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType; | |
EFI_CACHE_ERROR_TYPE_DATA CacheErrorType; | |
EFI_CACHE_TYPE_DATA CacheType; | |
EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity; | |
EFI_CACHE_CONFIGURATION_DATA CacheConfig; | |
EFI_CACHE_ASSOCIATION_DATA CacheAssociation; | |
} EFI_CACHE_VARIABLE_RECORD; | |
typedef struct { | |
EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader; | |
EFI_CACHE_VARIABLE_RECORD VariableRecord; | |
} EFI_CACHE_DATA_RECORD; | |
#define EFI_MEMORY_SUBCLASS_VERSION 0x0100 | |
#define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001 | |
typedef enum _EFI_MEMORY_REGION_TYPE { | |
EfiMemoryRegionMemory = 0x01, | |
EfiMemoryRegionReserved = 0x02, | |
EfiMemoryRegionAcpi = 0x03, | |
EfiMemoryRegionNvs = 0x04 | |
} EFI_MEMORY_REGION_TYPE; | |
/// | |
/// This data record refers to the size of a memory region. The regions that are | |
/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions. | |
/// The unit of measurement of this data record is in bytes. | |
/// | |
typedef struct { | |
/// | |
/// A zero-based value that indicates which processor(s) can access the memory region. | |
/// A value of 0xFFFF indicates the region is accessible by all processors. | |
/// | |
UINT32 ProcessorNumber; | |
/// | |
/// A zero-based value that indicates the starting bus that can access the memory region. | |
/// | |
UINT16 StartBusNumber; | |
/// | |
/// A zero-based value that indicates the ending bus that can access the memory region. | |
/// A value of 0xFF for a PCI system indicates the region is accessible by all buses and | |
/// is global in scope. An example of the EndBusNumber not being 0xFF is a system | |
/// with two or more peer-to-host PCI bridges. | |
/// | |
UINT16 EndBusNumber; | |
/// | |
/// The type of memory region from the operating system's point of view. | |
/// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS | |
/// command values. | |
/// | |
EFI_MEMORY_REGION_TYPE MemoryRegionType; | |
/// | |
/// The size of the memory region in bytes. | |
/// | |
EFI_EXP_BASE2_DATA MemorySize; | |
/// | |
/// The starting physical address of the memory region. | |
/// | |
EFI_PHYSICAL_ADDRESS MemoryStartAddress; | |
} EFI_MEMORY_SIZE_DATA; | |
#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002 | |
typedef enum _EFI_MEMORY_ARRAY_LOCATION { | |
EfiMemoryArrayLocationOther = 0x01, | |
EfiMemoryArrayLocationUnknown = 0x02, | |
EfiMemoryArrayLocationSystemBoard = 0x03, | |
EfiMemoryArrayLocationIsaAddonCard = 0x04, | |
EfiMemoryArrayLocationEisaAddonCard = 0x05, | |
EfiMemoryArrayLocationPciAddonCard = 0x06, | |
EfiMemoryArrayLocationMcaAddonCard = 0x07, | |
EfiMemoryArrayLocationPcmciaAddonCard = 0x08, | |
EfiMemoryArrayLocationProprietaryAddonCard = 0x09, | |
EfiMemoryArrayLocationNuBus = 0x0A, | |
EfiMemoryArrayLocationPc98C20AddonCard = 0xA0, | |
EfiMemoryArrayLocationPc98C24AddonCard = 0xA1, | |
EfiMemoryArrayLocationPc98EAddonCard = 0xA2, | |
EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3 | |
} EFI_MEMORY_ARRAY_LOCATION; | |
typedef enum _EFI_MEMORY_ARRAY_USE { | |
EfiMemoryArrayUseOther = 0x01, | |
EfiMemoryArrayUseUnknown = 0x02, | |
EfiMemoryArrayUseSystemMemory = 0x03, | |
EfiMemoryArrayUseVideoMemory = 0x04, | |
EfiMemoryArrayUseFlashMemory = 0x05, | |
EfiMemoryArrayUseNonVolatileRam = 0x06, | |
EfiMemoryArrayUseCacheMemory = 0x07 | |
} EFI_MEMORY_ARRAY_USE; | |
typedef enum _EFI_MEMORY_ERROR_CORRECTION { | |
EfiMemoryErrorCorrectionOther = 0x01, | |
EfiMemoryErrorCorrectionUnknown = 0x02, | |
EfiMemoryErrorCorrectionNone = 0x03, | |
EfiMemoryErrorCorrectionParity = 0x04, | |
EfiMemoryErrorCorrectionSingleBitEcc = 0x05, | |
EfiMemoryErrorCorrectionMultiBitEcc = 0x06, | |
EfiMemoryErrorCorrectionCrc = 0x07 | |
} EFI_MEMORY_ERROR_CORRECTION; | |
/// | |
/// This data record refers to the physical memory array. This data record is a structure. | |
/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4: | |
/// - Table 3.3.17.1, Type 16, Offset 0x4 | |
/// - Table 3.3.17.2, Type 16, Offset 0x5 | |
/// - Table 3.3.17.3, Type 16, with the following offsets: | |
/// -- Offset 0x6 | |
/// -- Offset 0x7 | |
/// -- Offset 0xB | |
/// -- Offset 0xD | |
/// | |
typedef struct { | |
/// | |
/// The physical location of the memory array. | |
/// | |
EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation; | |
/// | |
/// The memory array usage. | |
/// | |
EFI_MEMORY_ARRAY_USE MemoryArrayUse; | |
/// | |
/// The primary error correction or detection supported by this memory array. | |
/// | |
EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection; | |
/// | |
/// The maximum memory capacity size in kilobytes. If capacity is unknown, then | |
/// values of MaximumMemoryCapacity.Value = 0x00 and | |
/// MaximumMemoryCapacity.Exponent = 0x8000 are used. | |
/// | |
EFI_EXP_BASE2_DATA MaximumMemoryCapacity; | |
/// | |
/// The number of memory slots or sockets that are available for memory devices | |
/// in this array. | |
/// | |
UINT16 NumberMemoryDevices; | |
} EFI_MEMORY_ARRAY_LOCATION_DATA; | |
#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003 | |
typedef enum _EFI_MEMORY_FORM_FACTOR { | |
EfiMemoryFormFactorOther = 0x01, | |
EfiMemoryFormFactorUnknown = 0x02, | |
EfiMemoryFormFactorSimm = 0x03, | |
EfiMemoryFormFactorSip = 0x04, | |
EfiMemoryFormFactorChip = 0x05, | |
EfiMemoryFormFactorDip = 0x06, | |
EfiMemoryFormFactorZip = 0x07, | |
EfiMemoryFormFactorProprietaryCard = 0x08, | |
EfiMemoryFormFactorDimm = 0x09, | |
EfiMemoryFormFactorTsop = 0x0A, | |
EfiMemoryFormFactorRowOfChips = 0x0B, | |
EfiMemoryFormFactorRimm = 0x0C, | |
EfiMemoryFormFactorSodimm = 0x0D, | |
EfiMemoryFormFactorSrimm = 0x0E, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiMemoryFormFactorFbDimm = 0x0F | |
} EFI_MEMORY_FORM_FACTOR; | |
typedef enum _EFI_MEMORY_ARRAY_TYPE { | |
EfiMemoryTypeOther = 0x01, | |
EfiMemoryTypeUnknown = 0x02, | |
EfiMemoryTypeDram = 0x03, | |
EfiMemoryTypeEdram = 0x04, | |
EfiMemoryTypeVram = 0x05, | |
EfiMemoryTypeSram = 0x06, | |
EfiMemoryTypeRam = 0x07, | |
EfiMemoryTypeRom = 0x08, | |
EfiMemoryTypeFlash = 0x09, | |
EfiMemoryTypeEeprom = 0x0A, | |
EfiMemoryTypeFeprom = 0x0B, | |
EfiMemoryTypeEprom = 0x0C, | |
EfiMemoryTypeCdram = 0x0D, | |
EfiMemoryType3Dram = 0x0E, | |
EfiMemoryTypeSdram = 0x0F, | |
EfiMemoryTypeSgram = 0x10, | |
EfiMemoryTypeRdram = 0x11, | |
EfiMemoryTypeDdr = 0x12, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiMemoryTypeDdr2 = 0x13, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiMemoryTypeDdr2FbDimm = 0x14 | |
} EFI_MEMORY_ARRAY_TYPE; | |
typedef struct { | |
UINT32 Reserved :1; | |
UINT32 Other :1; | |
UINT32 Unknown :1; | |
UINT32 FastPaged :1; | |
UINT32 StaticColumn :1; | |
UINT32 PseudoStatic :1; | |
UINT32 Rambus :1; | |
UINT32 Synchronous :1; | |
UINT32 Cmos :1; | |
UINT32 Edo :1; | |
UINT32 WindowDram :1; | |
UINT32 CacheDram :1; | |
UINT32 Nonvolatile :1; | |
UINT32 Reserved1 :19; | |
} EFI_MEMORY_TYPE_DETAIL; | |
typedef enum { | |
EfiMemoryStateEnabled = 0, | |
EfiMemoryStateUnknown = 1, | |
EfiMemoryStateUnsupported = 2, | |
EfiMemoryStateError = 3, | |
EfiMemoryStateAbsent = 4, | |
EfiMemoryStateDisabled = 5, | |
/// | |
/// Inconsistent with specification here: | |
/// This field is NOT defined in MemSubClass specification 0.9. It's introduced for SMBIOS2.6 specification. | |
/// | |
EfiMemoryStatePartial = 6 | |
} EFI_MEMORY_STATE; | |
/// | |
/// This data record describes a memory device. This data record is a structure. | |
/// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4. | |
/// | |
typedef struct { | |
/// | |
/// A string that identifies the physically labeled socket or board position where the | |
/// memory device is located. | |
/// | |
STRING_REF MemoryDeviceLocator; | |
/// | |
/// A string denoting the physically labeled bank where the memory device is located. | |
/// | |
STRING_REF MemoryBankLocator; | |
/// | |
/// A string denoting the memory manufacturer. | |
/// | |
STRING_REF MemoryManufacturer; | |
/// | |
/// A string denoting the serial number of the memory device. | |
/// | |
STRING_REF MemorySerialNumber; | |
/// | |
/// The asset tag of the memory device. | |
/// | |
STRING_REF MemoryAssetTag; | |
/// | |
/// A string denoting the part number of the memory device. | |
/// | |
STRING_REF MemoryPartNumber; | |
/// | |
/// A link to a memory array structure set. | |
/// | |
EFI_INTER_LINK_DATA MemoryArrayLink; | |
/// | |
/// A link to a memory array structure set. | |
/// | |
EFI_INTER_LINK_DATA MemorySubArrayLink; | |
/// | |
/// The total width in bits of this memory device. If there are no error correcting bits, | |
/// then the total width equals the data width. If the width is unknown, then set the field | |
/// to 0xFFFF. | |
/// | |
UINT16 MemoryTotalWidth; | |
/// | |
/// The data width in bits of the memory device. A data width of 0x00 and a total width | |
/// of 0x08 indicate that the device is used solely for error correction. | |
/// | |
UINT16 MemoryDataWidth; | |
/// | |
/// The size in bytes of the memory device. A value of 0x00 denotes that no device is | |
/// installed, while a value of all Fs denotes that the size is not known. | |
/// | |
EFI_EXP_BASE2_DATA MemoryDeviceSize; | |
/// | |
/// The form factor of the memory device. | |
/// | |
EFI_MEMORY_FORM_FACTOR MemoryFormFactor; | |
/// | |
/// A memory device set that must be populated with all devices of the same type and | |
/// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF | |
/// indicates that the attribute is unknown. Any other value denotes the set number. | |
/// | |
UINT8 MemoryDeviceSet; | |
/// | |
/// The memory type in the socket. | |
/// | |
EFI_MEMORY_ARRAY_TYPE MemoryType; | |
/// | |
/// The memory type details. | |
/// | |
EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail; | |
/// | |
/// The memory speed in megahertz (MHz). A value of 0x00 denotes that | |
/// the speed is unknown. | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the naming is MemoryTypeSpeed. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
EFI_EXP_BASE10_DATA MemorySpeed; | |
/// | |
/// The memory state. | |
/// | |
EFI_MEMORY_STATE MemoryState; | |
} EFI_MEMORY_ARRAY_LINK_DATA; | |
#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004 | |
/// | |
/// This data record refers to a specified physical memory array associated with | |
/// a given memory range. | |
/// | |
typedef struct { | |
/// | |
/// The starting physical address in bytes of memory mapped to a specified physical | |
/// memory array. | |
/// | |
EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress; | |
/// | |
/// The last physical address in bytes of memory mapped to a specified physical memory | |
/// array. | |
/// | |
EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress; | |
/// | |
/// See Physical Memory Array (Type 16) for physical memory array structures. | |
/// | |
EFI_INTER_LINK_DATA PhysicalMemoryArrayLink; | |
/// | |
/// The number of memory devices that form a single row of memory for the address | |
/// partition. | |
/// | |
UINT16 MemoryArrayPartitionWidth; | |
} EFI_MEMORY_ARRAY_START_ADDRESS_DATA; | |
#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005 | |
/// | |
/// This data record refers to a physical memory device that is associated with | |
/// a given memory range. | |
/// | |
typedef struct { | |
/// | |
/// The starting physical address that is associated with the device. | |
/// | |
EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress; | |
/// | |
/// The ending physical address that is associated with the device. | |
/// | |
EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress; | |
/// | |
/// A link to the memory device data structure. | |
/// | |
EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink; | |
/// | |
/// A link to the memory array data structure. | |
/// | |
EFI_INTER_LINK_DATA PhysicalMemoryArrayLink; | |
/// | |
/// The position of the memory device in a row. A value of 0x00 is reserved and a value | |
/// of 0xFF indicates that the position is unknown. | |
/// | |
UINT8 MemoryDevicePartitionRowPosition; | |
/// | |
/// The position of the device in an interleave. | |
/// | |
UINT8 MemoryDeviceInterleavePosition; | |
/// | |
/// The maximum number of consecutive rows from the device that are accessed in a | |
/// single interleave transfer. A value of 0x00 indicates that the device is not interleaved | |
/// and a value of 0xFF indicates that the interleave configuration is unknown. | |
/// | |
UINT8 MemoryDeviceInterleaveDataDepth; | |
} EFI_MEMORY_DEVICE_START_ADDRESS_DATA; | |
// | |
// Memory. Channel Device Type - SMBIOS Type 37 | |
// | |
#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006 | |
typedef enum _EFI_MEMORY_CHANNEL_TYPE { | |
EfiMemoryChannelTypeOther = 1, | |
EfiMemoryChannelTypeUnknown = 2, | |
EfiMemoryChannelTypeRambus = 3, | |
EfiMemoryChannelTypeSyncLink = 4 | |
} EFI_MEMORY_CHANNEL_TYPE; | |
/// | |
/// This data record refers the type of memory that is associated with the channel. This data record is a | |
/// structure. | |
/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4, | |
/// Table 3.3.38, Type 37, with the following offsets: | |
/// - Offset 0x4 | |
/// - Offset 0x5 | |
/// - Offset 0x6 | |
/// | |
typedef struct { | |
/// | |
/// The type of memory that is associated with the channel. | |
/// | |
EFI_MEMORY_CHANNEL_TYPE MemoryChannelType; | |
/// | |
/// The maximum load that is supported by the channel. | |
/// | |
UINT8 MemoryChannelMaximumLoad; | |
/// | |
/// The number of memory devices on this channel. | |
/// | |
UINT8 MemoryChannelDeviceCount; | |
} EFI_MEMORY_CHANNEL_TYPE_DATA; | |
#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007 | |
/// | |
/// This data record refers to the memory device that is associated with the memory channel. This data | |
/// record is a structure. | |
/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4, | |
/// Table 3.3.38, Type 37, with the following offsets: | |
/// - Offset 0x7 | |
/// - Offset 0x8 | |
/// | |
typedef struct { | |
/// | |
/// A number between one and MemoryChannelDeviceCount plus an arbitrary base. | |
/// | |
UINT8 DeviceId; | |
/// | |
/// The Link of the associated memory device. See Memory Device (Type 17) for | |
/// memory devices. | |
/// | |
EFI_INTER_LINK_DATA DeviceLink; | |
/// | |
/// The number of load units that this device consumes. | |
/// | |
UINT8 MemoryChannelDeviceLoad; | |
} EFI_MEMORY_CHANNEL_DEVICE_DATA; | |
// | |
// Memory. Controller Information - SMBIOS Type 5 | |
// | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008 | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
typedef enum { | |
EfiErrorDetectingMethodOther = 1, | |
EfiErrorDetectingMethodUnknown = 2, | |
EfiErrorDetectingMethodNone = 3, | |
EfiErrorDetectingMethodParity = 4, | |
EfiErrorDetectingMethod32Ecc = 5, | |
EfiErrorDetectingMethod64Ecc = 6, | |
EfiErrorDetectingMethod128Ecc = 7, | |
EfiErrorDetectingMethodCrc = 8 | |
} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
typedef struct { | |
UINT8 Other :1; | |
UINT8 Unknown :1; | |
UINT8 None :1; | |
UINT8 SingleBitErrorCorrect :1; | |
UINT8 DoubleBitErrorCorrect :1; | |
UINT8 ErrorScrubbing :1; | |
UINT8 Reserved :2; | |
} EFI_MEMORY_ERROR_CORRECT_CAPABILITY; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
typedef enum { | |
EfiMemoryInterleaveOther = 1, | |
EfiMemoryInterleaveUnknown = 2, | |
EfiMemoryInterleaveOneWay = 3, | |
EfiMemoryInterleaveTwoWay = 4, | |
EfiMemoryInterleaveFourWay = 5, | |
EfiMemoryInterleaveEightWay = 6, | |
EfiMemoryInterleaveSixteenWay = 7 | |
} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
typedef struct { | |
UINT16 Other :1; | |
UINT16 Unknown :1; | |
UINT16 SeventyNs:1; | |
UINT16 SixtyNs :1; | |
UINT16 FiftyNs :1; | |
UINT16 Reserved :11; | |
} EFI_MEMORY_SPEED_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
typedef struct { | |
UINT16 Other :1; | |
UINT16 Unknown :1; | |
UINT16 Standard :1; | |
UINT16 FastPageMode:1; | |
UINT16 EDO :1; | |
UINT16 Parity :1; | |
UINT16 ECC :1; | |
UINT16 SIMM :1; | |
UINT16 DIMM :1; | |
UINT16 BurstEdo :1; | |
UINT16 SDRAM :1; | |
UINT16 Reserved :5; | |
} EFI_MEMORY_SUPPORTED_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
typedef struct { | |
UINT8 Five :1; | |
UINT8 Three :1; | |
UINT8 Two :1; | |
UINT8 Reserved:5; | |
} EFI_MEMORY_MODULE_VOLTAGE_TYPE; | |
/// | |
/// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete | |
/// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
typedef struct { | |
EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod; | |
EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability; | |
EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave; | |
EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave; | |
UINT8 MaxMemoryModuleSize; | |
EFI_MEMORY_SPEED_TYPE MemorySpeedType; | |
EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType; | |
EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage; | |
UINT8 NumberofMemorySlot; | |
EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability; | |
UINT16 *MemoryModuleConfigHandles; | |
} EFI_MEMORY_CONTROLLER_INFORMATION; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 5. | |
/// | |
typedef struct { | |
EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod; | |
EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability; | |
EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave; | |
EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave; | |
UINT8 MaxMemoryModuleSize; | |
EFI_MEMORY_SPEED_TYPE MemorySpeedType; | |
EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType; | |
EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage; | |
UINT8 NumberofMemorySlot; | |
EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability; | |
EFI_INTER_LINK_DATA MemoryModuleConfig[1]; | |
} EFI_MEMORY_CONTROLLER_INFORMATION_DATA; | |
/// | |
/// Memory. Error Information - SMBIOS Type 18 | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 18. | |
/// | |
#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009 | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 18. | |
/// | |
typedef enum { | |
EfiMemoryErrorOther = 1, | |
EfiMemoryErrorUnknown = 2, | |
EfiMemoryErrorOk = 3, | |
EfiMemoryErrorBadRead = 4, | |
EfiMemoryErrorParity = 5, | |
EfiMemoryErrorSigleBit = 6, | |
EfiMemoryErrorDoubleBit = 7, | |
EfiMemoryErrorMultiBit = 8, | |
EfiMemoryErrorNibble = 9, | |
EfiMemoryErrorChecksum = 10, | |
EfiMemoryErrorCrc = 11, | |
EfiMemoryErrorCorrectSingleBit = 12, | |
EfiMemoryErrorCorrected = 13, | |
EfiMemoryErrorUnCorrectable = 14 | |
} EFI_MEMORY_ERROR_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 18. | |
/// | |
typedef enum { | |
EfiMemoryGranularityOther = 1, | |
EfiMemoryGranularityOtherUnknown = 2, | |
EfiMemoryGranularityDeviceLevel = 3, | |
EfiMemoryGranularityMemPartitionLevel = 4 | |
} EFI_MEMORY_ERROR_GRANULARITY_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 18. | |
/// | |
typedef enum { | |
EfiMemoryErrorOperationOther = 1, | |
EfiMemoryErrorOperationUnknown = 2, | |
EfiMemoryErrorOperationRead = 3, | |
EfiMemoryErrorOperationWrite = 4, | |
EfiMemoryErrorOperationPartialWrite = 5 | |
} EFI_MEMORY_ERROR_OPERATION_TYPE; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 18. | |
/// | |
typedef struct { | |
EFI_MEMORY_ERROR_TYPE MemoryErrorType; | |
EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity; | |
EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation; | |
UINT32 VendorSyndrome; | |
UINT32 MemoryArrayErrorAddress; | |
UINT32 DeviceErrorAddress; | |
UINT32 DeviceErrorResolution; | |
} EFI_MEMORY_32BIT_ERROR_INFORMATION; | |
/// | |
/// Memory. Error Information - SMBIOS Type 33. | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 33. | |
/// | |
#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 type 33. | |
/// | |
typedef struct { | |
EFI_MEMORY_ERROR_TYPE MemoryErrorType; | |
EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity; | |
EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation; | |
UINT32 VendorSyndrome; | |
UINT64 MemoryArrayErrorAddress; | |
UINT64 DeviceErrorAddress; | |
UINT32 DeviceErrorResolution; | |
} EFI_MEMORY_64BIT_ERROR_INFORMATION; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It is implementation-specific to simplify the code logic. | |
/// | |
typedef union _EFI_MEMORY_SUBCLASS_RECORDS { | |
EFI_MEMORY_SIZE_DATA SizeData; | |
EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData; | |
EFI_MEMORY_ARRAY_LINK_DATA ArrayLink; | |
EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress; | |
EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress; | |
EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData; | |
EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData; | |
EFI_MEMORY_CONTROLLER_INFORMATION MemoryControllerInfo; | |
EFI_MEMORY_32BIT_ERROR_INFORMATION Memory32bitErrorInfo; | |
EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo; | |
} EFI_MEMORY_SUBCLASS_RECORDS; | |
typedef struct { | |
EFI_SUBCLASS_TYPE1_HEADER Header; | |
EFI_MEMORY_SUBCLASS_RECORDS Record; | |
} EFI_MEMORY_SUBCLASS_DRIVER_DATA; | |
#define EFI_MISC_SUBCLASS_VERSION 0x0100 | |
#pragma pack(1) | |
// | |
// Last PCI Bus Number | |
// | |
#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001 | |
typedef struct { | |
UINT8 LastPciBus; | |
} EFI_MISC_LAST_PCI_BUS_DATA; | |
// | |
// Misc. BIOS Vendor - SMBIOS Type 0 | |
// | |
#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002 | |
typedef struct { | |
UINT64 Reserved1 :2; | |
UINT64 Unknown :1; | |
UINT64 BiosCharacteristicsNotSupported :1; | |
UINT64 IsaIsSupported :1; | |
UINT64 McaIsSupported :1; | |
UINT64 EisaIsSupported :1; | |
UINT64 PciIsSupported :1; | |
UINT64 PcmciaIsSupported :1; | |
UINT64 PlugAndPlayIsSupported :1; | |
UINT64 ApmIsSupported :1; | |
UINT64 BiosIsUpgradable :1; | |
UINT64 BiosShadowingAllowed :1; | |
UINT64 VlVesaIsSupported :1; | |
UINT64 EscdSupportIsAvailable :1; | |
UINT64 BootFromCdIsSupported :1; | |
UINT64 SelectableBootIsSupported :1; | |
UINT64 RomBiosIsSocketed :1; | |
UINT64 BootFromPcmciaIsSupported :1; | |
UINT64 EDDSpecificationIsSupported :1; | |
UINT64 JapaneseNecFloppyIsSupported :1; | |
UINT64 JapaneseToshibaFloppyIsSupported :1; | |
UINT64 Floppy525_360IsSupported :1; | |
UINT64 Floppy525_12IsSupported :1; | |
UINT64 Floppy35_720IsSupported :1; | |
UINT64 Floppy35_288IsSupported :1; | |
UINT64 PrintScreenIsSupported :1; | |
UINT64 Keyboard8042IsSupported :1; | |
UINT64 SerialIsSupported :1; | |
UINT64 PrinterIsSupported :1; | |
UINT64 CgaMonoIsSupported :1; | |
UINT64 NecPc98 :1; | |
UINT64 AcpiIsSupported :1; | |
UINT64 UsbLegacyIsSupported :1; | |
UINT64 AgpIsSupported :1; | |
UINT64 I20BootIsSupported :1; | |
UINT64 Ls120BootIsSupported :1; | |
UINT64 AtapiZipDriveBootIsSupported :1; | |
UINT64 Boot1394IsSupported :1; | |
UINT64 SmartBatteryIsSupported :1; | |
UINT64 BiosBootSpecIsSupported :1; | |
UINT64 FunctionKeyNetworkBootIsSupported :1; | |
UINT64 Reserved :22; | |
} EFI_MISC_BIOS_CHARACTERISTICS; | |
typedef struct { | |
UINT64 BiosReserved :16; | |
UINT64 SystemReserved:16; | |
UINT64 Reserved :32; | |
} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION; | |
typedef struct { | |
STRING_REF BiosVendor; | |
STRING_REF BiosVersion; | |
STRING_REF BiosReleaseDate; | |
EFI_PHYSICAL_ADDRESS BiosStartingAddress; | |
EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize; | |
EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1; | |
EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION | |
BiosCharacteristics2; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 0. | |
/// | |
UINT8 BiosMajorRelease; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 0. | |
/// | |
UINT8 BiosMinorRelease; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 0. | |
/// | |
UINT8 BiosEmbeddedFirmwareMajorRelease; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 0. | |
/// | |
UINT8 BiosEmbeddedFirmwareMinorRelease; | |
} EFI_MISC_BIOS_VENDOR_DATA; | |
// | |
// Misc. System Manufacturer - SMBIOS Type 1 | |
// | |
#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003 | |
typedef enum { | |
EfiSystemWakeupTypeReserved = 0, | |
EfiSystemWakeupTypeOther = 1, | |
EfiSystemWakeupTypeUnknown = 2, | |
EfiSystemWakeupTypeApmTimer = 3, | |
EfiSystemWakeupTypeModemRing = 4, | |
EfiSystemWakeupTypeLanRemote = 5, | |
EfiSystemWakeupTypePowerSwitch = 6, | |
EfiSystemWakeupTypePciPme = 7, | |
EfiSystemWakeupTypeAcPowerRestored = 8 | |
} EFI_MISC_SYSTEM_WAKEUP_TYPE; | |
typedef struct { | |
STRING_REF SystemManufacturer; | |
STRING_REF SystemProductName; | |
STRING_REF SystemVersion; | |
STRING_REF SystemSerialNumber; | |
EFI_GUID SystemUuid; | |
EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 1. | |
/// | |
STRING_REF SystemSKUNumber; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this data structure and corrsponding fields are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 1. | |
/// | |
STRING_REF SystemFamily; | |
} EFI_MISC_SYSTEM_MANUFACTURER_DATA; | |
// | |
// Misc. Base Board Manufacturer - SMBIOS Type 2 | |
// | |
#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004 | |
typedef struct { | |
UINT32 Motherboard :1; | |
UINT32 RequiresDaughterCard :1; | |
UINT32 Removable :1; | |
UINT32 Replaceable :1; | |
UINT32 HotSwappable :1; | |
UINT32 Reserved :27; | |
} EFI_BASE_BOARD_FEATURE_FLAGS; | |
typedef enum { | |
EfiBaseBoardTypeUnknown = 1, | |
EfiBaseBoardTypeOther = 2, | |
EfiBaseBoardTypeServerBlade = 3, | |
EfiBaseBoardTypeConnectivitySwitch = 4, | |
EfiBaseBoardTypeSystemManagementModule = 5, | |
EfiBaseBoardTypeProcessorModule = 6, | |
EfiBaseBoardTypeIOModule = 7, | |
EfiBaseBoardTypeMemoryModule = 8, | |
EfiBaseBoardTypeDaughterBoard = 9, | |
EfiBaseBoardTypeMotherBoard = 0xA, | |
EfiBaseBoardTypeProcessorMemoryModule = 0xB, | |
EfiBaseBoardTypeProcessorIOModule = 0xC, | |
EfiBaseBoardTypeInterconnectBoard = 0xD | |
} EFI_BASE_BOARD_TYPE; | |
typedef struct { | |
STRING_REF BaseBoardManufacturer; | |
STRING_REF BaseBoardProductName; | |
STRING_REF BaseBoardVersion; | |
STRING_REF BaseBoardSerialNumber; | |
STRING_REF BaseBoardAssetTag; | |
STRING_REF BaseBoardChassisLocation; | |
EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags; | |
EFI_BASE_BOARD_TYPE BaseBoardType; | |
EFI_INTER_LINK_DATA BaseBoardChassisLink; | |
UINT32 BaseBoardNumberLinks; | |
EFI_INTER_LINK_DATA LinkN; | |
} EFI_MISC_BASE_BOARD_MANUFACTURER_DATA; | |
// | |
// Misc. System/Chassis Enclosure - SMBIOS Type 3 | |
// | |
#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005 | |
typedef enum { | |
EfiMiscChassisTypeOther = 0x1, | |
EfiMiscChassisTypeUnknown = 0x2, | |
EfiMiscChassisTypeDeskTop = 0x3, | |
EfiMiscChassisTypeLowProfileDesktop = 0x4, | |
EfiMiscChassisTypePizzaBox = 0x5, | |
EfiMiscChassisTypeMiniTower = 0x6, | |
EfiMiscChassisTypeTower = 0x7, | |
EfiMiscChassisTypePortable = 0x8, | |
EfiMiscChassisTypeLapTop = 0x9, | |
EfiMiscChassisTypeNotebook = 0xA, | |
EfiMiscChassisTypeHandHeld = 0xB, | |
EfiMiscChassisTypeDockingStation = 0xC, | |
EfiMiscChassisTypeAllInOne = 0xD, | |
EfiMiscChassisTypeSubNotebook = 0xE, | |
EfiMiscChassisTypeSpaceSaving = 0xF, | |
EfiMiscChassisTypeLunchBox = 0x10, | |
EfiMiscChassisTypeMainServerChassis = 0x11, | |
EfiMiscChassisTypeExpansionChassis = 0x12, | |
EfiMiscChassisTypeSubChassis = 0x13, | |
EfiMiscChassisTypeBusExpansionChassis = 0x14, | |
EfiMiscChassisTypePeripheralChassis = 0x15, | |
EfiMiscChassisTypeRaidChassis = 0x16, | |
EfiMiscChassisTypeRackMountChassis = 0x17, | |
EfiMiscChassisTypeSealedCasePc = 0x18, | |
EfiMiscChassisMultiSystemChassis = 0x19 | |
} EFI_MISC_CHASSIS_TYPE; | |
typedef struct { | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass 0.9 specification, it has the incorrect field name "EFI_MISC_CHASSIS_TYPE". | |
/// Change it to "ChassisType" to pass build. | |
/// | |
UINT32 ChassisType :16; | |
UINT32 ChassisLockPresent:1; | |
UINT32 Reserved :15; | |
} EFI_MISC_CHASSIS_STATUS; | |
typedef enum { | |
EfiChassisStateOther = 0x01, | |
EfiChassisStateUnknown = 0x02, | |
EfiChassisStateSafe = 0x03, | |
EfiChassisStateWarning = 0x04, | |
EfiChassisStateCritical = 0x05, | |
EfiChassisStateNonRecoverable = 0x06 | |
} EFI_MISC_CHASSIS_STATE; | |
typedef enum { | |
EfiChassisSecurityStatusOther = 0x01, | |
EfiChassisSecurityStatusUnknown = 0x02, | |
EfiChassisSecurityStatusNone = 0x03, | |
EfiChassisSecurityStatusExternalInterfaceLockedOut = 0x04, | |
EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05 | |
} EFI_MISC_CHASSIS_SECURITY_STATE; | |
typedef struct { | |
UINT32 RecordType :1; | |
UINT32 Type :7; | |
UINT32 Reserved :24; | |
} EFI_MISC_ELEMENT_TYPE; | |
typedef struct { | |
EFI_MISC_ELEMENT_TYPE ChassisElementType; | |
EFI_INTER_LINK_DATA ChassisElementStructure; | |
EFI_BASE_BOARD_TYPE ChassisBaseBoard; | |
UINT32 ChassisElementMinimum; | |
UINT32 ChassisElementMaximum; | |
} EFI_MISC_ELEMENTS; | |
typedef struct { | |
STRING_REF ChassisManufacturer; | |
STRING_REF ChassisVersion; | |
STRING_REF ChassisSerialNumber; | |
STRING_REF ChassisAssetTag; | |
EFI_MISC_CHASSIS_STATUS ChassisType; | |
EFI_MISC_CHASSIS_STATE ChassisBootupState; | |
EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState; | |
EFI_MISC_CHASSIS_STATE ChassisThermalState; | |
EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState; | |
UINT32 ChassisOemDefined; | |
UINT32 ChassisHeight; | |
UINT32 ChassisNumberPowerCords; | |
UINT32 ChassisElementCount; | |
UINT32 ChassisElementRecordLength; | |
EFI_MISC_ELEMENTS ChassisElements; | |
} EFI_MISC_CHASSIS_MANUFACTURER_DATA; | |
// | |
// Misc. Port Connector Information - SMBIOS Type 8 | |
// | |
#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006 | |
typedef enum { | |
EfiPortConnectorTypeNone = 0x00, | |
EfiPortConnectorTypeCentronics = 0x01, | |
EfiPortConnectorTypeMiniCentronics = 0x02, | |
EfiPortConnectorTypeProprietary = 0x03, | |
EfiPortConnectorTypeDB25Male = 0x04, | |
EfiPortConnectorTypeDB25Female = 0x05, | |
EfiPortConnectorTypeDB15Male = 0x06, | |
EfiPortConnectorTypeDB15Female = 0x07, | |
EfiPortConnectorTypeDB9Male = 0x08, | |
EfiPortConnectorTypeDB9Female = 0x09, | |
EfiPortConnectorTypeRJ11 = 0x0A, | |
EfiPortConnectorTypeRJ45 = 0x0B, | |
EfiPortConnectorType50PinMiniScsi = 0x0C, | |
EfiPortConnectorTypeMiniDin = 0x0D, | |
EfiPortConnectorTypeMicriDin = 0x0E, | |
EfiPortConnectorTypePS2 = 0x0F, | |
EfiPortConnectorTypeInfrared = 0x10, | |
EfiPortConnectorTypeHpHil = 0x11, | |
EfiPortConnectorTypeUsb = 0x12, | |
EfiPortConnectorTypeSsaScsi = 0x13, | |
EfiPortConnectorTypeCircularDin8Male = 0x14, | |
EfiPortConnectorTypeCircularDin8Female = 0x15, | |
EfiPortConnectorTypeOnboardIde = 0x16, | |
EfiPortConnectorTypeOnboardFloppy = 0x17, | |
EfiPortConnectorType9PinDualInline = 0x18, | |
EfiPortConnectorType25PinDualInline = 0x19, | |
EfiPortConnectorType50PinDualInline = 0x1A, | |
EfiPortConnectorType68PinDualInline = 0x1B, | |
EfiPortConnectorTypeOnboardSoundInput = 0x1C, | |
EfiPortConnectorTypeMiniCentronicsType14 = 0x1D, | |
EfiPortConnectorTypeMiniCentronicsType26 = 0x1E, | |
EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F, | |
EfiPortConnectorTypeBNC = 0x20, | |
EfiPortConnectorType1394 = 0x21, | |
EfiPortConnectorTypePC98 = 0xA0, | |
EfiPortConnectorTypePC98Hireso = 0xA1, | |
EfiPortConnectorTypePCH98 = 0xA2, | |
EfiPortConnectorTypePC98Note = 0xA3, | |
EfiPortConnectorTypePC98Full = 0xA4, | |
EfiPortConnectorTypeOther = 0xFF | |
} EFI_MISC_PORT_CONNECTOR_TYPE; | |
typedef enum { | |
EfiPortTypeNone = 0x00, | |
EfiPortTypeParallelXtAtCompatible = 0x01, | |
EfiPortTypeParallelPortPs2 = 0x02, | |
EfiPortTypeParallelPortEcp = 0x03, | |
EfiPortTypeParallelPortEpp = 0x04, | |
EfiPortTypeParallelPortEcpEpp = 0x05, | |
EfiPortTypeSerialXtAtCompatible = 0x06, | |
EfiPortTypeSerial16450Compatible = 0x07, | |
EfiPortTypeSerial16550Compatible = 0x08, | |
EfiPortTypeSerial16550ACompatible = 0x09, | |
EfiPortTypeScsi = 0x0A, | |
EfiPortTypeMidi = 0x0B, | |
EfiPortTypeJoyStick = 0x0C, | |
EfiPortTypeKeyboard = 0x0D, | |
EfiPortTypeMouse = 0x0E, | |
EfiPortTypeSsaScsi = 0x0F, | |
EfiPortTypeUsb = 0x10, | |
EfiPortTypeFireWire = 0x11, | |
EfiPortTypePcmciaTypeI = 0x12, | |
EfiPortTypePcmciaTypeII = 0x13, | |
EfiPortTypePcmciaTypeIII = 0x14, | |
EfiPortTypeCardBus = 0x15, | |
EfiPortTypeAccessBusPort = 0x16, | |
EfiPortTypeScsiII = 0x17, | |
EfiPortTypeScsiWide = 0x18, | |
EfiPortTypePC98 = 0x19, | |
EfiPortTypePC98Hireso = 0x1A, | |
EfiPortTypePCH98 = 0x1B, | |
EfiPortTypeVideoPort = 0x1C, | |
EfiPortTypeAudioPort = 0x1D, | |
EfiPortTypeModemPort = 0x1E, | |
EfiPortTypeNetworkPort = 0x1F, | |
EfiPortType8251Compatible = 0xA0, | |
EfiPortType8251FifoCompatible = 0xA1, | |
EfiPortTypeOther = 0xFF | |
} EFI_MISC_PORT_TYPE; | |
typedef struct { | |
STRING_REF PortInternalConnectorDesignator; | |
STRING_REF PortExternalConnectorDesignator; | |
EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType; | |
EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType; | |
EFI_MISC_PORT_TYPE PortType; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this type of field is defined as EFI_DEVICE_PATH_PROTOCOL, | |
/// which causes the implementation some complexity. Keep it unchanged for backward | |
/// compatibility. | |
/// | |
EFI_MISC_PORT_DEVICE_PATH PortPath; | |
} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA; | |
// | |
// Misc. System Slots - SMBIOS Type 9 | |
// | |
#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007 | |
typedef enum { | |
EfiSlotTypeOther = 0x01, | |
EfiSlotTypeUnknown = 0x02, | |
EfiSlotTypeIsa = 0x03, | |
EfiSlotTypeMca = 0x04, | |
EfiSlotTypeEisa = 0x05, | |
EfiSlotTypePci = 0x06, | |
EfiSlotTypePcmcia = 0x07, | |
EfiSlotTypeVlVesa = 0x08, | |
EfiSlotTypeProprietary = 0x09, | |
EfiSlotTypeProcessorCardSlot = 0x0A, | |
EfiSlotTypeProprietaryMemoryCardSlot = 0x0B, | |
EfiSlotTypeIORiserCardSlot = 0x0C, | |
EfiSlotTypeNuBus = 0x0D, | |
EfiSlotTypePci66MhzCapable = 0x0E, | |
EfiSlotTypeAgp = 0x0F, | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, its naming should be EfiSlotTypeAgp2X | |
/// rather than EfiSlotTypeApg2X. | |
/// | |
EfiSlotTypeAgp2X = 0x10, | |
EfiSlotTypeAgp4X = 0x11, | |
EfiSlotTypePciX = 0x12, | |
EfiSlotTypeAgp8x = 0x13, | |
EfiSlotTypePC98C20 = 0xA0, | |
EfiSlotTypePC98C24 = 0xA1, | |
EfiSlotTypePC98E = 0xA2, | |
EfiSlotTypePC98LocalBus = 0xA3, | |
EfiSlotTypePC98Card = 0xA4, | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, these fields aren't defined. | |
/// They're introduced for SmBios 2.6 specification type 9. | |
/// | |
EfiSlotTypePciExpress = 0xA5, | |
EfiSlotTypePciExpressX1 = 0xA6, | |
EfiSlotTypePciExpressX2 = 0xA7, | |
EfiSlotTypePciExpressX4 = 0xA8, | |
EfiSlotTypePciExpressX8 = 0xA9, | |
EfiSlotTypePciExpressX16 = 0xAA | |
} EFI_MISC_SLOT_TYPE; | |
typedef enum { | |
EfiSlotDataBusWidthOther = 0x01, | |
EfiSlotDataBusWidthUnknown = 0x02, | |
EfiSlotDataBusWidth8Bit = 0x03, | |
EfiSlotDataBusWidth16Bit = 0x04, | |
EfiSlotDataBusWidth32Bit = 0x05, | |
EfiSlotDataBusWidth64Bit = 0x06, | |
EfiSlotDataBusWidth128Bit = 0x07, | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, these fields aren't defined. | |
/// They're introduced for SmBios 2.6 specification type 9. | |
/// | |
EfiSlotDataBusWidth1xOrx1 = 0x8, | |
EfiSlotDataBusWidth2xOrx2 = 0x9, | |
EfiSlotDataBusWidth4xOrx4 = 0xA, | |
EfiSlotDataBusWidth8xOrx8 = 0xB, | |
EfiSlotDataBusWidth12xOrx12 = 0xC, | |
EfiSlotDataBusWidth16xOrx16 = 0xD, | |
EfiSlotDataBusWidth32xOrx32 = 0xE | |
} EFI_MISC_SLOT_DATA_BUS_WIDTH; | |
typedef enum { | |
EfiSlotUsageOther = 1, | |
EfiSlotUsageUnknown = 2, | |
EfiSlotUsageAvailable = 3, | |
EfiSlotUsageInUse = 4 | |
} EFI_MISC_SLOT_USAGE; | |
typedef enum { | |
EfiSlotLengthOther = 1, | |
EfiSlotLengthUnknown = 2, | |
EfiSlotLengthShort = 3, | |
EfiSlotLengthLong = 4 | |
} EFI_MISC_SLOT_LENGTH; | |
typedef struct { | |
UINT32 CharacteristicsUnknown :1; | |
UINT32 Provides50Volts :1; | |
UINT32 Provides33Volts :1; | |
UINT32 SharedSlot :1; | |
UINT32 PcCard16Supported :1; | |
UINT32 CardBusSupported :1; | |
UINT32 ZoomVideoSupported :1; | |
UINT32 ModemRingResumeSupported:1; | |
UINT32 PmeSignalSupported :1; | |
UINT32 HotPlugDevicesSupported :1; | |
UINT32 SmbusSignalSupported :1; | |
UINT32 Reserved :21; | |
} EFI_MISC_SLOT_CHARACTERISTICS; | |
typedef struct { | |
STRING_REF SlotDesignation; | |
EFI_MISC_SLOT_TYPE SlotType; | |
EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth; | |
EFI_MISC_SLOT_USAGE SlotUsage; | |
EFI_MISC_SLOT_LENGTH SlotLength; | |
UINT16 SlotId; | |
EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics; | |
EFI_DEVICE_PATH_PROTOCOL SlotDevicePath; | |
} EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA; | |
// | |
// Misc. Onboard Device - SMBIOS Type 10 | |
// | |
#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008 | |
typedef enum { | |
EfiOnBoardDeviceTypeOther = 1, | |
EfiOnBoardDeviceTypeUnknown = 2, | |
EfiOnBoardDeviceTypeVideo = 3, | |
EfiOnBoardDeviceTypeScsiController = 4, | |
EfiOnBoardDeviceTypeEthernet = 5, | |
EfiOnBoardDeviceTypeTokenRing = 6, | |
EfiOnBoardDeviceTypeSound = 7 | |
} EFI_MISC_ONBOARD_DEVICE_TYPE; | |
typedef struct { | |
UINT32 DeviceType :16; | |
UINT32 DeviceEnabled :1; | |
UINT32 Reserved :15; | |
} EFI_MISC_ONBOARD_DEVICE_STATUS; | |
typedef struct { | |
STRING_REF OnBoardDeviceDescription; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the name is OnBoardDeviceType. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus; | |
EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath; | |
} EFI_MISC_ONBOARD_DEVICE_DATA; | |
// | |
// Misc. BIOS Language Information - SMBIOS Type 11 | |
// | |
#define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009 | |
typedef struct { | |
STRING_REF OemStringRef[1]; | |
} EFI_MISC_OEM_STRING_DATA; | |
// | |
// Misc. System Options - SMBIOS Type 12 | |
// | |
typedef struct { | |
STRING_REF SystemOptionStringRef[1]; | |
} EFI_MISC_SYSTEM_OPTION_STRING_DATA; | |
#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A | |
// | |
// Misc. Number of Installable Languages - SMBIOS Type 13 | |
// | |
#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B | |
typedef struct { | |
UINT32 AbbreviatedLanguageFormat :1; | |
UINT32 Reserved :31; | |
} EFI_MISC_LANGUAGE_FLAGS; | |
typedef struct { | |
UINT16 NumberOfInstallableLanguages; | |
EFI_MISC_LANGUAGE_FLAGS LanguageFlags; | |
UINT16 CurrentLanguageNumber; | |
} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA; | |
// | |
// Misc. System Language String | |
// | |
#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C | |
typedef struct { | |
UINT16 LanguageId; | |
STRING_REF SystemLanguageString; | |
} EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA; | |
// | |
// Group Associations - SMBIOS Type 14 | |
// | |
#define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D | |
typedef struct { | |
STRING_REF GroupName; | |
UINT16 NumberGroupItems; | |
UINT16 GroupId; | |
} EFI_MISC_GROUP_NAME_DATA; | |
// | |
// Group Item Set Element | |
// | |
#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E | |
typedef struct { | |
EFI_GUID SubClass; | |
EFI_INTER_LINK_DATA GroupLink; | |
UINT16 GroupId; | |
UINT16 GroupElementId; | |
} EFI_MISC_GROUP_ITEM_SET_DATA; | |
// | |
// Misc. Pointing Device Type - SMBIOS Type 21 | |
// | |
#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F | |
typedef enum { | |
EfiPointingDeviceTypeOther = 0x01, | |
EfiPointingDeviceTypeUnknown = 0x02, | |
EfiPointingDeviceTypeMouse = 0x03, | |
EfiPointingDeviceTypeTrackBall = 0x04, | |
EfiPointingDeviceTypeTrackPoint = 0x05, | |
EfiPointingDeviceTypeGlidePoint = 0x06, | |
EfiPointingDeviceTouchPad = 0x07, | |
EfiPointingDeviceTouchScreen = 0x08, | |
EfiPointingDeviceOpticalSensor = 0x09 | |
} EFI_MISC_POINTING_DEVICE_TYPE; | |
typedef enum { | |
EfiPointingDeviceInterfaceOther = 0x01, | |
EfiPointingDeviceInterfaceUnknown = 0x02, | |
EfiPointingDeviceInterfaceSerial = 0x03, | |
EfiPointingDeviceInterfacePs2 = 0x04, | |
EfiPointingDeviceInterfaceInfrared = 0x05, | |
EfiPointingDeviceInterfaceHpHil = 0x06, | |
EfiPointingDeviceInterfaceBusMouse = 0x07, | |
EfiPointingDeviceInterfaceADB = 0x08, | |
EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0, | |
EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1, | |
EfiPointingDeviceInterfaceUsb = 0xA2 | |
} EFI_MISC_POINTING_DEVICE_INTERFACE; | |
typedef struct { | |
EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType; | |
EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface; | |
UINT16 NumberPointingDeviceButtons; | |
EFI_DEVICE_PATH_PROTOCOL PointingDevicePath; | |
} EFI_MISC_POINTING_DEVICE_TYPE_DATA; | |
// | |
// Portable Battery - SMBIOS Type 22 | |
// | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the name is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010 | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY. | |
/// And all field namings are also different with specification. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef enum { | |
EfiPortableBatteryDeviceChemistryOther = 1, | |
EfiPortableBatteryDeviceChemistryUnknown = 2, | |
EfiPortableBatteryDeviceChemistryLeadAcid = 3, | |
EfiPortableBatteryDeviceChemistryNickelCadmium = 4, | |
EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5, | |
EfiPortableBatteryDeviceChemistryLithiumIon = 6, | |
EfiPortableBatteryDeviceChemistryZincAir = 7, | |
EfiPortableBatteryDeviceChemistryLithiumPolymer = 8 | |
} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA. | |
/// Also, the name and the order of the fields vary with specifications. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef struct { | |
STRING_REF Location; | |
STRING_REF Manufacturer; | |
STRING_REF ManufactureDate; | |
STRING_REF SerialNumber; | |
STRING_REF DeviceName; | |
EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY | |
DeviceChemistry; | |
UINT16 DesignCapacity; | |
UINT16 DesignVoltage; | |
STRING_REF SBDSVersionNumber; | |
UINT8 MaximumError; | |
UINT16 SBDSSerialNumber; | |
UINT16 SBDSManufactureDate; | |
STRING_REF SBDSDeviceChemistry; | |
UINT8 DesignCapacityMultiplier; | |
UINT32 OEMSpecific; | |
UINT8 BatteryNumber; // Temporary | |
BOOLEAN Valid; // Is entry valid - Temporary | |
} EFI_MISC_PORTABLE_BATTERY; | |
// | |
// Misc. Reset Capabilities - SMBIOS Type 23 | |
// | |
#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011 | |
typedef struct { | |
UINT32 Status :1; | |
UINT32 BootOption :2; | |
UINT32 BootOptionOnLimit :2; | |
UINT32 WatchdogTimerPresent:1; | |
UINT32 Reserved :26; | |
} EFI_MISC_RESET_CAPABILITIES_TYPE; | |
typedef struct { | |
EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities; | |
UINT16 ResetCount; | |
UINT16 ResetLimit; | |
UINT16 ResetTimerInterval; | |
UINT16 ResetTimeout; | |
} EFI_MISC_RESET_CAPABILITIES; | |
typedef struct { | |
EFI_MISC_RESET_CAPABILITIES ResetCapabilities; | |
UINT16 ResetCount; | |
UINT16 ResetLimit; | |
UINT16 ResetTimerInterval; | |
UINT16 ResetTimeout; | |
} EFI_MISC_RESET_CAPABILITIES_DATA; | |
// | |
// Misc. Hardware Security - SMBIOS Type 24 | |
// | |
#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012 | |
/// | |
/// Inconsistent with specification here: | |
/// The MiscSubclass specification 0.9 only mentions the possible value of each field in | |
/// EFI_MISC_HARDWARE_SECURITY_SETTINGS. | |
/// It's implementation-specific in order to to simplify the code logic. | |
/// | |
typedef enum { | |
EfiHardwareSecurityStatusDisabled = 0, | |
EfiHardwareSecurityStatusEnabled = 1, | |
EfiHardwareSecurityStatusNotImplemented = 2, | |
EfiHardwareSecurityStatusUnknown = 3 | |
} EFI_MISC_HARDWARE_SECURITY_STATUS; | |
typedef struct { | |
UINT32 FrontPanelResetStatus :2; | |
UINT32 AdministratorPasswordStatus :2; | |
UINT32 KeyboardPasswordStatus :2; | |
UINT32 PowerOnPasswordStatus :2; | |
UINT32 Reserved :24; | |
} EFI_MISC_HARDWARE_SECURITY_SETTINGS; | |
typedef struct { | |
EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings; | |
} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA; | |
// | |
// System Power Controls - SMBIOS Type 25 | |
// | |
#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013 | |
typedef struct { | |
UINT16 ScheduledPoweronMonth; | |
UINT16 ScheduledPoweronDayOfMonth; | |
UINT16 ScheduledPoweronHour; | |
UINT16 ScheduledPoweronMinute; | |
UINT16 ScheduledPoweronSecond; | |
} EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA; | |
// | |
// Voltage Probe - SMBIOS Type 26 | |
// | |
#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014 | |
typedef struct { | |
UINT32 VoltageProbeSite :5; | |
UINT32 VoltageProbeStatus :3; | |
UINT32 Reserved :24; | |
} EFI_MISC_VOLTAGE_PROBE_LOCATION; | |
typedef struct { | |
STRING_REF VoltageProbeDescription; | |
EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation; | |
EFI_EXP_BASE10_DATA VoltageProbeMaximumValue; | |
EFI_EXP_BASE10_DATA VoltageProbeMinimumValue; | |
EFI_EXP_BASE10_DATA VoltageProbeResolution; | |
EFI_EXP_BASE10_DATA VoltageProbeTolerance; | |
EFI_EXP_BASE10_DATA VoltageProbeAccuracy; | |
EFI_EXP_BASE10_DATA VoltageProbeNominalValue; | |
EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold; | |
EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold; | |
EFI_EXP_BASE10_DATA MDLowerCriticalThreshold; | |
EFI_EXP_BASE10_DATA MDUpperCriticalThreshold; | |
EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold; | |
EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold; | |
UINT32 VoltageProbeOemDefined; | |
} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA; | |
// | |
// Cooling Device - SMBIOS Type 27 | |
// | |
#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015 | |
typedef struct { | |
UINT32 CoolingDevice :5; | |
UINT32 CoolingDeviceStatus :3; | |
UINT32 Reserved :24; | |
} EFI_MISC_COOLING_DEVICE_TYPE; | |
typedef struct { | |
EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType; | |
EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink; | |
UINT8 CoolingDeviceUnitGroup; | |
UINT16 CoolingDeviceNominalSpeed; | |
UINT32 CoolingDeviceOemDefined; | |
} EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA; | |
// | |
// Temperature Probe - SMBIOS Type 28 | |
// | |
#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016 | |
typedef struct { | |
UINT32 TemperatureProbeSite :5; | |
UINT32 TemperatureProbeStatus :3; | |
UINT32 Reserved :24; | |
} EFI_MISC_TEMPERATURE_PROBE_LOCATION; | |
typedef struct { | |
STRING_REF TemperatureProbeDescription; | |
EFI_MISC_TEMPERATURE_PROBE_LOCATION | |
TemperatureProbeLocation; | |
/// | |
/// Inconsistent with specification here: | |
/// MiscSubclass 0.9 specification defines the fields type as EFI_EXP_BASE10_DATA. | |
/// In fact, they should be UINT16 type because they refer to 16bit width data. | |
/// Keeping this inconsistency for backward compatibility. | |
/// | |
UINT16 TemperatureProbeMaximumValue; | |
UINT16 TemperatureProbeMinimumValue; | |
UINT16 TemperatureProbeResolution; | |
UINT16 TemperatureProbeTolerance; | |
UINT16 TemperatureProbeAccuracy; | |
UINT16 TemperatureProbeNominalValue; | |
UINT16 MDLowerNoncriticalThreshold; | |
UINT16 MDUpperNoncriticalThreshold; | |
UINT16 MDLowerCriticalThreshold; | |
UINT16 MDUpperCriticalThreshold; | |
UINT16 MDLowerNonrecoverableThreshold; | |
UINT16 MDUpperNonrecoverableThreshold; | |
UINT32 TemperatureProbeOemDefined; | |
} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA; | |
// | |
// Electrical Current Probe - SMBIOS Type 29 | |
// | |
#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017 | |
typedef struct { | |
UINT32 ElectricalCurrentProbeSite :5; | |
UINT32 ElectricalCurrentProbeStatus :3; | |
UINT32 Reserved :24; | |
} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION; | |
typedef struct { | |
STRING_REF ElectricalCurrentProbeDescription; | |
EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION | |
ElectricalCurrentProbeLocation; | |
EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue; | |
EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue; | |
EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution; | |
EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance; | |
EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy; | |
EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue; | |
EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold; | |
EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold; | |
EFI_EXP_BASE10_DATA MDLowerCriticalThreshold; | |
EFI_EXP_BASE10_DATA MDUpperCriticalThreshold; | |
EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold; | |
EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold; | |
UINT32 ElectricalCurrentProbeOemDefined; | |
} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA; | |
// | |
// Out-of-Band Remote Access - SMBIOS Type 30 | |
// | |
#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018 | |
typedef struct { | |
UINT32 InboundConnectionEnabled :1; | |
UINT32 OutboundConnectionEnabled :1; | |
UINT32 Reserved :30; | |
} EFI_MISC_REMOTE_ACCESS_CONNECTIONS; | |
typedef struct { | |
STRING_REF RemoteAccessManufacturerNameDescription; | |
EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections; | |
} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA; | |
// | |
// Misc. BIS Entry Point - SMBIOS Type 31 | |
// | |
#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019 | |
typedef struct { | |
EFI_PHYSICAL_ADDRESS BisEntryPoint; | |
} EFI_MISC_BIS_ENTRY_POINT_DATA; | |
// | |
// Misc. Boot Information - SMBIOS Type 32 | |
// | |
#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef enum { | |
EfiBootInformationStatusNoError = 0x00, | |
EfiBootInformationStatusNoBootableMedia = 0x01, | |
EfiBootInformationStatusNormalOSFailedLoading = 0x02, | |
EfiBootInformationStatusFirmwareDetectedFailure = 0x03, | |
EfiBootInformationStatusOSDetectedFailure = 0x04, | |
EfiBootInformationStatusUserRequestedBoot = 0x05, | |
EfiBootInformationStatusSystemSecurityViolation = 0x06, | |
EfiBootInformationStatusPreviousRequestedImage = 0x07, | |
EfiBootInformationStatusWatchdogTimerExpired = 0x08, | |
EfiBootInformationStatusStartReserved = 0x09, | |
EfiBootInformationStatusStartOemSpecific = 0x80, | |
EfiBootInformationStatusStartProductSpecific = 0xC0 | |
} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE; | |
typedef struct { | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus; | |
UINT8 BootInformationData[9]; | |
} EFI_MISC_BOOT_INFORMATION_STATUS_DATA; | |
// | |
// Management Device - SMBIOS Type 34 | |
// | |
#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B | |
typedef enum { | |
EfiManagementDeviceTypeOther = 0x01, | |
EfiManagementDeviceTypeUnknown = 0x02, | |
EfiManagementDeviceTypeLm75 = 0x03, | |
EfiManagementDeviceTypeLm78 = 0x04, | |
EfiManagementDeviceTypeLm79 = 0x05, | |
EfiManagementDeviceTypeLm80 = 0x06, | |
EfiManagementDeviceTypeLm81 = 0x07, | |
EfiManagementDeviceTypeAdm9240 = 0x08, | |
EfiManagementDeviceTypeDs1780 = 0x09, | |
EfiManagementDeviceTypeMaxim1617 = 0x0A, | |
EfiManagementDeviceTypeGl518Sm = 0x0B, | |
EfiManagementDeviceTypeW83781D = 0x0C, | |
EfiManagementDeviceTypeHt82H791 = 0x0D | |
} EFI_MISC_MANAGEMENT_DEVICE_TYPE; | |
typedef enum { | |
EfiManagementDeviceAddressTypeOther = 1, | |
EfiManagementDeviceAddressTypeUnknown = 2, | |
EfiManagementDeviceAddressTypeIOPort = 3, | |
EfiManagementDeviceAddressTypeMemory = 4, | |
EfiManagementDeviceAddressTypeSmbus = 5 | |
} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE; | |
typedef struct { | |
STRING_REF ManagementDeviceDescription; | |
EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType; | |
UINTN ManagementDeviceAddress; | |
EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE | |
ManagementDeviceAddressType; | |
} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA; | |
// | |
// Management Device Component - SMBIOS Type 35 | |
// | |
#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C | |
typedef struct { | |
STRING_REF ManagementDeviceComponentDescription; | |
EFI_INTER_LINK_DATA ManagementDeviceLink; | |
EFI_INTER_LINK_DATA ManagementDeviceComponentLink; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this field is NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 35. | |
/// | |
EFI_INTER_LINK_DATA ManagementDeviceThresholdLink; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, this field is NOT defined. | |
/// It's implementation-specific to simplify the code logic. | |
/// | |
UINT8 ComponentType; | |
} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA; | |
// | |
// IPMI Data Record - SMBIOS Type 38 | |
// | |
typedef enum { | |
EfiIpmiOther = 0, | |
EfiIpmiKcs = 1, | |
EfiIpmiSmic = 2, | |
EfiIpmiBt = 3 | |
} EFI_MISC_IPMI_INTERFACE_TYPE; | |
typedef struct { | |
UINT16 IpmiSpecLeastSignificantDigit:4; | |
UINT16 IpmiSpecMostSignificantDigit: 4; | |
UINT16 Reserved: 8; | |
} EFI_MISC_IPMI_SPECIFICATION_REVISION; | |
typedef struct { | |
EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType; | |
EFI_MISC_IPMI_SPECIFICATION_REVISION | |
IpmiSpecificationRevision; | |
UINT16 IpmiI2CSlaveAddress; | |
UINT16 IpmiNvDeviceAddress; | |
UINT64 IpmiBaseAddress; | |
EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath; | |
} EFI_MISC_IPMI_INTERFACE_TYPE_DATA; | |
#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D | |
/// | |
/// The definition above is *NOT* defined in MiscSubclass specifications 0.9. | |
/// It's defined for backward compatibility. | |
/// | |
#define EFI_MISC_IPMI_INTERFACE_TYPE_DATA_RECORD_NUMBER EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER | |
/// | |
/// System Power supply Record - SMBIOS Type 39 | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the type of all fields are UINT32. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef struct { | |
UINT16 PowerSupplyHotReplaceable:1; | |
UINT16 PowerSupplyPresent :1; | |
UINT16 PowerSupplyUnplugged :1; | |
UINT16 InputVoltageRangeSwitch :4; | |
UINT16 PowerSupplyStatus :3; | |
UINT16 PowerSupplyType :4; | |
UINT16 Reserved :2; | |
} EFI_MISC_POWER_SUPPLY_CHARACTERISTICS; | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the structure name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef struct { | |
UINT16 PowerUnitGroup; | |
STRING_REF PowerSupplyLocation; | |
STRING_REF PowerSupplyDeviceName; | |
STRING_REF PowerSupplyManufacturer; | |
STRING_REF PowerSupplySerialNumber; | |
STRING_REF PowerSupplyAssetTagNumber; | |
STRING_REF PowerSupplyModelPartNumber; | |
STRING_REF PowerSupplyRevisionLevel; | |
UINT16 PowerSupplyMaxPowerCapacity; | |
EFI_MISC_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics; | |
EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink; | |
EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink; | |
EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink; | |
} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA; | |
#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E | |
/// | |
/// OEM Data Record - SMBIOS Type 0x80-0xFF | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR. | |
/// Due to this, the structure is commonly used by vendors to construct SmBios type 0x80~0xFF table, | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
typedef struct { | |
UINT8 Type; | |
UINT8 Length; | |
UINT16 Handle; | |
} SMBIOS_STRUCTURE_HDR; | |
typedef struct { | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR. | |
/// Keep it unchanged for backward compatibilty. | |
/// | |
SMBIOS_STRUCTURE_HDR Header; | |
UINT8 RawData[1]; | |
} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA; | |
#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F | |
/// | |
/// Misc. System Event Log - SMBIOS Type 15 | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 15. | |
/// | |
#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020 | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 15. | |
/// | |
typedef struct { | |
UINT16 LogAreaLength; | |
UINT16 LogHeaderStartOffset; | |
UINT16 LogDataStartOffset; | |
UINT8 AccessMethod; | |
UINT8 LogStatus; | |
UINT32 LogChangeToken; | |
UINT32 AccessMethodAddress; | |
UINT8 LogHeaderFormat; | |
UINT8 NumberOfSupportedLogType; | |
UINT8 LengthOfLogDescriptor; | |
} EFI_MISC_SYSTEM_EVENT_LOG_DATA; | |
// | |
// Access Method. | |
// 0x00~0x04: as following definition | |
// 0x05~0x7f: Available for future assignment. | |
// 0x80~0xff: BIOS Vendor/OEM-specific. | |
// | |
#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00 | |
#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01 | |
#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02 | |
#define ACCESS_MEMORY_MAPPED 0x03 | |
#define ACCESS_GPNV 0x04 | |
/// | |
/// Management Device Threshold Data Record - SMBIOS Type 36 | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 36. | |
/// | |
#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021 | |
/// | |
/// Inconsistent with specification here: | |
/// In MiscSubclass specification 0.9, the following data structures are NOT defined. | |
/// It's introduced for SmBios 2.6 specification type 36. | |
/// | |
typedef struct { | |
UINT16 LowerThresNonCritical; | |
UINT16 UpperThresNonCritical; | |
UINT16 LowerThresCritical; | |
UINT16 UpperThresCritical; | |
UINT16 LowerThresNonRecover; | |
UINT16 UpperThresNonRecover; | |
} EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD; | |
// | |
// Declare the following strutures alias to use them more conviniently. | |
// | |
typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS; | |
typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR; | |
typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER; | |
typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER; | |
typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER; | |
typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR; | |
typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION; | |
typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE; | |
typedef EFI_MISC_POINTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA; | |
typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING; | |
typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING; | |
typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES; | |
typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING; | |
typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG; | |
typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT; | |
typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS; | |
typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY; | |
typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION; | |
typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA EFI_MISC_SCHEDULED_POWER_ON_MONTH; | |
typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA EFI_MISC_VOLTAGE_PROBE_DESCRIPTION; | |
typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA EFI_MISC_COOLING_DEVICE_TEMP_LINK; | |
typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION; | |
typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA | |
EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION; | |
typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION; | |
typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION; | |
typedef EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA | |
EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It is implementation-specific to simplify the code logic. | |
/// | |
typedef union { | |
EFI_MISC_LAST_PCI_BUS_DATA LastPciBus; | |
EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor; | |
EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer; | |
EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer; | |
EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer; | |
EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator; | |
EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation; | |
EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice; | |
EFI_MISC_OEM_STRING_DATA MiscOemString; | |
EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString; | |
EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages; | |
EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString; | |
EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog; | |
EFI_MISC_GROUP_NAME_DATA MiscGroupNameData; | |
EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData; | |
EFI_MISC_POINTING_DEVICE_TYPE_DATA MiscPointingDeviceTypeData; | |
EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData; | |
EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData; | |
EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData; | |
EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData; | |
EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData; | |
EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData; | |
EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData; | |
EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA | |
MiscRemoteAccessManufacturerDescriptionData; | |
EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint; | |
EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus; | |
EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData; | |
EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA | |
MiscmangementDeviceComponentDescriptionData; | |
EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData; | |
EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo; | |
EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation; | |
EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold; | |
} EFI_MISC_SUBCLASS_RECORDS; | |
/// | |
/// Inconsistent with specification here: | |
/// In MemSubclass specification 0.9, the following data structures are NOT defined. | |
/// It is implementation-specific to simplify the code logic. | |
/// | |
typedef struct { | |
EFI_SUBCLASS_TYPE1_HEADER Header; | |
EFI_MISC_SUBCLASS_RECORDS Record; | |
} EFI_MISC_SUBCLASS_DRIVER_DATA; | |
#pragma pack() | |
/// | |
/// Inconsistent with specification here: | |
/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined. | |
/// But value is meaningful, 0 means Reserved. | |
/// | |
#define EFI_SUBCLASS_INSTANCE_RESERVED 0 | |
/// | |
/// Inconsistent with specification here: | |
/// In DataHubSubclass specification 0.9 page 16, the following symbol is NOT defined. | |
/// But value is meaningful, -1 means Not Applicable. | |
/// | |
#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF | |
#endif |