]> git.proxmox.com Git - mirror_edk2.git/commitdiff
roll back the change on the naming of DataHubRecords.h for backward compatibility.
authoreric_tian <eric_tian@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 10 Jul 2009 10:20:57 +0000 (10:20 +0000)
committereric_tian <eric_tian@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 10 Jul 2009 10:20:57 +0000 (10:20 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8881 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkPkg/Include/Framework/DataHubRecords.h

index e613fa143a2f73c44f024e6f287fad462ec86e81..ce0ca23f0297c327b3d2c2a765a22df27132e80d 100644 (file)
 \r
 #include <Framework/FrameworkInternalFormRepresentation.h>\r
 \r
-#define EFI_PROCESSOR_SUBCLASS_VERSION    0x0100\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
 \r
@@ -118,7 +123,7 @@ typedef struct _FLOOPY_CONN_DEVICE_PATH {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec0.9, this data structure and corrsponding fields are NOT defined.\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
@@ -134,6 +139,16 @@ typedef union _EFI_MISC_PORT_DEVICE_PATH {
 } EFI_MISC_PORT_DEVICE_PATH;\r
 \r
 #pragma pack()\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
 /// Each data record that is a member of some subclass starts with a standard \r
 /// header of type EFI_SUBCLASS_TYPE1_HEADER.\r
@@ -246,7 +261,7 @@ typedef EFI_EXP_BASE10_DATA        EFI_PROCESSOR_CORE_FREQUENCY_DATA;
 /// that the processor/driver supports automatic frequency selection. \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// It's a typo of MiscSubclass 0.9 spec. It should be a pointer since it refers to a list of frequencies.\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
@@ -276,10 +291,16 @@ typedef struct {
   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                            LogicalProcessorCount  :8;\r
+  UINT32                            ProcessorReserved      :8;\r
   UINT32                            ProcessorDfltApicId    :8;\r
 } EFI_PROCESSOR_MISC_INFO;\r
 \r
@@ -423,7 +444,8 @@ typedef enum {
   EfiProcessorFamilyUltraSparcIII          = 0x57,\r
   ///\r
   /// Inconsistent with specification here:  \r
-  /// This field in ProcSubClass spec0.9 is defined as EfiProcessorFamilyUltraSparcIIi, it's a typo.\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
@@ -653,16 +675,26 @@ typedef enum {
 } EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
 \r
 typedef STRING_REF                  EFI_PROCESSOR_SOCKET_NAME_DATA;\r
-typedef EFI_INTER_LINK_DATA         EFI_PROCESSOR_CACHE_ASSOCIATION_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
   EfiProcessorFuncRestricted = 3 \r
-} EFI_PROCESSOR_HEALTH_STATUS_DATA;\r
+} EFI_PROCESSOR_HEALTH_STATUS;\r
 \r
 ///\r
 /// This data record refers to the package number of this processor. Multiple logical processors can \r
@@ -671,30 +703,62 @@ typedef enum {
 ///\r
 typedef UINTN                       EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
 \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
+/// 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
+  ProcessorVersionRecordType           = 3,\r
+  ProcessorManufacturerRecordType      = 4,\r
+  ProcessorSerialNumberRecordType      = 5,\r
+  ProcessorIdRecordType                = 6,\r
+  ProcessorTypeRecordType              = 7,\r
+  ProcessorFamilyRecordType            = 8,\r
+  ProcessorVoltageRecordType           = 9,\r
+  ProcessorApicBaseAddressRecordType   = 10,\r
+  ProcessorApicIdRecordType            = 11,\r
+  ProcessorApicVersionNumberRecordType = 12,\r
+  CpuUcodeRevisionDataRecordType       = 13,\r
+  ProcessorStatusRecordType            = 14,\r
+  ProcessorSocketTypeRecordType        = 15,\r
+  ProcessorSocketNameRecordType        = 16,\r
+  CacheAssociationRecordType           = 17,\r
+  ProcessorMaxCoreFrequencyRecordType  = 18,\r
+  ProcessorAssetTagRecordType          = 19,\r
+  ProcessorMaxFsbFrequencyRecordType   = 20,\r
+  ProcessorPackageNumberRecordType     = 21,\r
+  ProcessorCoreFrequencyListRecordType = 22,\r
+  ProcessorFsbFrequencyListRecordType  = 23,\r
+  ProcessorHealthStatusRecordType      = 24\r
+} EFI_CPU_VARIABLE_RECORD_TYPE;\r
 \r
 ///\r
 /// Inconsistent with specification here:  \r
@@ -723,7 +787,7 @@ typedef union {
   EFI_PROCESSOR_SOCKET_TYPE_DATA          ProcessorSocketType;\r
   EFI_PROCESSOR_SOCKET_NAME_DATA          ProcessorSocketName;\r
   EFI_PROCESSOR_ASSET_TAG_DATA            ProcessorAssetTag;\r
-  EFI_PROCESSOR_HEALTH_STATUS_DATA        ProcessorHealthStatus;\r
+  EFI_PROCESSOR_HEALTH_STATUS             ProcessorHealthStatus;\r
   EFI_PROCESSOR_PACKAGE_NUMBER_DATA       ProcessorPackageNumber;\r
 } EFI_CPU_VARIABLE_RECORD;\r
 \r
@@ -735,7 +799,12 @@ typedef struct {
 #define EFI_CACHE_SUBCLASS_VERSION    0x00010000\r
 \r
 typedef EFI_EXP_BASE2_DATA          EFI_CACHE_SIZE_DATA;\r
-typedef EFI_EXP_BASE2_DATA          EFI_CACHE_MAXIMUM_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
 \r
@@ -782,7 +851,8 @@ typedef enum {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// It's a typo of CacheSubclass 0.9 spec. It should be UINT32 type since it refers to a 32bit width data.\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
@@ -842,7 +912,7 @@ typedef enum {
 ///\r
 typedef union {\r
   EFI_CACHE_SIZE_DATA                         CacheSize;\r
-  EFI_CACHE_MAXIMUM_SIZE_DATA                 MaximumCacheSize;\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
@@ -851,7 +921,7 @@ typedef union {
   EFI_CACHE_TYPE_DATA                         CacheType;\r
   EFI_CACHE_ASSOCIATIVITY_DATA                CacheAssociativity;\r
   EFI_CACHE_CONFIGURATION_DATA                CacheConfig;\r
-  EFI_PROCESSOR_CACHE_ASSOCIATION_DATA        CacheAssociation;\r
+  EFI_CACHE_ASSOCIATION_DATA                  CacheAssociation;\r
 } EFI_CACHE_VARIABLE_RECORD;\r
 \r
 typedef struct {\r
@@ -1146,8 +1216,11 @@ typedef struct {
   ///\r
   /// The memory speed in megahertz (MHz). A value of 0x00 denotes that \r
   /// the speed is unknown.\r
-  ///\r
-  EFI_EXP_BASE10_DATA               MemoryTypeSpeed;\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
@@ -1547,6 +1620,8 @@ typedef struct {
 \r
 #define EFI_MISC_SUBCLASS_VERSION     0x0100\r
 \r
+#pragma pack(1)\r
+\r
 //\r
 // Last PCI Bus Number\r
 //\r
@@ -1765,8 +1840,8 @@ typedef enum {
 typedef struct {\r
   ///\r
   /// Inconsistent with specification here:  \r
-  /// It's a typo of MiscSubclass 0.9 spec. It should be a variable\r
-  /// name "ChassisType" rather than a type "EFI_MISC_CHASSIS_TYPE".\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
@@ -1940,18 +2015,13 @@ typedef enum {
   EfiSlotTypeAgp                          = 0x0F,\r
   ///\r
   /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, there is a typo on this field.\r
-  /// Its naming should be EfiSlotTypeAgp2X rather than EfiSlotTypeApg2X.\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
-  ///\r
-  /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec 0.9, there is a typo on this field.\r
-  /// Its naming should be EfiSlotTypeAgp8X rather than EfiSlotTypeAgp8x.\r
-  ///\r
-  EfiSlotTypeAgp8X                        = 0x13,\r
+  EfiSlotTypeAgp8x                        = 0x13,\r
   EfiSlotTypePC98C20                      = 0xA0,\r
   EfiSlotTypePC98C24                      = 0xA1,\r
   EfiSlotTypePC98E                        = 0xA2,\r
@@ -2038,7 +2108,12 @@ typedef struct {
 \r
 typedef struct {\r
   STRING_REF                        OnBoardDeviceDescription;\r
-  EFI_MISC_ONBOARD_DEVICE_STATUS    OnBoardDeviceType;\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
 \r
@@ -2150,43 +2225,57 @@ typedef struct {
 //\r
 // Portable Battery - SMBIOS Type 22\r
 //\r
-#define EFI_MISC_BATTERY_LOCATION_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
+  EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
+  EfiPortableBatteryDeviceChemistryNickelCadmium = 4,\r
+  EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,\r
+  EfiPortableBatteryDeviceChemistryLithiumIon = 6,\r
+  EfiPortableBatteryDeviceChemistryZincAir = 7,\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
+  STRING_REF                        ManufactureDate;\r
+  STRING_REF                        SerialNumber;\r
+  STRING_REF                        DeviceName;\r
+  EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY  \r
+                                    DeviceChemistry;\r
+  UINT16                            DesignCapacity;\r
+  UINT16                            DesignVoltage;\r
+  STRING_REF                        SBDSVersionNumber;\r
+  UINT8                             MaximumError;\r
+  UINT16                            SBDSSerialNumber;\r
+  UINT16                            SBDSManufactureDate;\r
+  STRING_REF                        SBDSDeviceChemistry;\r
+  UINT8                             DesignCapacityMultiplier;\r
+  UINT32                            OEMSpecific;  \r
+  UINT8                             BatteryNumber; // Temporary   \r
+  BOOLEAN                           Valid; // Is entry valid - Temporary\r
+} EFI_MISC_PORTABLE_BATTERY;\r
 \r
-typedef enum {\r
-  EfiBatteryDeviceChemistryTypeOther = 1, \r
-  EfiBatteryDeviceChemistryTypeUnknown = 2, \r
-  EfiBatteryDeviceChemistryTypeLeadAcid = 3, \r
-  EfiBatteryDeviceChemistryTypeNickelCadmium = 4, \r
-  EfiBatteryDeviceChemistryTypeNickelMetalHydride = 5, \r
-  EfiBatteryDeviceChemistryTypeLithiumIon = 6, \r
-  EfiBatteryDeviceChemistryTypeZincAir = 7, \r
-  EfiBatteryDeviceChemistryTypeLithiumPolymer = 8\r
-} EFI_MISC_BATTERY_DEVICE_CHEMISTRY;\r
-\r
-typedef struct  { \r
-  UINT32 Date              :5; \r
-  UINT32 Month             :4; \r
-  UINT32 Year              :7; \r
-  UINT32 Reserved          :16; \r
-} EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE;\r
-\r
-typedef struct { \r
-  STRING_REF                         BatteryLocation; \r
-  STRING_REF                         BatteryManufacturer; \r
-  STRING_REF                         BatteryManufactureDate; \r
-  STRING_REF                         BatterySerialNumber; \r
-  STRING_REF                         BatteryDeviceName; \r
-  STRING_REF                         BatterySbdsVersionNumber; \r
-  STRING_REF                         BatterySbdsDeviceChemistry; \r
-  EFI_MISC_BATTERY_DEVICE_CHEMISTRY  BatteryDeviceChemistry; \r
-  EFI_EXP_BASE10_DATA                BatteryDesignCapacity; \r
-  EFI_EXP_BASE10_DATA                BatteryDesignVoltage; \r
-  UINT16                             BatteryMaximumError; \r
-  UINT16                             BatterySbdsSerialNumber; \r
-  EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE \r
-                                     BatterySbdsManufacturingDate; \r
-  UINT32                             BatteryOemSpecific; \r
-} EFI_MISC_BATTERY_LOCATION_DATA;\r
 \r
 //\r
 // Misc. Reset Capabilities - SMBIOS Type 23\r
@@ -2224,7 +2313,7 @@ typedef struct {
 \r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec0.9, it only mention the possible value of each field in\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
@@ -2400,6 +2489,11 @@ typedef struct {
 //\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
@@ -2413,10 +2507,15 @@ typedef enum {
   EfiBootInformationStatusStartReserved            = 0x09,\r
   EfiBootInformationStatusStartOemSpecific         = 0x80,\r
   EfiBootInformationStatusStartProductSpecific     = 0xC0\r
-} EFI_MISC_BOOT_INFORMATION_STATUS_TYPE;\r
+} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
 \r
 typedef struct {\r
-  EFI_MISC_BOOT_INFORMATION_STATUS_TYPE      BootInformationStatus;\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
 \r
@@ -2469,7 +2568,7 @@ typedef struct {
   EFI_INTER_LINK_DATA               ManagementDeviceComponentLink;\r
   ///\r
   /// Inconsistent with specification here:  \r
-  /// In MiscSubclass spec0.9, this field is NOT defined.\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
@@ -2503,19 +2602,28 @@ typedef struct {
 \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
-  UINT32                            PowerSupplyHotReplaceable:1;\r
-  UINT32                            PowerSupplyPresent       :1;\r
-  UINT32                            PowerSupplyUnplugged     :1;\r
-  UINT32                            InputVoltageRangeSwitch  :4;\r
-  UINT32                            PowerSupplyStatus        :3;\r
-  UINT32                            PowerSupplyType          :4;\r
-  UINT32                            Reserved                 :18;\r
+  UINT16                            PowerSupplyHotReplaceable:1;\r
+  UINT16                            PowerSupplyPresent       :1;\r
+  UINT16                            PowerSupplyUnplugged     :1;\r
+  UINT16                            InputVoltageRangeSwitch  :4;\r
+  UINT16                            PowerSupplyStatus        :3;\r
+  UINT16                            PowerSupplyType          :4;\r
+  UINT16                            Reserved                 :2;\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
@@ -2530,21 +2638,31 @@ typedef struct {
   EFI_INTER_LINK_DATA                    PowerSupplyInputVoltageProbeLink;\r
   EFI_INTER_LINK_DATA                    PowerSupplyCoolingDeviceLink;\r
   EFI_INTER_LINK_DATA                    PowerSupplyInputCurrentProbeLink;\r
-} EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA;\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
   UINT16                            Handle;\r
-} EFI_SMBIOS_STRUCTURE_HDR;\r
+} SMBIOS_STRUCTURE_HDR;\r
 \r
 typedef struct {\r
-  EFI_SMBIOS_STRUCTURE_HDR          Header;\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
@@ -2554,14 +2672,14 @@ typedef struct {
 /// Misc. System Event Log  - SMBIOS Type 15\r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec0.9, the following data structures are NOT defined.\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 spec0.9, the following data structures are NOT defined.\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
@@ -2593,13 +2711,13 @@ typedef struct {
 /// Management Device Threshold Data Record - SMBIOS Type 36\r
 ///\r
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec0.9, the following data structures are NOT defined.\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
 /// Inconsistent with specification here:  \r
-/// In MiscSubclass spec0.9, the following data structures are NOT defined.\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
@@ -2630,7 +2748,7 @@ typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA              EFI_MISC_SYSTEM_LANGUA
 typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA                    EFI_MISC_SYSTEM_EVENT_LOG;\r
 typedef EFI_MISC_BIS_ENTRY_POINT_DATA                     EFI_MISC_BIS_ENTRY_POINT;\r
 typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA             EFI_MISC_BOOT_INFORMATION_STATUS;\r
-typedef EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA             EFI_MISC_SYSTEM_POWER_SUPPLY;\r
+typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                 EFI_MISC_SYSTEM_POWER_SUPPLY;\r
 typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA         EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;\r
 typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA            EFI_MISC_SCHEDULED_POWER_ON_MONTH;\r
 typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA           EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;\r
@@ -2678,18 +2796,21 @@ typedef union {
   EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
                                                      MiscmangementDeviceComponentDescriptionData;\r
   EFI_MISC_IPMI_INTERFACE_TYPE_DATA                  MiscIpmiInterfaceTypeData;\r
-  EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA              MiscPowerSupplyInfo;\r
+  EFI_MISC_SYSTEM_POWER_SUPPLY_DATA                  MiscPowerSupplyInfo;\r
   EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA          MiscSmbiosStructEncapsulation;\r
   EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD               MiscManagementDeviceThreshold;\r
 } EFI_MISC_SUBCLASS_RECORDS;\r
 \r
 ///\r
-/// Sub Class Header type1\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
+#pragma pack()\r
 \r
 ///\r
 /// Inconsistent with specification here:  \r