From: eric_tian Date: Wed, 8 Jul 2009 07:17:48 +0000 (+0000) Subject: refine the DataHubRecords.h to comply with DataHubSubclass/MemSubclass/ProcSubclass... X-Git-Tag: edk2-stable201903~17500 X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=commitdiff_plain;h=631344e6d3ab40d64155d65f0b938de96db55baa 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 --- diff --git a/IntelFrameworkPkg/Include/Framework/DataHubRecords.h b/IntelFrameworkPkg/Include/Framework/DataHubRecords.h index 38423d1507..1b484b862d 100644 --- a/IntelFrameworkPkg/Include/Framework/DataHubRecords.h +++ b/IntelFrameworkPkg/Include/Framework/DataHubRecords.h @@ -673,33 +673,36 @@ typedef enum { /// typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA; -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 -} EFI_CPU_VARIABLE_RECORD_TYPE; +#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 +/// +/// 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 { EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList; EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList; @@ -834,7 +837,11 @@ typedef enum { CacheConfigRecordType = 10 } 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 { EFI_CACHE_SIZE_DATA CacheSize; EFI_CACHE_MAXIMUM_SIZE_DATA MaximumCacheSize; @@ -1286,8 +1293,18 @@ typedef struct { // // 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 +/// +/// 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 { EfiErrorDetectingMethodOther = 1, EfiErrorDetectingMethodUnknown = 2, @@ -1299,6 +1316,11 @@ typedef enum { EfiErrorDetectingMethodCrc = 8 } 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 { UINT8 Other :1; UINT8 Unknown :1; @@ -1309,6 +1331,11 @@ typedef struct { UINT8 Reserved :2; } 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 { EfiMemoryInterleaveOther = 1, EfiMemoryInterleaveUnknown = 2, @@ -1319,6 +1346,11 @@ typedef enum { EfiMemoryInterleaveSixteenWay = 7 } 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 { UINT16 Other :1; UINT16 Unknown :1; @@ -1328,6 +1360,11 @@ typedef struct { UINT16 Reserved :11; } 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 { UINT16 Other :1; UINT16 Unknown :1; @@ -1343,6 +1380,11 @@ typedef struct { UINT16 Reserved :5; } 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 { UINT8 Five :1; UINT8 Three :1; @@ -1350,10 +1392,14 @@ typedef struct { UINT8 Reserved:5; } EFI_MEMORY_MODULE_VOLTAGE_TYPE; -// -// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete -// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead -// +/// +/// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete +/// 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 { EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod; EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability; @@ -1368,6 +1414,11 @@ typedef struct { UINT16 *MemoryModuleConfigHandles; } 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 { EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod; EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability; @@ -1382,11 +1433,19 @@ typedef struct { EFI_INTER_LINK_DATA MemoryModuleConfig[1]; } 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 - +/// +/// 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 { EfiMemoryErrorOther = 1, EfiMemoryErrorUnknown = 2, @@ -1403,14 +1462,22 @@ typedef enum { EfiMemoryErrorCorrected = 13, EfiMemoryErrorUnCorrectable = 14 } 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 { EfiMemoryGranularityOther = 1, EfiMemoryGranularityOtherUnknown = 2, EfiMemoryGranularityDeviceLevel = 3, EfiMemoryGranularityMemPartitionLevel = 4 } 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 { EfiMemoryErrorOperationOther = 1, EfiMemoryErrorOperationUnknown = 2, @@ -1418,7 +1485,11 @@ typedef enum { EfiMemoryErrorOperationWrite = 4, EfiMemoryErrorOperationPartialWrite = 5 } 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 { EFI_MEMORY_ERROR_TYPE MemoryErrorType; EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity; @@ -1429,11 +1500,20 @@ typedef struct { UINT32 DeviceErrorResolution; } 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 +/// +/// 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 { EFI_MEMORY_ERROR_TYPE MemoryErrorType; EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity; @@ -1444,6 +1524,11 @@ typedef struct { UINT32 DeviceErrorResolution; } 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 { EFI_MEMORY_SIZE_DATA SizeData; EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData; @@ -1540,9 +1625,29 @@ typedef struct { EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1; EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION 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; + /// + /// 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; + /// + /// 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; + /// + /// 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; } EFI_MISC_BIOS_VENDOR_DATA; @@ -1570,7 +1675,17 @@ typedef struct { STRING_REF SystemSerialNumber; EFI_GUID SystemUuid; 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; + /// + /// 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; } EFI_MISC_SYSTEM_MANUFACTURER_DATA; @@ -1827,15 +1942,30 @@ typedef enum { EfiSlotTypeNuBus = 0x0D, EfiSlotTypePci66MhzCapable = 0x0E, 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, 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, EfiSlotTypePC98C24 = 0xA1, EfiSlotTypePC98E = 0xA2, EfiSlotTypePC98LocalBus = 0xA3, 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 } EFI_MISC_SLOT_TYPE; @@ -1912,7 +2042,7 @@ typedef struct { typedef struct { STRING_REF OnBoardDeviceDescription; - EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus; + EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceType; EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath; } EFI_MISC_ONBOARD_DEVICE_DATA; @@ -2019,44 +2149,48 @@ typedef struct { EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface; UINT16 NumberPointingDeviceButtons; EFI_DEVICE_PATH_PROTOCOL PointingDevicePath; -} EFI_MISC_PORTING_DEVICE_TYPE_DATA; +} EFI_MISC_POINTING_DEVICE_TYPE_DATA; // // Portable Battery - SMBIOS Type 22 // -#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010 +#define EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER 0x00000010 -typedef enum { - EfiPortableBatteryDeviceChemistryOther = 1, - EfiPortableBatteryDeviceChemistryUnknown = 2, - EfiPortableBatteryDeviceChemistryLeadAcid = 3, - EfiPortableBatteryDeviceChemistryNickelCadmium = 4, - EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5, - EfiPortableBatteryDeviceChemistryLithiumIon = 6, - EfiPortableBatteryDeviceChemistryZincAir = 7, - EfiPortableBatteryDeviceChemistryLithiumPolymer = 8 -} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY; - -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; +typedef enum { + EfiBatteryDeviceChemistryTypeOther = 1, + EfiBatteryDeviceChemistryTypeUnknown = 2, + EfiBatteryDeviceChemistryTypeLeadAcid = 3, + EfiBatteryDeviceChemistryTypeNickelCadmium = 4, + EfiBatteryDeviceChemistryTypeNickelMetalHydride = 5, + EfiBatteryDeviceChemistryTypeLithiumIon = 6, + EfiBatteryDeviceChemistryTypeZincAir = 7, + EfiBatteryDeviceChemistryTypeLithiumPolymer = 8 +} EFI_MISC_BATTERY_DEVICE_CHEMISTRY; + +typedef struct { + UINT32 Date :5; + UINT32 Month :4; + UINT32 Year :7; + UINT32 Reserved :16; +} EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE; + +typedef struct { + STRING_REF BatteryLocation; + STRING_REF BatteryManufacturer; + STRING_REF BatteryManufactureDate; + STRING_REF BatterySerialNumber; + STRING_REF BatteryDeviceName; + STRING_REF BatterySbdsVersionNumber; + STRING_REF BatterySbdsDeviceChemistry; + EFI_MISC_BATTERY_DEVICE_CHEMISTRY BatteryDeviceChemistry; + EFI_EXP_BASE10_DATA BatteryDesignCapacity; + EFI_EXP_BASE10_DATA BatteryDesignVoltage; + UINT16 BatteryMaximumError; + UINT16 BatterySbdsSerialNumber; + EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE + BatterySbdsManufacturingDate; + UINT32 BatteryOemSpecific; +} EFI_MISC_BATTERY_LOCATION_DATA; // // Misc. Reset Capabilities - SMBIOS Type 23 @@ -2092,6 +2226,12 @@ typedef struct { // #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 { EfiHardwareSecurityStatusDisabled = 0, EfiHardwareSecurityStatusEnabled = 1, @@ -2100,11 +2240,11 @@ typedef enum { } EFI_MISC_HARDWARE_SECURITY_STATUS; typedef struct { - EFI_MISC_HARDWARE_SECURITY_STATUS FrontPanelResetStatus :2; - EFI_MISC_HARDWARE_SECURITY_STATUS AdministratorPasswordStatus :2; - EFI_MISC_HARDWARE_SECURITY_STATUS KeyboardPasswordStatus :2; - EFI_MISC_HARDWARE_SECURITY_STATUS PowerOnPasswordStatus :2; - EFI_MISC_HARDWARE_SECURITY_STATUS Reserved :24; + UINT32 FrontPanelResetStatus :2; + UINT32 AdministratorPasswordStatus :2; + UINT32 KeyboardPasswordStatus :2; + UINT32 PowerOnPasswordStatus :2; + UINT32 Reserved :24; } EFI_MISC_HARDWARE_SECURITY_SETTINGS; typedef struct { @@ -2277,10 +2417,10 @@ typedef enum { EfiBootInformationStatusStartReserved = 0x09, EfiBootInformationStatusStartOemSpecific = 0x80, EfiBootInformationStatusStartProductSpecific = 0xC0 -} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE; +} EFI_MISC_BOOT_INFORMATION_STATUS_TYPE; typedef struct { - EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus; + EFI_MISC_BOOT_INFORMATION_STATUS_TYPE BootInformationStatus; UINT8 BootInformationData[9]; } EFI_MISC_BOOT_INFORMATION_STATUS_DATA; @@ -2331,6 +2471,11 @@ typedef struct { STRING_REF ManagementDeviceComponentDescription; EFI_INTER_LINK_DATA ManagementDeviceLink; 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_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA; @@ -2366,30 +2511,30 @@ typedef struct { //System Power supply Record - SMBIOS Type 39 // typedef struct { - UINT16 PowerSupplyHotReplaceable:1; - UINT16 PowerSupplyPresent :1; - UINT16 PowerSupplyUnplugged :1; - UINT16 InputVoltageRangeSwitch :4; - UINT16 PowerSupplyStatus :3; - UINT16 PowerSupplyType :4; - UINT16 Reserved :2; -} POWER_SUPPLY_CHARACTERISTICS; - -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; - 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; + UINT32 PowerSupplyHotReplaceable:1; + UINT32 PowerSupplyPresent :1; + UINT32 PowerSupplyUnplugged :1; + UINT32 InputVoltageRangeSwitch :4; + UINT32 PowerSupplyStatus :3; + UINT32 PowerSupplyType :4; + UINT32 Reserved :18; +} EFI_MISC_POWER_SUPPLY_CHARACTERISTICS; + +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_POWER_SUPPLY_UNIT_GROUP_DATA; #define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E @@ -2400,19 +2545,29 @@ typedef struct { UINT8 Type; UINT8 Length; UINT16 Handle; -} SMBIOS_STRUCTURE_HDR; +} EFI_SMBIOS_STRUCTURE_HDR; typedef struct { - SMBIOS_STRUCTURE_HDR Header; + EFI_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 -// +/// +/// 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 + +/// +/// 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 { UINT16 LogAreaLength; UINT16 LogHeaderStartOffset; @@ -2438,11 +2593,19 @@ typedef struct { #define ACCESS_MEMORY_MAPPED 0x03 #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 - +/// +/// 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 { UINT16 LowerThresNonCritical; 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_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION; 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_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING; 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_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_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_SCHEDULED_POWER_ON_MONTH_DATA EFI_MISC_SCHEDULED_POWER_ON_MONTH; 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_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 { EFI_MISC_LAST_PCI_BUS_DATA LastPciBus; EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor; @@ -2498,7 +2666,7 @@ typedef union { EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog; EFI_MISC_GROUP_NAME_DATA MiscGroupNameData; 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_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData; EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData; @@ -2514,14 +2682,14 @@ typedef union { EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA MiscmangementDeviceComponentDescriptionData; 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_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold; } EFI_MISC_SUBCLASS_RECORDS; -// -// -// +/// +/// Sub Class Header type1 +/// typedef struct { EFI_SUBCLASS_TYPE1_HEADER Header; EFI_MISC_SUBCLASS_RECORDS Record; @@ -2529,11 +2697,17 @@ typedef struct { #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_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