#ifndef _DATAHUB_RECORDS_H_\r
#define _DATAHUB_RECORDS_H_\r
\r
-#include <PiPei.h>\r
-#include <Protocol/DevicePath.h>\r
-#include <Protocol/FrameworkHii.h>\r
+#include <Framework/FrameworkInternalFormRepresentation.h>\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the value is 0x0100.\r
+/// Keep it unchanged from the perspective of binary consistency.\r
+///\r
#define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000\r
\r
#pragma pack(1)\r
EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
} FLOOPY_CONN_DEVICE_PATH;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
+/// It's implementation-specific to simplify the code logic.\r
+///\r
typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
USB_PORT_DEVICE_PATH UsbDevicePath;\r
IDE_DEVICE_PATH IdeDevicePath;\r
\r
#pragma pack()\r
\r
-//\r
-// String Token Definition\r
-//\r
+///\r
+/// String Token Definition\r
+///\r
+/// Inconsistent with specification here: \r
+/// The macro isn't defined by any spec.\r
+/// Keep it unchanged for backward compatibility.\r
+///\r
#define EFI_STRING_TOKEN UINT16\r
\r
///\r
///\r
/// The INT16 number by which to multiply the base-2 representation.\r
///\r
- UINT16 Value;\r
+ INT16 Value;\r
///\r
/// The INT16 number by which to raise the base-2 calculation. \r
///\r
- UINT16 Exponent;\r
+ INT16 Exponent;\r
} EFI_EXP_BASE10_DATA;\r
\r
typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means \r
/// that the processor/driver supports automatic frequency selection. \r
///\r
+/// Inconsistent with specification here: \r
+/// According to MiscSubclass 0.9 spec, it should be a pointer since it refers to a list of frequencies.\r
+///\r
typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
\r
///\r
UINT32 ProcessorReserved2: 4;\r
} EFI_PROCESSOR_SIGNATURE;\r
\r
+\r
+///\r
+/// Inconsistent with specification here: \r
+/// The name of third field in ProcSubClass spec0.9 is LogicalProcessorCount.\r
+/// Keep it unchanged for backward compatibility.\r
+///\r
typedef struct {\r
- UINT32 ProcessorBrandIndex :8;\r
- UINT32 ProcessorClflush :8;\r
- UINT32 ProcessorReserved :8;\r
- UINT32 ProcessorDfltApicId :8;\r
+ UINT32 ProcessorBrandIndex :8;\r
+ UINT32 ProcessorClflush :8;\r
+ UINT32 ProcessorReserved :8;\r
+ UINT32 ProcessorDfltApicId :8;\r
} EFI_PROCESSOR_MISC_INFO;\r
\r
typedef struct {\r
/// This data record is 4 bytes in length. \r
///\r
typedef enum {\r
- EfiProcessorFamilyOther = 1,\r
- EfiProcessorFamilyUnknown = 2,\r
- EfiProcessorFamily8086 = 3,\r
- EfiProcessorFamily80286 = 4,\r
- EfiProcessorFamilyIntel386 = 5,\r
- EfiProcessorFamilyIntel486 = 6,\r
- EfiProcessorFamily8087 = 7,\r
- EfiProcessorFamily80287 = 8,\r
- EfiProcessorFamily80387 = 9,\r
- EfiProcessorFamily80487 = 0x0A,\r
- EfiProcessorFamilyPentium = 0x0B,\r
- EfiProcessorFamilyPentiumPro = 0x0C,\r
- EfiProcessorFamilyPentiumII = 0x0D,\r
- EfiProcessorFamilyPentiumMMX = 0x0E,\r
- EfiProcessorFamilyCeleron = 0x0F,\r
- EfiProcessorFamilyPentiumIIXeon = 0x10,\r
- EfiProcessorFamilyPentiumIII = 0x11,\r
- EfiProcessorFamilyM1 = 0x12,\r
- EfiProcessorFamilyM1Reserved1 = 0x13,\r
- EfiProcessorFamilyM1Reserved2 = 0x14,\r
- EfiProcessorFamilyM1Reserved3 = 0x15,\r
- EfiProcessorFamilyM1Reserved4 = 0x16,\r
- EfiProcessorFamilyM1Reserved5 = 0x17,\r
- EfiProcessorFamilyM1Reserved6 = 0x18,\r
- EfiProcessorFamilyK5 = 0x19,\r
- EfiProcessorFamilyK5Reserved1 = 0x1A,\r
- EfiProcessorFamilyK5Reserved2 = 0x1B,\r
- EfiProcessorFamilyK5Reserved3 = 0x1C,\r
- EfiProcessorFamilyK5Reserved4 = 0x1D,\r
- EfiProcessorFamilyK5Reserved5 = 0x1E,\r
- EfiProcessorFamilyK5Reserved6 = 0x1F,\r
- EfiProcessorFamilyPowerPC = 0x20,\r
- EfiProcessorFamilyPowerPC601 = 0x21,\r
- EfiProcessorFamilyPowerPC603 = 0x22,\r
- EfiProcessorFamilyPowerPC603Plus = 0x23,\r
- EfiProcessorFamilyPowerPC604 = 0x24,\r
- EfiProcessorFamilyPowerPC620 = 0x25, \r
- EfiProcessorFamilyPowerPC704 = 0x26, \r
- EfiProcessorFamilyPowerPC750 = 0x27, \r
- EfiProcessorFamilyAlpha2 = 0x30,\r
- EfiProcessorFamilyAlpha21064 = 0x31, \r
- EfiProcessorFamilyAlpha21066 = 0x32, \r
- EfiProcessorFamilyAlpha21164 = 0x33, \r
- EfiProcessorFamilyAlpha21164PC = 0x34, \r
- EfiProcessorFamilyAlpha21164a = 0x35, \r
- EfiProcessorFamilyAlpha21264 = 0x36, \r
- EfiProcessorFamilyAlpha21364 = 0x37, \r
- EfiProcessorFamilyMips = 0x40,\r
- EfiProcessorFamilyMIPSR4000 = 0x41, \r
- EfiProcessorFamilyMIPSR4200 = 0x42, \r
- EfiProcessorFamilyMIPSR4400 = 0x43, \r
- EfiProcessorFamilyMIPSR4600 = 0x44, \r
- EfiProcessorFamilyMIPSR10000 = 0x45, \r
- EfiProcessorFamilySparc = 0x50,\r
- EfiProcessorFamilySuperSparc = 0x51, \r
- EfiProcessorFamilymicroSparcII = 0x52, \r
- EfiProcessorFamilymicroSparcIIep = 0x53, \r
- EfiProcessorFamilyUltraSparc = 0x54, \r
- EfiProcessorFamilyUltraSparcII = 0x55, \r
- EfiProcessorFamilyUltraSparcIIi = 0x56, \r
- EfiProcessorFamilyUltraSparcIII = 0x57, \r
- EfiProcessorFamilyUltraSparcIIIi = 0x58, \r
- EfiProcessorFamily68040 = 0x60,\r
- EfiProcessorFamily68xxx = 0x61,\r
- EfiProcessorFamily68000 = 0x62,\r
- EfiProcessorFamily68010 = 0x63,\r
- EfiProcessorFamily68020 = 0x64,\r
- EfiProcessorFamily68030 = 0x65,\r
- EfiProcessorFamilyHobbit = 0x70,\r
- EfiProcessorFamilyCrusoeTM5000 = 0x78, \r
- EfiProcessorFamilyCrusoeTM3000 = 0x79,\r
- EfiProcessorFamilyWeitek = 0x80,\r
- EfiProcessorFamilyItanium = 0x82, \r
- EfiProcessorFamilyAmdAthlon64 = 0x83, \r
- EfiProcessorFamilyAmdOpteron = 0x84,\r
- EfiProcessorFamilyPARISC = 0x90,\r
- EfiProcessorFamilyPaRisc8500 = 0x91, \r
- EfiProcessorFamilyPaRisc8000 = 0x92, \r
- EfiProcessorFamilyPaRisc7300LC = 0x93, \r
- EfiProcessorFamilyPaRisc7200 = 0x94, \r
- EfiProcessorFamilyPaRisc7100LC = 0x95, \r
- EfiProcessorFamilyPaRisc7100 = 0x96,\r
- EfiProcessorFamilyV30 = 0xA0,\r
- EfiProcessorFamilyPentiumIIIXeon = 0xB0,\r
- EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,\r
- EfiProcessorFamilyPentium4 = 0xB2,\r
- EfiProcessorFamilyIntelXeon = 0xB3,\r
- EfiProcessorFamilyAS400 = 0xB4,\r
- EfiProcessorFamilyIntelXeonMP = 0xB5,\r
- EfiProcessorFamilyAMDAthlonXP = 0xB6,\r
- EfiProcessorFamilyAMDAthlonMP = 0xB7,\r
- EfiProcessorFamilyIntelPentiumM = 0xB9,\r
- EfiProcessorFamilyIntelCeleronD = 0xBA,\r
- EfiProcessorFamilyIntelPentiumD = 0xBB,\r
- EfiProcessorFamilyIntelPentiumEx = 0xBC,\r
- EfiProcessorFamilyIBM390 = 0xC8,\r
- EfiProcessorFamilyG4 = 0xC9,\r
- EfiProcessorFamilyG5 = 0xCA,\r
- EfiProcessorFamilyi860 = 0xFA,\r
- EfiProcessorFamilyi960 = 0xFB\r
+ EfiProcessorFamilyOther = 0x01, \r
+ EfiProcessorFamilyUnknown = 0x02,\r
+ EfiProcessorFamily8086 = 0x03, \r
+ EfiProcessorFamily80286 = 0x04,\r
+ EfiProcessorFamilyIntel386 = 0x05, \r
+ EfiProcessorFamilyIntel486 = 0x06,\r
+ EfiProcessorFamily8087 = 0x07,\r
+ EfiProcessorFamily80287 = 0x08,\r
+ EfiProcessorFamily80387 = 0x09, \r
+ EfiProcessorFamily80487 = 0x0A,\r
+ EfiProcessorFamilyPentium = 0x0B, \r
+ EfiProcessorFamilyPentiumPro = 0x0C,\r
+ EfiProcessorFamilyPentiumII = 0x0D,\r
+ EfiProcessorFamilyPentiumMMX = 0x0E,\r
+ EfiProcessorFamilyCeleron = 0x0F,\r
+ EfiProcessorFamilyPentiumIIXeon = 0x10,\r
+ EfiProcessorFamilyPentiumIII = 0x11, \r
+ EfiProcessorFamilyM1 = 0x12,\r
+ EfiProcessorFamilyM2 = 0x13,\r
+ EfiProcessorFamilyM1Reserved2 = 0x14,\r
+ EfiProcessorFamilyM1Reserved3 = 0x15,\r
+ EfiProcessorFamilyM1Reserved4 = 0x16,\r
+ EfiProcessorFamilyM1Reserved5 = 0x17,\r
+ EfiProcessorFamilyAmdDuron = 0x18,\r
+ EfiProcessorFamilyK5 = 0x19, \r
+ EfiProcessorFamilyK6 = 0x1A,\r
+ EfiProcessorFamilyK6_2 = 0x1B,\r
+ EfiProcessorFamilyK6_3 = 0x1C,\r
+ EfiProcessorFamilyAmdAthlon = 0x1D,\r
+ EfiProcessorFamilyAmd29000 = 0x1E,\r
+ EfiProcessorFamilyK6_2Plus = 0x1F,\r
+ EfiProcessorFamilyPowerPC = 0x20,\r
+ EfiProcessorFamilyPowerPC601 = 0x21,\r
+ EfiProcessorFamilyPowerPC603 = 0x22,\r
+ EfiProcessorFamilyPowerPC603Plus = 0x23,\r
+ EfiProcessorFamilyPowerPC604 = 0x24,\r
+ EfiProcessorFamilyPowerPC620 = 0x25,\r
+ EfiProcessorFamilyPowerPCx704 = 0x26,\r
+ EfiProcessorFamilyPowerPC750 = 0x27,\r
+ EfiProcessorFamilyAlpha3 = 0x30,\r
+ EfiProcessorFamilyAlpha21064 = 0x31,\r
+ EfiProcessorFamilyAlpha21066 = 0x32,\r
+ EfiProcessorFamilyAlpha21164 = 0x33,\r
+ EfiProcessorFamilyAlpha21164PC = 0x34,\r
+ EfiProcessorFamilyAlpha21164a = 0x35,\r
+ EfiProcessorFamilyAlpha21264 = 0x36,\r
+ EfiProcessorFamilyAlpha21364 = 0x37,\r
+ EfiProcessorFamilyMips = 0x40,\r
+ EfiProcessorFamilyMIPSR4000 = 0x41,\r
+ EfiProcessorFamilyMIPSR4200 = 0x42,\r
+ EfiProcessorFamilyMIPSR4400 = 0x43,\r
+ EfiProcessorFamilyMIPSR4600 = 0x44,\r
+ EfiProcessorFamilyMIPSR10000 = 0x45,\r
+ EfiProcessorFamilySparc = 0x50,\r
+ EfiProcessorFamilySuperSparc = 0x51,\r
+ EfiProcessorFamilymicroSparcII = 0x52,\r
+ EfiProcessorFamilymicroSparcIIep = 0x53,\r
+ EfiProcessorFamilyUltraSparc = 0x54,\r
+ EfiProcessorFamilyUltraSparcII = 0x55,\r
+ EfiProcessorFamilyUltraSparcIIi = 0x56,\r
+ EfiProcessorFamilyUltraSparcIII = 0x57,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field in ProcSubClass spec 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.\r
+ /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break.\r
+ ///\r
+ EfiProcessorFamilyUltraSparcIIIi = 0x58,\r
+ EfiProcessorFamily68040 = 0x60,\r
+ EfiProcessorFamily68xxx = 0x61,\r
+ EfiProcessorFamily68000 = 0x62,\r
+ EfiProcessorFamily68010 = 0x63,\r
+ EfiProcessorFamily68020 = 0x64,\r
+ EfiProcessorFamily68030 = 0x65,\r
+ EfiProcessorFamilyHobbit = 0x70,\r
+ EfiProcessorFamilyCrusoeTM5000 = 0x78,\r
+ EfiProcessorFamilyCrusoeTM3000 = 0x79,\r
+ EfiProcessorFamilyEfficeonTM8000 = 0x7A,\r
+ EfiProcessorFamilyWeitek = 0x80,\r
+ EfiProcessorFamilyItanium = 0x82,\r
+ EfiProcessorFamilyAmdAthlon64 = 0x83,\r
+ EfiProcessorFamilyAmdOpteron = 0x84,\r
+ EfiProcessorFamilyAmdSempron = 0x85,\r
+ EfiProcessorFamilyAmdTurion64Mobile = 0x86,\r
+ EfiProcessorFamilyDualCoreAmdOpteron = 0x87,\r
+ EfiProcessorFamilyAmdAthlon64X2DualCore = 0x88,\r
+ EfiProcessorFamilyAmdTurion64X2Mobile = 0x89,\r
+ EfiProcessorFamilyPARISC = 0x90,\r
+ EfiProcessorFamilyPaRisc8500 = 0x91,\r
+ EfiProcessorFamilyPaRisc8000 = 0x92,\r
+ EfiProcessorFamilyPaRisc7300LC = 0x93,\r
+ EfiProcessorFamilyPaRisc7200 = 0x94,\r
+ EfiProcessorFamilyPaRisc7100LC = 0x95,\r
+ EfiProcessorFamilyPaRisc7100 = 0x96,\r
+ EfiProcessorFamilyV30 = 0xA0,\r
+ EfiProcessorFamilyPentiumIIIXeon = 0xB0,\r
+ EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,\r
+ EfiProcessorFamilyPentium4 = 0xB2,\r
+ EfiProcessorFamilyIntelXeon = 0xB3,\r
+ EfiProcessorFamilyAS400 = 0xB4,\r
+ EfiProcessorFamilyIntelXeonMP = 0xB5,\r
+ EfiProcessorFamilyAMDAthlonXP = 0xB6,\r
+ EfiProcessorFamilyAMDAthlonMP = 0xB7,\r
+ EfiProcessorFamilyIntelItanium2 = 0xB8,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyIntelPentiumM = 0xB9,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyIntelCeleronD = 0xBA,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyIntelPentiumD = 0xBB,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyIntelPentiumEx = 0xBC,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyIntelCoreSolo = 0xBD, \r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyReserved = 0xBE, \r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyIntelCore2 = 0xBF,\r
+ EfiProcessorFamilyIBM390 = 0xC8,\r
+ EfiProcessorFamilyG4 = 0xC9,\r
+ EfiProcessorFamilyG5 = 0xCA,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyG6 = 0xCB,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyzArchitectur = 0xCC,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyViaC7M = 0xD2,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyViaC7D = 0xD3,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyViaC7 = 0xD4,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyViaEden = 0xD5,\r
+ EfiProcessorFamilyi860 = 0xFA,\r
+ EfiProcessorFamilyi960 = 0xFB,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyIndicatorFamily2 = 0xFE,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
+ EfiProcessorFamilyReserved1 = 0xFF\r
} EFI_PROCESSOR_FAMILY_DATA;\r
\r
///\r
EfiProcessorSocket478 = 0xF,\r
EfiProcessorSocket754 = 0x10,\r
EfiProcessorSocket940 = 0x11,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
EfiProcessorSocket939 = 0x12,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
EfiProcessorSocketmPGA604 = 0x13,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
EfiProcessorSocketLGA771 = 0x14,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
EfiProcessorSocketLGA775 = 0x15\r
\r
} EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
\r
typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;\r
+\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;\r
\r
///\r
/// This data record refers to the health status of the processor. \r
///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
typedef enum {\r
EfiProcessorHealthy = 1,\r
EfiProcessorPerfRestricted = 2,\r
///\r
typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
\r
+///\r
+/// Inconsistent with specification here:\r
+/// In ProcSubclass spec 0.9, the enumeration type data structure is NOT defined.\r
+/// The equivalent in spec is \r
+/// #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER 0x00000001\r
+/// #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER 0x00000002\r
+/// #define EFI_PROCESSOR_VERSION_RECORD_NUMBER 0x00000003\r
+/// #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER 0x00000004\r
+/// #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER 0x00000005\r
+/// #define EFI_PROCESSOR_ID_RECORD_NUMBER 0x00000006\r
+/// #define EFI_PROCESSOR_TYPE_RECORD_NUMBER 0x00000007\r
+/// #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER 0x00000008\r
+/// #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER 0x00000009\r
+/// #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER 0x0000000A\r
+/// #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER 0x0000000B\r
+/// #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER 0x0000000C\r
+/// #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER 0x0000000D\r
+/// #define EFI_PROCESSOR_STATUS_RECORD_NUMBER 0x0000000E\r
+/// #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER 0x0000000F\r
+/// #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER 0x00000010\r
+/// #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER 0x00000011\r
+/// #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER 0x00000012\r
+/// #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER 0x00000013\r
+/// #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER 0x00000014\r
+/// #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER 0x00000015\r
+/// #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER 0x00000016\r
+/// #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER 0x00000017\r
+/// #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER 0x00000018\r
+///\r
+/// Keep the definition unchanged for backward compatibility.\r
typedef enum {\r
ProcessorCoreFrequencyRecordType = 1,\r
ProcessorFsbFrequencyRecordType = 2,\r
ProcessorHealthStatusRecordType = 24\r
} EFI_CPU_VARIABLE_RECORD_TYPE;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In ProcSubclass spec 0.9, the union type data structure is NOT defined.\r
+/// It's implementation-specific to simplify the code logic.\r
+///\r
typedef union {\r
EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList;\r
EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList;\r
#define EFI_CACHE_SUBCLASS_VERSION 0x00010000\r
\r
typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA;\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA;\r
typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA;\r
typedef STRING_REF EFI_CACHE_SOCKET_DATA;\r
EfiCacheAssociativity4Way = 5,\r
EfiCacheAssociativityFully = 6,\r
EfiCacheAssociativity8Way = 7,\r
- EfiCacheAssociativity16Way = 8,\r
- EfiCacheAssociativity24Way = 9\r
+ EfiCacheAssociativity16Way = 8\r
} EFI_CACHE_ASSOCIATIVITY_DATA;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In CacheSubclass 0.9 spec. It defines the field type as UINT16.\r
+/// In fact, it should be UINT32 type since it refers to a 32bit width data.\r
+///\r
typedef struct {\r
UINT32 Level :3;\r
UINT32 Socketed :1;\r
CacheConfigRecordType = 10\r
} EFI_CACHE_VARIABLE_RECORD_TYPE;\r
\r
-\r
+///\r
+/// Inconsistent with specification here: \r
+/// In CacheSubclass spec0.9, the union type data structure is NOT defined.\r
+/// It's implementation-specific to simplify the code logic.\r
+///\r
typedef union {\r
- EFI_CACHE_SIZE_DATA CacheSize;\r
- EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize;\r
- EFI_CACHE_SPEED_DATA CacheSpeed;\r
- EFI_CACHE_SOCKET_DATA CacheSocket;\r
- EFI_CACHE_SRAM_TYPE_DATA CacheSramType;\r
- EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType;\r
- EFI_CACHE_ERROR_TYPE_DATA CacheErrorType;\r
- EFI_CACHE_TYPE_DATA CacheType;\r
- EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity;\r
- EFI_CACHE_CONFIGURATION_DATA CacheConfig;\r
- EFI_CACHE_ASSOCIATION_DATA CacheAssociation;\r
+ EFI_CACHE_SIZE_DATA CacheSize;\r
+ EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize;\r
+ EFI_CACHE_SPEED_DATA CacheSpeed;\r
+ EFI_CACHE_SOCKET_DATA CacheSocket;\r
+ EFI_CACHE_SRAM_TYPE_DATA CacheSramType;\r
+ EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType;\r
+ EFI_CACHE_ERROR_TYPE_DATA CacheErrorType;\r
+ EFI_CACHE_TYPE_DATA CacheType;\r
+ EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity;\r
+ EFI_CACHE_CONFIGURATION_DATA CacheConfig;\r
+ EFI_CACHE_ASSOCIATION_DATA CacheAssociation;\r
} EFI_CACHE_VARIABLE_RECORD;\r
\r
typedef struct {\r
///\r
UINT16 EndBusNumber;\r
///\r
- /// The type of memory region from the operating system\92s point of view. \r
+ /// The type of memory region from the operating system's point of view. \r
/// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS \r
/// command values. \r
///\r
EfiMemoryFormFactorRimm = 0x0C,\r
EfiMemoryFormFactorSodimm = 0x0D,\r
EfiMemoryFormFactorSrimm = 0x0E,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
EfiMemoryFormFactorFbDimm = 0x0F\r
} EFI_MEMORY_FORM_FACTOR;\r
\r
EfiMemoryTypeSgram = 0x10,\r
EfiMemoryTypeRdram = 0x11,\r
EfiMemoryTypeDdr = 0x12,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
EfiMemoryTypeDdr2 = 0x13,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
EfiMemoryTypeDdr2FbDimm = 0x14\r
} EFI_MEMORY_ARRAY_TYPE;\r
\r
EfiMemoryStateError = 3,\r
EfiMemoryStateAbsent = 4,\r
EfiMemoryStateDisabled = 5,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
+ ///\r
EfiMemoryStatePartial = 6\r
} EFI_MEMORY_STATE;\r
\r
///\r
/// The memory speed in megahertz (MHz). A value of 0x00 denotes that \r
/// the speed is unknown.\r
- ///\r
+ /// Inconsistent with specification here: \r
+ /// In MemSubclass spec 0.9, the naming is MemoryTypeSpeed.\r
+ /// Keep it unchanged for backward compatibilty.\r
+ ///\r
EFI_EXP_BASE10_DATA MemorySpeed;\r
///\r
/// The memory state. \r
//\r
// Memory. Controller Information - SMBIOS Type 5\r
//\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
typedef enum { \r
EfiErrorDetectingMethodOther = 1,\r
EfiErrorDetectingMethodUnknown = 2,\r
EfiErrorDetectingMethodCrc = 8\r
} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
typedef struct {\r
UINT8 Other :1;\r
UINT8 Unknown :1;\r
UINT8 Reserved :2;\r
} EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
typedef enum { \r
EfiMemoryInterleaveOther = 1,\r
EfiMemoryInterleaveUnknown = 2,\r
EfiMemoryInterleaveSixteenWay = 7\r
} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
typedef struct {\r
UINT16 Other :1;\r
UINT16 Unknown :1;\r
UINT16 Reserved :11;\r
} EFI_MEMORY_SPEED_TYPE;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
typedef struct {\r
UINT16 Other :1;\r
UINT16 Unknown :1;\r
UINT16 Reserved :5;\r
} EFI_MEMORY_SUPPORTED_TYPE;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
typedef struct {\r
UINT8 Five :1;\r
- UINT8 There :1;\r
+ UINT8 Three :1;\r
UINT8 Two :1;\r
UINT8 Reserved:5;\r
} EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
\r
+///\r
+/// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete\r
+/// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
typedef struct {\r
EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
UINT16 *MemoryModuleConfigHandles;\r
} EFI_MEMORY_CONTROLLER_INFORMATION;\r
\r
-//\r
-// Memory. Error Information - SMBIOS Type 18\r
-//\r
-#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 5.\r
+///\r
+typedef struct {\r
+ EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
+ EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
+ EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
+ EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
+ UINT8 MaxMemoryModuleSize;\r
+ EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
+ EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
+ EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
+ UINT8 NumberofMemorySlot;\r
+ EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
+ EFI_INTER_LINK_DATA MemoryModuleConfig[1];\r
+} EFI_MEMORY_CONTROLLER_INFORMATION_DATA;\r
\r
+///\r
+/// Memory. Error Information - SMBIOS Type 18\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 18.\r
+///\r
+#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 18.\r
+///\r
typedef enum { \r
EfiMemoryErrorOther = 1,\r
EfiMemoryErrorUnknown = 2,\r
EfiMemoryErrorCorrected = 13,\r
EfiMemoryErrorUnCorrectable = 14\r
} EFI_MEMORY_ERROR_TYPE;\r
-\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 18.\r
+///\r
typedef enum { \r
EfiMemoryGranularityOther = 1,\r
EfiMemoryGranularityOtherUnknown = 2,\r
EfiMemoryGranularityDeviceLevel = 3,\r
EfiMemoryGranularityMemPartitionLevel = 4\r
} EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
-\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 18.\r
+///\r
typedef enum { \r
EfiMemoryErrorOperationOther = 1,\r
EfiMemoryErrorOperationUnknown = 2,\r
EfiMemoryErrorOperationWrite = 4,\r
EfiMemoryErrorOperationPartialWrite = 5\r
} EFI_MEMORY_ERROR_OPERATION_TYPE;\r
-\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 18.\r
+///\r
typedef struct {\r
EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
UINT32 DeviceErrorResolution;\r
} EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
\r
-//\r
-// Memory. Error Information - SMBIOS Type 33\r
-//\r
+///\r
+/// Memory. Error Information - SMBIOS Type 33\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 33.\r
+///\r
#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 type 33.\r
+///\r
typedef struct {\r
EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
UINT32 DeviceErrorResolution;\r
} EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It is implementation-specific to simplify the code logic.\r
+///\r
typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
EFI_MEMORY_SIZE_DATA SizeData;\r
EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData;\r
EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1;\r
EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION \r
BiosCharacteristics2;\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
+ /// It's introduced for SmBios 2.6 spec type 0.\r
+ ///\r
UINT8 BiosMajorRelease;\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
+ /// It's introduced for SmBios 2.6 spec type 0.\r
+ ///\r
UINT8 BiosMinorRelease;\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
+ /// It's introduced for SmBios 2.6 spec type 0.\r
+ ///\r
UINT8 BiosEmbeddedFirmwareMajorRelease;\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
+ /// It's introduced for SmBios 2.6 spec type 0.\r
+ ///\r
UINT8 BiosEmbeddedFirmwareMinorRelease;\r
} EFI_MISC_BIOS_VENDOR_DATA;\r
\r
STRING_REF SystemSerialNumber;\r
EFI_GUID SystemUuid;\r
EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType;\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
+ /// It's introduced for SmBios 2.6 spec type 1.\r
+ ///\r
STRING_REF SystemSKUNumber;\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
+ /// It's introduced for SmBios 2.6 spec type 1.\r
+ ///\r
STRING_REF SystemFamily;\r
} EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
\r
} EFI_MISC_CHASSIS_TYPE;\r
\r
typedef struct {\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass 0.9 spec. It have a wrong field name "EFI_MISC_CHASSIS_TYPE".\r
+ /// Change it to "ChassisType" to pass build.\r
+ ///\r
UINT32 ChassisType :16;\r
UINT32 ChassisLockPresent:1;\r
UINT32 Reserved :15;\r
} EFI_MISC_CHASSIS_SECURITY_STATE;\r
\r
typedef struct {\r
- UINT32 RecordType:1;\r
- UINT32 Reserved:24;\r
+ UINT32 RecordType :1;\r
+ UINT32 Type :7;\r
+ UINT32 Reserved :24;\r
} EFI_MISC_ELEMENT_TYPE;\r
\r
typedef struct {\r
EfiSlotTypeNuBus = 0x0D,\r
EfiSlotTypePci66MhzCapable = 0x0E,\r
EfiSlotTypeAgp = 0x0F,\r
- EfiSlotTypeApg2X = 0x10,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, its naming should be EfiSlotTypeAgp2X\r
+ /// rather than EfiSlotTypeApg2X.\r
+ ///\r
+ EfiSlotTypeAgp2X = 0x10,\r
EfiSlotTypeAgp4X = 0x11,\r
EfiSlotTypePciX = 0x12,\r
- EfiSlotTypeAgp4x = 0x13,\r
+ EfiSlotTypeAgp8x = 0x13,\r
EfiSlotTypePC98C20 = 0xA0,\r
EfiSlotTypePC98C24 = 0xA1,\r
EfiSlotTypePC98E = 0xA2,\r
EfiSlotTypePC98LocalBus = 0xA3,\r
EfiSlotTypePC98Card = 0xA4,\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, this field isn't defined.\r
+ /// It's introduced for SmBios 2.6 spec type 9.\r
+ ///\r
EfiSlotTypePciExpress = 0xA5\r
} EFI_MISC_SLOT_TYPE;\r
\r
\r
typedef struct {\r
STRING_REF OnBoardDeviceDescription;\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, the naming is OnBoardDeviceType.\r
+ /// Keep it unchanged for backward compatibilty.\r
+ ///\r
EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus;\r
EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath;\r
} EFI_MISC_ONBOARD_DEVICE_DATA;\r
EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface;\r
UINT16 NumberPointingDeviceButtons;\r
EFI_DEVICE_PATH_PROTOCOL PointingDevicePath;\r
-} EFI_MISC_PORTING_DEVICE_TYPE_DATA;\r
+} EFI_MISC_POINTING_DEVICE_TYPE_DATA;\r
\r
//\r
// Portable Battery - SMBIOS Type 22\r
//\r
-#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the naming is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
+#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.\r
+/// And all field namings are also different with spec.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
typedef enum { \r
EfiPortableBatteryDeviceChemistryOther = 1,\r
EfiPortableBatteryDeviceChemistryUnknown = 2,\r
EfiPortableBatteryDeviceChemistryLithiumPolymer = 8\r
} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.\r
+/// And the name and the order of the fields are also different with spec.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
typedef struct {\r
STRING_REF Location;\r
STRING_REF Manufacturer;\r
BOOLEAN Valid; // Is entry valid - Temporary\r
} EFI_MISC_PORTABLE_BATTERY;\r
\r
+\r
//\r
// Misc. Reset Capabilities - SMBIOS Type 23\r
//\r
//\r
#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, it only mention the possible value of each field in\r
+/// EFI_MISC_HARDWARE_SECURITY_SETTINGS. \r
+/// It's implementation-specific to simplify the code logic.\r
+///\r
typedef enum {\r
EfiHardwareSecurityStatusDisabled = 0,\r
EfiHardwareSecurityStatusEnabled = 1,\r
} EFI_MISC_HARDWARE_SECURITY_STATUS;\r
\r
typedef struct {\r
- EFI_MISC_HARDWARE_SECURITY_STATUS FrontPanelResetStatus :2;\r
- EFI_MISC_HARDWARE_SECURITY_STATUS AdministratorPasswordStatus :2;\r
- EFI_MISC_HARDWARE_SECURITY_STATUS KeyboardPasswordStatus :2;\r
- EFI_MISC_HARDWARE_SECURITY_STATUS PowerOnPasswordStatus :2;\r
- EFI_MISC_HARDWARE_SECURITY_STATUS Reserved :24;\r
+ UINT32 FrontPanelResetStatus :2;\r
+ UINT32 AdministratorPasswordStatus :2;\r
+ UINT32 KeyboardPasswordStatus :2;\r
+ UINT32 PowerOnPasswordStatus :2;\r
+ UINT32 Reserved :24;\r
} EFI_MISC_HARDWARE_SECURITY_SETTINGS;\r
\r
typedef struct {\r
//\r
#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
typedef enum {\r
EfiBootInformationStatusNoError = 0x00,\r
EfiBootInformationStatusNoBootableMedia = 0x01,\r
} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
\r
typedef struct {\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
+ /// Keep it unchanged for backward compatibilty.\r
+ ///\r
EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
UINT8 BootInformationData[9];\r
} EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
STRING_REF ManagementDeviceComponentDescription;\r
EFI_INTER_LINK_DATA ManagementDeviceLink;\r
EFI_INTER_LINK_DATA ManagementDeviceComponentLink;\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, this field is NOT defined.\r
+ /// It's introduced for SmBios 2.6 spec type 35.\r
+ ///\r
EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;\r
} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
\r
\r
#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D\r
\r
-//\r
-//System Power supply Record - SMBIOS Type 39\r
-//\r
+///\r
+/// System Power supply Record - SMBIOS Type 39\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the type of all fields are UINT32.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
typedef struct {\r
UINT16 PowerSupplyHotReplaceable:1;\r
UINT16 PowerSupplyPresent :1;\r
UINT16 PowerSupplyStatus :3;\r
UINT16 PowerSupplyType :4;\r
UINT16 Reserved :2;\r
-} POWER_SUPPLY_CHARACTERISTICS;\r
-\r
-typedef struct {\r
- UINT16 PowerUnitGroup;\r
- STRING_REF PowerSupplyLocation;\r
- STRING_REF PowerSupplyDeviceName;\r
- STRING_REF PowerSupplyManufacturer;\r
- STRING_REF PowerSupplySerialNumber;\r
- STRING_REF PowerSupplyAssetTagNumber;\r
- STRING_REF PowerSupplyModelPartNumber;\r
- STRING_REF PowerSupplyRevisionLevel;\r
- UINT16 PowerSupplyMaxPowerCapacity;\r
- POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;\r
- EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;\r
- EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;\r
- EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;\r
+} EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;\r
+\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the field name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
+typedef struct {\r
+ UINT16 PowerUnitGroup;\r
+ STRING_REF PowerSupplyLocation;\r
+ STRING_REF PowerSupplyDeviceName;\r
+ STRING_REF PowerSupplyManufacturer;\r
+ STRING_REF PowerSupplySerialNumber;\r
+ STRING_REF PowerSupplyAssetTagNumber;\r
+ STRING_REF PowerSupplyModelPartNumber;\r
+ STRING_REF PowerSupplyRevisionLevel;\r
+ UINT16 PowerSupplyMaxPowerCapacity;\r
+ EFI_MISC_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;\r
+ EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;\r
+ EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;\r
+ EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;\r
} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
\r
#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E\r
\r
-//\r
-// OEM Data Record - SMBIOS Type 0x80-0xFF\r
-//\r
+///\r
+/// OEM Data Record - SMBIOS Type 0x80-0xFF\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.\r
+/// Due to this structure is commonly used by vendor to construct SmBios type 0x80~0xFF table,\r
+/// Keep it unchanged for backward compatibilty.\r
+///\r
typedef struct {\r
UINT8 Type;\r
UINT8 Length;\r
} SMBIOS_STRUCTURE_HDR;\r
\r
typedef struct {\r
+ ///\r
+ /// Inconsistent with specification here: \r
+ /// In MiscSubclass spec 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.\r
+ /// Keep it unchanged for backward compatibilty.\r
+ ///\r
SMBIOS_STRUCTURE_HDR Header;\r
UINT8 RawData[1];\r
} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
\r
#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F\r
\r
-//\r
-// Misc. System Event Log - SMBIOS Type 15\r
-//\r
+///\r
+/// Misc. System Event Log - SMBIOS Type 15\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 spec type 15.\r
+///\r
#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020\r
+\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 spec type 15.\r
+///\r
typedef struct {\r
UINT16 LogAreaLength;\r
UINT16 LogHeaderStartOffset;\r
#define ACCESS_MEMORY_MAPPED 0x03\r
#define ACCESS_GPNV 0x04\r
\r
-//\r
-//Management Device Threshold Data Record - SMBIOS Type 36\r
-//\r
+///\r
+/// Management Device Threshold Data Record - SMBIOS Type 36\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 spec type 36.\r
+///\r
#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021\r
-\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It's introduced for SmBios 2.6 spec type 36.\r
+///\r
typedef struct {\r
UINT16 LowerThresNonCritical;\r
UINT16 UpperThresNonCritical;\r
typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;\r
typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION;\r
typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE;\r
-typedef EFI_MISC_PORTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
+typedef EFI_MISC_POINTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING;\r
typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING;\r
typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;\r
typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;\r
typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;\r
\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It is implementation-specific to simplify the code logic.\r
+///\r
typedef union {\r
EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;\r
EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor;\r
EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog;\r
EFI_MISC_GROUP_NAME_DATA MiscGroupNameData;\r
EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData;\r
- EFI_MISC_PORTING_DEVICE_TYPE_DATA MiscPortingDeviceTypeData;\r
+ EFI_MISC_POINTING_DEVICE_TYPE_DATA MiscPointingDeviceTypeData;\r
EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData;\r
EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData;\r
EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData;\r
EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold;\r
} EFI_MISC_SUBCLASS_RECORDS;\r
\r
-//\r
-//\r
-//\r
+///\r
+/// Inconsistent with specification here: \r
+/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
+/// It is implementation-specific to simplify the code logic.\r
+///\r
typedef struct {\r
EFI_SUBCLASS_TYPE1_HEADER Header;\r
EFI_MISC_SUBCLASS_RECORDS Record;\r
} EFI_MISC_SUBCLASS_DRIVER_DATA;\r
-\r
#pragma pack()\r
\r
-//\r
-// Sub Class Header type1\r
-//\r
-\r
+///\r
+/// Inconsistent with specification here: \r
+/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\r
+/// But value is meaningful, 0 means Reserved.\r
+///\r
#define EFI_SUBCLASS_INSTANCE_RESERVED 0\r
-#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF //16 bit\r
+///\r
+/// Inconsistent with specification here: \r
+/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\r
+/// But value is meaningful, -1 means Not Applicable.\r
+///\r
+#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r
\r
#endif\r