refine the DataHubRecords.h to comply with DataHubSubclass/MemSubclass/ProcSubclass/CacheSubclass spec.

add comments to notify there are gaps between code and specs.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8808 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
eric_tian 2009-07-08 07:17:48 +00:00
parent fdf3ad8135
commit 631344e6d3

View File

@ -673,33 +673,36 @@ typedef enum {
/// ///
typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA; typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA;
typedef enum { #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER 0x00000001
ProcessorCoreFrequencyRecordType = 1, #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER 0x00000002
ProcessorFsbFrequencyRecordType = 2, #define EFI_PROCESSOR_VERSION_RECORD_NUMBER 0x00000003
ProcessorVersionRecordType = 3, #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER 0x00000004
ProcessorManufacturerRecordType = 4, #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER 0x00000005
ProcessorSerialNumberRecordType = 5, #define EFI_PROCESSOR_ID_RECORD_NUMBER 0x00000006
ProcessorIdRecordType = 6, #define EFI_PROCESSOR_TYPE_RECORD_NUMBER 0x00000007
ProcessorTypeRecordType = 7, #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER 0x00000008
ProcessorFamilyRecordType = 8, #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER 0x00000009
ProcessorVoltageRecordType = 9, #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER 0x0000000A
ProcessorApicBaseAddressRecordType = 10, #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER 0x0000000B
ProcessorApicIdRecordType = 11, #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER 0x0000000C
ProcessorApicVersionNumberRecordType = 12, #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER 0x0000000D
CpuUcodeRevisionDataRecordType = 13, #define EFI_PROCESSOR_STATUS_RECORD_NUMBER 0x0000000E
ProcessorStatusRecordType = 14, #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER 0x0000000F
ProcessorSocketTypeRecordType = 15, #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER 0x00000010
ProcessorSocketNameRecordType = 16, #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER 0x00000011
CacheAssociationRecordType = 17, #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER 0x00000012
ProcessorMaxCoreFrequencyRecordType = 18, #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER 0x00000013
ProcessorAssetTagRecordType = 19, #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER 0x00000014
ProcessorMaxFsbFrequencyRecordType = 20, #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER 0x00000015
ProcessorPackageNumberRecordType = 21, #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER 0x00000016
ProcessorCoreFrequencyListRecordType = 22, #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER 0x00000017
ProcessorFsbFrequencyListRecordType = 23, #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER 0x00000018
ProcessorHealthStatusRecordType = 24
} EFI_CPU_VARIABLE_RECORD_TYPE;
///
/// Inconsistent with specification here:
/// In ProcSubclass spec 0.9, the union type data structure is NOT defined.
/// It's implementation-specific to simplify the code logic.
///
typedef union { typedef union {
EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList; EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList;
EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList; EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList;
@ -834,7 +837,11 @@ typedef enum {
CacheConfigRecordType = 10 CacheConfigRecordType = 10
} EFI_CACHE_VARIABLE_RECORD_TYPE; } EFI_CACHE_VARIABLE_RECORD_TYPE;
///
/// Inconsistent with specification here:
/// In CacheSubclass spec0.9, the union type data structure is NOT defined.
/// It's implementation-specific to simplify the code logic.
///
typedef union { typedef union {
EFI_CACHE_SIZE_DATA CacheSize; EFI_CACHE_SIZE_DATA CacheSize;
EFI_CACHE_MAXIMUM_SIZE_DATA MaximumCacheSize; EFI_CACHE_MAXIMUM_SIZE_DATA MaximumCacheSize;
@ -1286,8 +1293,18 @@ typedef struct {
// //
// Memory. Controller Information - SMBIOS Type 5 // Memory. Controller Information - SMBIOS Type 5
// //
///
/// Inconsistent with specification here:
/// In MemSubclass spec 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 #define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 5.
///
typedef enum { typedef enum {
EfiErrorDetectingMethodOther = 1, EfiErrorDetectingMethodOther = 1,
EfiErrorDetectingMethodUnknown = 2, EfiErrorDetectingMethodUnknown = 2,
@ -1299,6 +1316,11 @@ typedef enum {
EfiErrorDetectingMethodCrc = 8 EfiErrorDetectingMethodCrc = 8
} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE; } EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 5.
///
typedef struct { typedef struct {
UINT8 Other :1; UINT8 Other :1;
UINT8 Unknown :1; UINT8 Unknown :1;
@ -1309,6 +1331,11 @@ typedef struct {
UINT8 Reserved :2; UINT8 Reserved :2;
} EFI_MEMORY_ERROR_CORRECT_CAPABILITY; } EFI_MEMORY_ERROR_CORRECT_CAPABILITY;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 5.
///
typedef enum { typedef enum {
EfiMemoryInterleaveOther = 1, EfiMemoryInterleaveOther = 1,
EfiMemoryInterleaveUnknown = 2, EfiMemoryInterleaveUnknown = 2,
@ -1319,6 +1346,11 @@ typedef enum {
EfiMemoryInterleaveSixteenWay = 7 EfiMemoryInterleaveSixteenWay = 7
} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE; } EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 5.
///
typedef struct { typedef struct {
UINT16 Other :1; UINT16 Other :1;
UINT16 Unknown :1; UINT16 Unknown :1;
@ -1328,6 +1360,11 @@ typedef struct {
UINT16 Reserved :11; UINT16 Reserved :11;
} EFI_MEMORY_SPEED_TYPE; } EFI_MEMORY_SPEED_TYPE;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 5.
///
typedef struct { typedef struct {
UINT16 Other :1; UINT16 Other :1;
UINT16 Unknown :1; UINT16 Unknown :1;
@ -1343,6 +1380,11 @@ typedef struct {
UINT16 Reserved :5; UINT16 Reserved :5;
} EFI_MEMORY_SUPPORTED_TYPE; } EFI_MEMORY_SUPPORTED_TYPE;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 5.
///
typedef struct { typedef struct {
UINT8 Five :1; UINT8 Five :1;
UINT8 Three :1; UINT8 Three :1;
@ -1350,10 +1392,14 @@ typedef struct {
UINT8 Reserved:5; UINT8 Reserved:5;
} EFI_MEMORY_MODULE_VOLTAGE_TYPE; } EFI_MEMORY_MODULE_VOLTAGE_TYPE;
// ///
// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete /// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete
// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead /// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead
// ///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 5.
///
typedef struct { typedef struct {
EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod; EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;
EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability; EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;
@ -1368,6 +1414,11 @@ typedef struct {
UINT16 *MemoryModuleConfigHandles; UINT16 *MemoryModuleConfigHandles;
} EFI_MEMORY_CONTROLLER_INFORMATION; } EFI_MEMORY_CONTROLLER_INFORMATION;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 5.
///
typedef struct { typedef struct {
EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod; EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;
EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability; EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;
@ -1382,11 +1433,19 @@ typedef struct {
EFI_INTER_LINK_DATA MemoryModuleConfig[1]; EFI_INTER_LINK_DATA MemoryModuleConfig[1];
} EFI_MEMORY_CONTROLLER_INFORMATION_DATA; } EFI_MEMORY_CONTROLLER_INFORMATION_DATA;
// ///
// Memory. Error Information - SMBIOS Type 18 /// Memory. Error Information - SMBIOS Type 18
// ///
/// Inconsistent with specification here:
/// In MemSubclass spec 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 #define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 18.
///
typedef enum { typedef enum {
EfiMemoryErrorOther = 1, EfiMemoryErrorOther = 1,
EfiMemoryErrorUnknown = 2, EfiMemoryErrorUnknown = 2,
@ -1403,14 +1462,22 @@ typedef enum {
EfiMemoryErrorCorrected = 13, EfiMemoryErrorCorrected = 13,
EfiMemoryErrorUnCorrectable = 14 EfiMemoryErrorUnCorrectable = 14
} EFI_MEMORY_ERROR_TYPE; } EFI_MEMORY_ERROR_TYPE;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 18.
///
typedef enum { typedef enum {
EfiMemoryGranularityOther = 1, EfiMemoryGranularityOther = 1,
EfiMemoryGranularityOtherUnknown = 2, EfiMemoryGranularityOtherUnknown = 2,
EfiMemoryGranularityDeviceLevel = 3, EfiMemoryGranularityDeviceLevel = 3,
EfiMemoryGranularityMemPartitionLevel = 4 EfiMemoryGranularityMemPartitionLevel = 4
} EFI_MEMORY_ERROR_GRANULARITY_TYPE; } EFI_MEMORY_ERROR_GRANULARITY_TYPE;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 18.
///
typedef enum { typedef enum {
EfiMemoryErrorOperationOther = 1, EfiMemoryErrorOperationOther = 1,
EfiMemoryErrorOperationUnknown = 2, EfiMemoryErrorOperationUnknown = 2,
@ -1418,7 +1485,11 @@ typedef enum {
EfiMemoryErrorOperationWrite = 4, EfiMemoryErrorOperationWrite = 4,
EfiMemoryErrorOperationPartialWrite = 5 EfiMemoryErrorOperationPartialWrite = 5
} EFI_MEMORY_ERROR_OPERATION_TYPE; } EFI_MEMORY_ERROR_OPERATION_TYPE;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 18.
///
typedef struct { typedef struct {
EFI_MEMORY_ERROR_TYPE MemoryErrorType; EFI_MEMORY_ERROR_TYPE MemoryErrorType;
EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity; EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;
@ -1429,11 +1500,20 @@ typedef struct {
UINT32 DeviceErrorResolution; UINT32 DeviceErrorResolution;
} EFI_MEMORY_32BIT_ERROR_INFORMATION; } EFI_MEMORY_32BIT_ERROR_INFORMATION;
// ///
// Memory. Error Information - SMBIOS Type 33 /// Memory. Error Information - SMBIOS Type 33
// ///
/// Inconsistent with specification here:
/// In MemSubclass spec 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 #define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 type 33.
///
typedef struct { typedef struct {
EFI_MEMORY_ERROR_TYPE MemoryErrorType; EFI_MEMORY_ERROR_TYPE MemoryErrorType;
EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity; EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;
@ -1444,6 +1524,11 @@ typedef struct {
UINT32 DeviceErrorResolution; UINT32 DeviceErrorResolution;
} EFI_MEMORY_64BIT_ERROR_INFORMATION; } EFI_MEMORY_64BIT_ERROR_INFORMATION;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It is implementation-specific to simplify the code logic.
///
typedef union _EFI_MEMORY_SUBCLASS_RECORDS { typedef union _EFI_MEMORY_SUBCLASS_RECORDS {
EFI_MEMORY_SIZE_DATA SizeData; EFI_MEMORY_SIZE_DATA SizeData;
EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData; EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData;
@ -1540,9 +1625,29 @@ typedef struct {
EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1; EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1;
EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION
BiosCharacteristics2; BiosCharacteristics2;
///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
/// It's introduced for SmBios 2.6 spec type 0.
///
UINT8 BiosMajorRelease; UINT8 BiosMajorRelease;
///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
/// It's introduced for SmBios 2.6 spec type 0.
///
UINT8 BiosMinorRelease; UINT8 BiosMinorRelease;
///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
/// It's introduced for SmBios 2.6 spec type 0.
///
UINT8 BiosEmbeddedFirmwareMajorRelease; UINT8 BiosEmbeddedFirmwareMajorRelease;
///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
/// It's introduced for SmBios 2.6 spec type 0.
///
UINT8 BiosEmbeddedFirmwareMinorRelease; UINT8 BiosEmbeddedFirmwareMinorRelease;
} EFI_MISC_BIOS_VENDOR_DATA; } EFI_MISC_BIOS_VENDOR_DATA;
@ -1570,7 +1675,17 @@ typedef struct {
STRING_REF SystemSerialNumber; STRING_REF SystemSerialNumber;
EFI_GUID SystemUuid; EFI_GUID SystemUuid;
EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType; EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType;
///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
/// It's introduced for SmBios 2.6 spec type 1.
///
STRING_REF SystemSKUNumber; STRING_REF SystemSKUNumber;
///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.
/// It's introduced for SmBios 2.6 spec type 1.
///
STRING_REF SystemFamily; STRING_REF SystemFamily;
} EFI_MISC_SYSTEM_MANUFACTURER_DATA; } EFI_MISC_SYSTEM_MANUFACTURER_DATA;
@ -1827,15 +1942,30 @@ typedef enum {
EfiSlotTypeNuBus = 0x0D, EfiSlotTypeNuBus = 0x0D,
EfiSlotTypePci66MhzCapable = 0x0E, EfiSlotTypePci66MhzCapable = 0x0E,
EfiSlotTypeAgp = 0x0F, EfiSlotTypeAgp = 0x0F,
EfiSlotTypeApg2X = 0x10, ///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, there is a typo on this field.
/// Its naming should be EfiSlotTypeAgp2X rather than EfiSlotTypeApg2X.
///
EfiSlotTypeAgp2X = 0x10,
EfiSlotTypeAgp4X = 0x11, EfiSlotTypeAgp4X = 0x11,
EfiSlotTypePciX = 0x12, EfiSlotTypePciX = 0x12,
EfiSlotTypeAgp4x = 0x13, ///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, there is a typo on this field.
/// Its naming should be EfiSlotTypeAgp8X rather than EfiSlotTypeAgp8x.
///
EfiSlotTypeAgp8X = 0x13,
EfiSlotTypePC98C20 = 0xA0, EfiSlotTypePC98C20 = 0xA0,
EfiSlotTypePC98C24 = 0xA1, EfiSlotTypePC98C24 = 0xA1,
EfiSlotTypePC98E = 0xA2, EfiSlotTypePC98E = 0xA2,
EfiSlotTypePC98LocalBus = 0xA3, EfiSlotTypePC98LocalBus = 0xA3,
EfiSlotTypePC98Card = 0xA4, EfiSlotTypePC98Card = 0xA4,
///
/// Inconsistent with specification here:
/// In MiscSubclass spec 0.9, this field isn't defined.
/// It's introduced for SmBios 2.6 spec type 9.
///
EfiSlotTypePciExpress = 0xA5 EfiSlotTypePciExpress = 0xA5
} EFI_MISC_SLOT_TYPE; } EFI_MISC_SLOT_TYPE;
@ -1912,7 +2042,7 @@ typedef struct {
typedef struct { typedef struct {
STRING_REF OnBoardDeviceDescription; STRING_REF OnBoardDeviceDescription;
EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus; EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceType;
EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath; EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath;
} EFI_MISC_ONBOARD_DEVICE_DATA; } EFI_MISC_ONBOARD_DEVICE_DATA;
@ -2019,44 +2149,48 @@ typedef struct {
EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface; EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface;
UINT16 NumberPointingDeviceButtons; UINT16 NumberPointingDeviceButtons;
EFI_DEVICE_PATH_PROTOCOL PointingDevicePath; EFI_DEVICE_PATH_PROTOCOL PointingDevicePath;
} EFI_MISC_PORTING_DEVICE_TYPE_DATA; } EFI_MISC_POINTING_DEVICE_TYPE_DATA;
// //
// Portable Battery - SMBIOS Type 22 // Portable Battery - SMBIOS Type 22
// //
#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010 #define EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER 0x00000010
typedef enum { typedef enum {
EfiPortableBatteryDeviceChemistryOther = 1, EfiBatteryDeviceChemistryTypeOther = 1,
EfiPortableBatteryDeviceChemistryUnknown = 2, EfiBatteryDeviceChemistryTypeUnknown = 2,
EfiPortableBatteryDeviceChemistryLeadAcid = 3, EfiBatteryDeviceChemistryTypeLeadAcid = 3,
EfiPortableBatteryDeviceChemistryNickelCadmium = 4, EfiBatteryDeviceChemistryTypeNickelCadmium = 4,
EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5, EfiBatteryDeviceChemistryTypeNickelMetalHydride = 5,
EfiPortableBatteryDeviceChemistryLithiumIon = 6, EfiBatteryDeviceChemistryTypeLithiumIon = 6,
EfiPortableBatteryDeviceChemistryZincAir = 7, EfiBatteryDeviceChemistryTypeZincAir = 7,
EfiPortableBatteryDeviceChemistryLithiumPolymer = 8 EfiBatteryDeviceChemistryTypeLithiumPolymer = 8
} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY; } EFI_MISC_BATTERY_DEVICE_CHEMISTRY;
typedef struct { typedef struct {
STRING_REF Location; UINT32 Date :5;
STRING_REF Manufacturer; UINT32 Month :4;
STRING_REF ManufactureDate; UINT32 Year :7;
STRING_REF SerialNumber; UINT32 Reserved :16;
STRING_REF DeviceName; } EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE;
EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY
DeviceChemistry; typedef struct {
UINT16 DesignCapacity; STRING_REF BatteryLocation;
UINT16 DesignVoltage; STRING_REF BatteryManufacturer;
STRING_REF SBDSVersionNumber; STRING_REF BatteryManufactureDate;
UINT8 MaximumError; STRING_REF BatterySerialNumber;
UINT16 SBDSSerialNumber; STRING_REF BatteryDeviceName;
UINT16 SBDSManufactureDate; STRING_REF BatterySbdsVersionNumber;
STRING_REF SBDSDeviceChemistry; STRING_REF BatterySbdsDeviceChemistry;
UINT8 DesignCapacityMultiplier; EFI_MISC_BATTERY_DEVICE_CHEMISTRY BatteryDeviceChemistry;
UINT32 OEMSpecific; EFI_EXP_BASE10_DATA BatteryDesignCapacity;
UINT8 BatteryNumber; // Temporary EFI_EXP_BASE10_DATA BatteryDesignVoltage;
BOOLEAN Valid; // Is entry valid - Temporary UINT16 BatteryMaximumError;
} EFI_MISC_PORTABLE_BATTERY; UINT16 BatterySbdsSerialNumber;
EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE
BatterySbdsManufacturingDate;
UINT32 BatteryOemSpecific;
} EFI_MISC_BATTERY_LOCATION_DATA;
// //
// Misc. Reset Capabilities - SMBIOS Type 23 // Misc. Reset Capabilities - SMBIOS Type 23
@ -2092,6 +2226,12 @@ typedef struct {
// //
#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012 #define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012
///
/// Inconsistent with specification here:
/// In MiscSubclass spec0.9, it only mention the possible value of each field in
/// EFI_MISC_HARDWARE_SECURITY_SETTINGS.
/// It's implementation-specific to simplify the code logic.
///
typedef enum { typedef enum {
EfiHardwareSecurityStatusDisabled = 0, EfiHardwareSecurityStatusDisabled = 0,
EfiHardwareSecurityStatusEnabled = 1, EfiHardwareSecurityStatusEnabled = 1,
@ -2100,11 +2240,11 @@ typedef enum {
} EFI_MISC_HARDWARE_SECURITY_STATUS; } EFI_MISC_HARDWARE_SECURITY_STATUS;
typedef struct { typedef struct {
EFI_MISC_HARDWARE_SECURITY_STATUS FrontPanelResetStatus :2; UINT32 FrontPanelResetStatus :2;
EFI_MISC_HARDWARE_SECURITY_STATUS AdministratorPasswordStatus :2; UINT32 AdministratorPasswordStatus :2;
EFI_MISC_HARDWARE_SECURITY_STATUS KeyboardPasswordStatus :2; UINT32 KeyboardPasswordStatus :2;
EFI_MISC_HARDWARE_SECURITY_STATUS PowerOnPasswordStatus :2; UINT32 PowerOnPasswordStatus :2;
EFI_MISC_HARDWARE_SECURITY_STATUS Reserved :24; UINT32 Reserved :24;
} EFI_MISC_HARDWARE_SECURITY_SETTINGS; } EFI_MISC_HARDWARE_SECURITY_SETTINGS;
typedef struct { typedef struct {
@ -2277,10 +2417,10 @@ typedef enum {
EfiBootInformationStatusStartReserved = 0x09, EfiBootInformationStatusStartReserved = 0x09,
EfiBootInformationStatusStartOemSpecific = 0x80, EfiBootInformationStatusStartOemSpecific = 0x80,
EfiBootInformationStatusStartProductSpecific = 0xC0 EfiBootInformationStatusStartProductSpecific = 0xC0
} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE; } EFI_MISC_BOOT_INFORMATION_STATUS_TYPE;
typedef struct { typedef struct {
EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus; EFI_MISC_BOOT_INFORMATION_STATUS_TYPE BootInformationStatus;
UINT8 BootInformationData[9]; UINT8 BootInformationData[9];
} EFI_MISC_BOOT_INFORMATION_STATUS_DATA; } EFI_MISC_BOOT_INFORMATION_STATUS_DATA;
@ -2331,6 +2471,11 @@ typedef struct {
STRING_REF ManagementDeviceComponentDescription; STRING_REF ManagementDeviceComponentDescription;
EFI_INTER_LINK_DATA ManagementDeviceLink; EFI_INTER_LINK_DATA ManagementDeviceLink;
EFI_INTER_LINK_DATA ManagementDeviceComponentLink; EFI_INTER_LINK_DATA ManagementDeviceComponentLink;
///
/// Inconsistent with specification here:
/// In MiscSubclass spec0.9, this field is NOT defined.
/// It's introduced for SmBios 2.6 spec type 35.
///
EFI_INTER_LINK_DATA ManagementDeviceThresholdLink; EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;
} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA; } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;
@ -2366,30 +2511,30 @@ typedef struct {
//System Power supply Record - SMBIOS Type 39 //System Power supply Record - SMBIOS Type 39
// //
typedef struct { typedef struct {
UINT16 PowerSupplyHotReplaceable:1; UINT32 PowerSupplyHotReplaceable:1;
UINT16 PowerSupplyPresent :1; UINT32 PowerSupplyPresent :1;
UINT16 PowerSupplyUnplugged :1; UINT32 PowerSupplyUnplugged :1;
UINT16 InputVoltageRangeSwitch :4; UINT32 InputVoltageRangeSwitch :4;
UINT16 PowerSupplyStatus :3; UINT32 PowerSupplyStatus :3;
UINT16 PowerSupplyType :4; UINT32 PowerSupplyType :4;
UINT16 Reserved :2; UINT32 Reserved :18;
} POWER_SUPPLY_CHARACTERISTICS; } EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;
typedef struct { typedef struct {
UINT16 PowerUnitGroup; UINT16 PowerUnitGroup;
STRING_REF PowerSupplyLocation; STRING_REF PowerSupplyLocation;
STRING_REF PowerSupplyDeviceName; STRING_REF PowerSupplyDeviceName;
STRING_REF PowerSupplyManufacturer; STRING_REF PowerSupplyManufacturer;
STRING_REF PowerSupplySerialNumber; STRING_REF PowerSupplySerialNumber;
STRING_REF PowerSupplyAssetTagNumber; STRING_REF PowerSupplyAssetTagNumber;
STRING_REF PowerSupplyModelPartNumber; STRING_REF PowerSupplyModelPartNumber;
STRING_REF PowerSupplyRevisionLevel; STRING_REF PowerSupplyRevisionLevel;
UINT16 PowerSupplyMaxPowerCapacity; UINT16 PowerSupplyMaxPowerCapacity;
POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics; EFI_MISC_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;
EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink; EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;
EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink; EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;
EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink; EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;
} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA; } EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA;
#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E #define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E
@ -2400,19 +2545,29 @@ typedef struct {
UINT8 Type; UINT8 Type;
UINT8 Length; UINT8 Length;
UINT16 Handle; UINT16 Handle;
} SMBIOS_STRUCTURE_HDR; } EFI_SMBIOS_STRUCTURE_HDR;
typedef struct { typedef struct {
SMBIOS_STRUCTURE_HDR Header; EFI_SMBIOS_STRUCTURE_HDR Header;
UINT8 RawData[1]; UINT8 RawData[1];
} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA; } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;
#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F #define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F
// ///
// Misc. System Event Log - SMBIOS Type 15 /// Misc. System Event Log - SMBIOS Type 15
// ///
/// Inconsistent with specification here:
/// In MiscSubclass spec0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 spec type 15.
///
#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020 #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020
///
/// Inconsistent with specification here:
/// In MiscSubclass spec0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 spec type 15.
///
typedef struct { typedef struct {
UINT16 LogAreaLength; UINT16 LogAreaLength;
UINT16 LogHeaderStartOffset; UINT16 LogHeaderStartOffset;
@ -2438,11 +2593,19 @@ typedef struct {
#define ACCESS_MEMORY_MAPPED 0x03 #define ACCESS_MEMORY_MAPPED 0x03
#define ACCESS_GPNV 0x04 #define ACCESS_GPNV 0x04
// ///
//Management Device Threshold Data Record - SMBIOS Type 36 /// Management Device Threshold Data Record - SMBIOS Type 36
// ///
/// Inconsistent with specification here:
/// In MiscSubclass spec0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 spec type 36.
///
#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021 #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021
///
/// Inconsistent with specification here:
/// In MiscSubclass spec0.9, the following data structures are NOT defined.
/// It's introduced for SmBios 2.6 spec type 36.
///
typedef struct { typedef struct {
UINT16 LowerThresNonCritical; UINT16 LowerThresNonCritical;
UINT16 UpperThresNonCritical; UINT16 UpperThresNonCritical;
@ -2463,7 +2626,7 @@ typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUF
typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR; 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_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION;
typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE; typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE;
typedef EFI_MISC_PORTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA; 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_OEM_STRING_DATA EFI_MISC_OEM_STRING;
typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_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_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;
@ -2471,7 +2634,7 @@ typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUA
typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG; 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_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT;
typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS; 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_POWER_SUPPLY_UNIT_GROUP_DATA EFI_MISC_SYSTEM_POWER_SUPPLY;
typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION; 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_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_VOLTAGE_PROBE_DESCRIPTION_DATA EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;
@ -2482,6 +2645,11 @@ typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_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_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;
///
/// Inconsistent with specification here:
/// In MemSubclass spec 0.9, the following data structures are NOT defined.
/// It is implementation-specific to simplify the code logic.
///
typedef union { typedef union {
EFI_MISC_LAST_PCI_BUS_DATA LastPciBus; EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;
EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor; EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor;
@ -2498,7 +2666,7 @@ typedef union {
EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog; EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog;
EFI_MISC_GROUP_NAME_DATA MiscGroupNameData; EFI_MISC_GROUP_NAME_DATA MiscGroupNameData;
EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData; EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData;
EFI_MISC_PORTING_DEVICE_TYPE_DATA MiscPortingDeviceTypeData; EFI_MISC_POINTING_DEVICE_TYPE_DATA MiscPointingDeviceTypeData;
EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData; EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData;
EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData; EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData;
EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData; EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData;
@ -2514,14 +2682,14 @@ typedef union {
EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA
MiscmangementDeviceComponentDescriptionData; MiscmangementDeviceComponentDescriptionData;
EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData; EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData;
EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo; EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA MiscPowerSupplyInfo;
EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation; EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation;
EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold; EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold;
} EFI_MISC_SUBCLASS_RECORDS; } EFI_MISC_SUBCLASS_RECORDS;
// ///
// /// Sub Class Header type1
// ///
typedef struct { typedef struct {
EFI_SUBCLASS_TYPE1_HEADER Header; EFI_SUBCLASS_TYPE1_HEADER Header;
EFI_MISC_SUBCLASS_RECORDS Record; EFI_MISC_SUBCLASS_RECORDS Record;
@ -2529,11 +2697,17 @@ typedef struct {
#pragma pack() #pragma pack()
// ///
// Sub Class Header type1 /// Inconsistent with specification here:
// /// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.
/// But value is meaningful, 0 means Reserved.
///
#define EFI_SUBCLASS_INSTANCE_RESERVED 0 #define EFI_SUBCLASS_INSTANCE_RESERVED 0
#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF //16 bit ///
/// Inconsistent with specification here:
/// In DataHubSubclass spec 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 #endif