]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/SmBios.h
Add workaround for some ARM compilers that do not always generate aligned accesses...
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / SmBios.h
index 5ad0137f33e3d331a6490a3a8e62b5399cd65525..79ed6962bc6fe72b4bfa296c04b19ef4cc40617e 100644 (file)
 #ifndef __SMBIOS_STANDARD_H__\r
 #define __SMBIOS_STANDARD_H__\r
 \r
+///\r
+/// Reference SMBIOS 2.6, chapter 3.1.2.\r
+/// For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for\r
+/// use by this specification.\r
+///\r
+#define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00\r
+\r
+///\r
+/// Reference SMBIOS 2.6, chapter 3.1.3\r
+/// Each text string is limited to 64 significant characters due to system MIF limitations\r
+///\r
+#define SMBIOS_STRING_MAX_LENGTH     64\r
+\r
+///\r
+/// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.\r
+/// Upper-level software that interprets the SMBIOS structure-table should bypass an \r
+/// Inactive structure just like a structure type that the software does not recognize.\r
+///\r
+#define SMBIOS_TYPE_INACTIVE         0x007E    \r
+\r
+///\r
+/// End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.\r
+/// The end-of-table indicator is used in the last physical structure in a table\r
+///\r
+#define SMBIOS_TYPE_END_OF_TABLE     0x007F\r
+\r
 ///\r
 /// Smbios Table Entry Point Structure\r
 ///\r
@@ -175,7 +201,7 @@ typedef struct {
   SMBIOS_TABLE_STRING     Version;\r
   SMBIOS_TABLE_STRING     SerialNumber;\r
   GUID                    Uuid;\r
-  MISC_SYSTEM_WAKEUP_TYPE WakeUpType;\r
+  UINT8                   WakeUpType;           ///< enumeration value from MISC_SYSTEM_WAKEUP_TYPE\r
   SMBIOS_TABLE_STRING     SKUNumber;\r
   SMBIOS_TABLE_STRING     Family;\r
 } SMBIOS_TABLE_TYPE1;\r
@@ -227,7 +253,7 @@ typedef struct {
   BASE_BOARD_FEATURE_FLAGS  FeatureFlag;\r
   SMBIOS_TABLE_STRING       LocationInChassis;\r
   UINT16                    ChassisHandle;\r
-  BASE_BOARD_TYPE           BoardType;\r
+  UINT8                     BoardType;              ///< enumeration value from BASE_BOARD_TYPE\r
   UINT8                     NumberOfContainedObjectHandles;\r
   UINT16                    ContainedObjectHandles[1];\r
 } SMBIOS_TABLE_TYPE2;\r
@@ -316,10 +342,10 @@ typedef struct {
   SMBIOS_TABLE_STRING         Version;\r
   SMBIOS_TABLE_STRING         SerialNumber;\r
   SMBIOS_TABLE_STRING         AssetTag;\r
-  MISC_CHASSIS_STATE          BootupState;\r
-  MISC_CHASSIS_STATE          PowerSupplyState;\r
-  MISC_CHASSIS_STATE          ThermalState;\r
-  MISC_CHASSIS_SECURITY_STATE SecurityStatus;\r
+  UINT8                       BootupState;            ///< enumeration value from MISC_CHASSIS_STATE\r
+  UINT8                       PowerSupplyState;       ///< enumeration value from MISC_CHASSIS_STATE\r
+  UINT8                       ThermalState;           ///< enumeration value from MISC_CHASSIS_STATE\r
+  UINT8                       SecurityStatus;         ///< enumeration value from MISC_CHASSIS_SECURITY_STATE\r
   UINT8                       OemDefined[4];\r
   UINT8                       Height;\r
   UINT8                       NumberofPowerCords;\r
@@ -520,13 +546,6 @@ typedef struct {
   UINT32  ProcessorReserved2: 4;\r
 } PROCESSOR_SIGNATURE;\r
 \r
-typedef struct {\r
-  UINT32  ProcessorBrandIndex :8;\r
-  UINT32  ProcessorClflush    :8;\r
-  UINT32  ProcessorReserved   :8;\r
-  UINT32  ProcessorDfltApicId :8;\r
-} PROCESSOR_MISC_INFO;\r
-\r
 typedef struct {\r
   UINT32  ProcessorFpu       :1;\r
   UINT32  ProcessorVme       :1;\r
@@ -563,8 +582,6 @@ typedef struct {
 \r
 typedef struct {\r
   PROCESSOR_SIGNATURE     Signature;\r
-  PROCESSOR_MISC_INFO     MiscInfo;\r
-  UINT32                  Reserved;\r
   PROCESSOR_FEATURE_FLAGS FeatureFlags;\r
 } PROCESSOR_ID_DATA;\r
 \r
@@ -579,9 +596,9 @@ typedef struct {
 ///\r
 typedef struct { \r
   SMBIOS_STRUCTURE      Hdr;\r
-  UINT8                 Socket;\r
-  PROCESSOR_TYPE_DATA   ProcessorType;\r
-  PROCESSOR_FAMILY_DATA ProcessorFamily;\r
+  SMBIOS_TABLE_STRING   Socket;\r
+  UINT8                 ProcessorType;          ///< enumeration value from PROCESSOR_TYPE_DATA\r
+  UINT8                 ProcessorFamily;        ///< enumeration value from PROCESSOR_FAMILY_DATA\r
   SMBIOS_TABLE_STRING   ProcessorManufacture;\r
   PROCESSOR_ID_DATA     ProcessorId;\r
   SMBIOS_TABLE_STRING   ProcessorVersion;\r
@@ -590,7 +607,7 @@ typedef struct {
   UINT16                MaxSpeed;\r
   UINT16                CurrentSpeed;\r
   UINT8                 Status;\r
-  PROCESSOR_UPGRADE     ProcessorUpgrade;\r
+  UINT8                 ProcessorUpgrade;      ///< enumeration value from PROCESSOR_UPGRADE\r
   UINT16                L1CacheHandle;\r
   UINT16                L2CacheHandle;\r
   UINT16                L3CacheHandle;\r
@@ -676,10 +693,10 @@ typedef struct {
 ///\r
 typedef struct {\r
   SMBIOS_STRUCTURE                Hdr;\r
-  MEMORY_ERROR_DETECT_METHOD      ErrDetectMethod;\r
+  UINT8                           ErrDetectMethod;            ///< enumeration value from MEMORY_ERROR_DETECT_METHOD\r
   MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability;\r
-  MEMORY_SUPPORT_INTERLEAVE_TYPE  SupportInterleave;\r
-  UINT8                           CurrentInterleave;\r
+  UINT8                           SupportInterleave;          ///< enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE\r
+  UINT8                           CurrentInterleave;          ///< enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE      \r
   UINT8                           MaxMemoryModuleSize;\r
   MEMORY_SPEED_TYPE               SupportSpeed;\r
   UINT16                          SupportMemoryType;\r
@@ -696,13 +713,13 @@ typedef struct {
   UINT16  Unknown     :1;\r
   UINT16  Standard    :1;\r
   UINT16  FastPageMode:1;\r
-  UINT16  EDO         :1;\r
+  UINT16  Edo         :1;\r
   UINT16  Parity      :1;\r
-  UINT16  ECC         :1;\r
-  UINT16  SIMM        :1;\r
-  UINT16  DIMM        :1;\r
+  UINT16  Ecc         :1;\r
+  UINT16  Simm        :1;\r
+  UINT16  Dimm        :1;\r
   UINT16  BurstEdo    :1;\r
-  UINT16  SDRAM       :1;\r
+  UINT16  Sdram       :1;\r
   UINT16  Reserved    :5;\r
 } MEMORY_CURRENT_TYPE;\r
 \r
@@ -805,9 +822,9 @@ typedef struct {
   CACHE_SRAM_TYPE_DATA      SupportedSRAMType;\r
   CACHE_SRAM_TYPE_DATA      CurrentSRAMType;\r
   UINT8                     CacheSpeed;\r
-  CACHE_ERROR_TYPE_DATA     ErrorCorrectionType;\r
-  CACHE_TYPE_DATA           SystemCacheType;\r
-  CACHE_ASSOCIATIVITY_DATA  Associativity;\r
+  UINT8                     ErrorCorrectionType;            ///< enumeration value from CACHE_ERROR_TYPE_DATA\r
+  UINT8                     SystemCacheType;                ///< enumeration value from CACHE_TYPE_DATA\r
+  UINT8                     Associativity;                  ///< enumeration value from CACHE_ASSOCIATIVITY_DATA\r
 } SMBIOS_TABLE_TYPE7;\r
 \r
 ///\r
@@ -907,10 +924,10 @@ typedef enum {
 typedef struct {\r
   SMBIOS_STRUCTURE          Hdr;\r
   SMBIOS_TABLE_STRING       InternalReferenceDesignator;\r
-  MISC_PORT_CONNECTOR_TYPE  InternalConnectorType;\r
+  UINT8                     InternalConnectorType;          ///< enumeration value from MISC_PORT_CONNECTOR_TYPE\r
   SMBIOS_TABLE_STRING       ExternalReferenceDesignator;\r
-  MISC_PORT_CONNECTOR_TYPE  ExternalConnectorType;\r
-  MISC_PORT_TYPE            PortType;\r
+  UINT8                     ExternalConnectorType;          ///< enumeration value from MISC_PORT_CONNECTOR_TYPE\r
+  UINT8                     PortType;                       ///< enumeration value from MISC_PORT_TYPE\r
 } SMBIOS_TABLE_TYPE8;\r
 \r
 ///\r
@@ -1022,10 +1039,10 @@ typedef struct {
 typedef struct {\r
   SMBIOS_STRUCTURE            Hdr;\r
   SMBIOS_TABLE_STRING         SlotDesignation;\r
-  MISC_SLOT_TYPE              SlotType;\r
-  MISC_SLOT_DATA_BUS_WIDTH    SlotDataBusWidth;\r
-  MISC_SLOT_USAGE             CurrentUsage;\r
-  MISC_SLOT_LENGTH            SlotLength;\r
+  UINT8                       SlotType;                 ///< enumeration value from MISC_SLOT_TYPE\r
+  UINT8                       SlotDataBusWidth;         ///< enumeration value from MISC_SLOT_DATA_BUS_WIDTH\r
+  UINT8                       CurrentUsage;             ///< enumeration value from MISC_SLOT_USAGE\r
+  UINT8                       SlotLength;               ///< enumeration value from MISC_SLOT_LENGTH\r
   UINT16                      SlotID;\r
   MISC_SLOT_CHARACTERISTICS1  SlotCharacteristics1;\r
   MISC_SLOT_CHARACTERISTICS2  SlotCharacteristics2;\r
@@ -1054,7 +1071,8 @@ typedef enum {
 /// Device Item Entry\r
 ///\r
 typedef struct {\r
-  MISC_ONBOARD_DEVICE_TYPE  DeviceType;\r
+  UINT8                     DeviceType;             ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE\r
+                                                    ///< Bit 7     - 1 : device enabled, 0 : device disabled\r
   SMBIOS_TABLE_STRING       DescriptionString;\r
 } DEVICE_STRUCT;\r
 \r
@@ -1166,7 +1184,7 @@ typedef struct {
 /// Event Log Type Descriptors\r
 ///\r
 typedef struct {\r
-  EVENT_LOG_TYPE_DATA   LogType;\r
+  UINT8                 LogType;                    ///< enumeration value from EVENT_LOG_TYPE_DATA\r
   UINT8                 DataFormatType;\r
 } EVENT_LOG_TYPE;\r
 \r
@@ -1260,9 +1278,9 @@ typedef enum {
 ///\r
 typedef struct {\r
   SMBIOS_STRUCTURE          Hdr;\r
-  MEMORY_ARRAY_LOCATION     Location;\r
-  MEMORY_ARRAY_USE          Use;\r
-  MEMORY_ERROR_CORRECTION   MemoryErrorCorrection;\r
+  UINT8                     Location;                       ///< enumeration value from MEMORY_ARRAY_LOCATION\r
+  UINT8                     Use;                            ///< enumeration value from MEMORY_ARRAY_USE\r
+  UINT8                     MemoryErrorCorrection;          ///< enumeration value from MEMORY_ERROR_CORRECTION\r
   UINT32                    MaximumCapacity;\r
   UINT16                    MemoryErrorInformationHandle;\r
   UINT16                    NumberOfMemoryDevices;\r
@@ -1348,11 +1366,11 @@ typedef struct {
   UINT16                    TotalWidth;\r
   UINT16                    DataWidth;\r
   UINT16                    Size;\r
-  MEMORY_FORM_FACTOR        FormFactor;\r
+  UINT8                     FormFactor;                     ///< enumeration value from MEMORY_FORM_FACTOR\r
   UINT8                     DeviceSet;\r
   SMBIOS_TABLE_STRING       DeviceLocator;\r
   SMBIOS_TABLE_STRING       BankLocator;\r
-  MEMORY_DEVICE_TYPE        MemoryType;\r
+  UINT8                     MemoryType;                     ///< enumeration value from MEMORY_DEVICE_TYPE\r
   MEMORY_DEVICE_TYPE_DETAIL TypeDetail;\r
   UINT16                    Speed;\r
   SMBIOS_TABLE_STRING       Manufacturer;\r
@@ -1414,9 +1432,9 @@ typedef enum {
 ///\r
 typedef struct {\r
   SMBIOS_STRUCTURE          Hdr;\r
-  MEMORY_ERROR_TYPE         ErrorType;\r
-  MEMORY_ERROR_GRANULARITY  ErrorGranularity;\r
-  MEMORY_ERROR_OPERATION    ErrorOperation;\r
+  UINT8                     ErrorType;                  ///< enumeration value from MEMORY_ERROR_TYPE\r
+  UINT8                     ErrorGranularity;           ///< enumeration value from MEMORY_ERROR_GRANULARITY\r
+  UINT8                     ErrorOperation;             ///< enumeration value from MEMORY_ERROR_OPERATION\r
   UINT32                    VendorSyndrome;\r
   UINT32                    MemoryArrayErrorAddress;\r
   UINT32                    DeviceErrorAddress;\r
@@ -1495,8 +1513,8 @@ typedef enum {
 ///\r
 typedef struct {\r
   SMBIOS_STRUCTURE                  Hdr;\r
-  BUILTIN_POINTING_DEVICE_TYPE      Type;\r
-  BUILTIN_POINTING_DEVICE_INTERFACE Interface;\r
+  UINT8                             Type;                   ///< enumeration value from BUILTIN_POINTING_DEVICE_TYPE\r
+  UINT8                             Interface;              ///< enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE\r
   UINT8                             NumberOfButtons;\r
 } SMBIOS_TABLE_TYPE21;\r
 \r
@@ -1528,7 +1546,7 @@ typedef struct {
   SMBIOS_TABLE_STRING               ManufactureDate;\r
   SMBIOS_TABLE_STRING               SerialNumber;\r
   SMBIOS_TABLE_STRING               DeviceName;\r
-  PORTABLE_BATTERY_DEVICE_CHEMISTRY DeviceChemistry;\r
+  UINT8                             DeviceChemistry;              ///< enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY\r
   UINT16                            DeviceCapacity;\r
   UINT16                            DesignVoltage;\r
   SMBIOS_TABLE_STRING               SBDSVersionNumber;\r
@@ -1750,7 +1768,7 @@ typedef enum {
 typedef struct {\r
   SMBIOS_STRUCTURE                        Hdr;\r
   UINT8                                   Reserved[6];\r
-  MISC_BOOT_INFORMATION_STATUS_DATA_TYPE  BootStatus;\r
+  UINT8                                   BootStatus;     ///< enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE\r
 } SMBIOS_TABLE_TYPE32;\r
 \r
 ///\r
@@ -1761,9 +1779,9 @@ typedef struct {
 ///    \r
 typedef struct {\r
   SMBIOS_STRUCTURE          Hdr;\r
-  MEMORY_ERROR_TYPE         ErrorType;          ///< Same as Type 18\r
-  MEMORY_ERROR_GRANULARITY  ErrorGranularity;   ///< Same as Type 18\r
-  MEMORY_ERROR_OPERATION    ErrorOperation;     ///< Same as Type 18\r
+  UINT8                     ErrorType;                    ///< enumeration value from MEMORY_ERROR_TYPE\r
+  UINT8                     ErrorGranularity;             ///< enumeration value from MEMORY_ERROR_GRANULARITY\r
+  UINT8                     ErrorOperation;               ///< enumeration value from MEMORY_ERROR_OPERATION\r
   UINT32                    VendorSyndrome;\r
   UINT64                    MemoryArrayErrorAddress;\r
   UINT64                    DeviceErrorAddress;\r
@@ -1810,9 +1828,9 @@ typedef enum {
 typedef struct {\r
   SMBIOS_STRUCTURE                      Hdr;\r
   SMBIOS_TABLE_STRING                   Description;\r
-  MISC_MANAGEMENT_DEVICE_TYPE           Type;\r
+  UINT8                                 Type;                     ///< enumeration value from MISC_MANAGEMENT_DEVICE_TYPE\r
   UINT32                                Address;\r
-  MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE   AddressType;\r
+  UINT8                                 AddressType;              ///< enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE\r
 } SMBIOS_TABLE_TYPE34;\r
 \r
 ///\r
@@ -1897,7 +1915,7 @@ typedef enum {
 /// \r
 typedef struct {\r
   SMBIOS_STRUCTURE      Hdr;\r
-  BMC_INTERFACE_TYPE    InterfaceType;\r
+  UINT8                 InterfaceType;              ///< enumeration value from BMC_INTERFACE_TYPE\r
   UINT8                 IPMISpecificationRevision;\r
   UINT8                 I2CSlaveAddress;\r
   UINT8                 NVStorageDeviceAddress;\r
@@ -1992,7 +2010,7 @@ typedef enum{
 typedef struct {\r
   SMBIOS_STRUCTURE                  Hdr;\r
   SMBIOS_TABLE_STRING               ReferenceDesignation;\r
-  ONBOARD_DEVICE_EXTENDED_INFO_TYPE DeviceType;\r
+  UINT8                             DeviceType;             ///< enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE\r
   UINT8                             DeviceTypeInstance;\r
   UINT16                            SegmentGroupNum;\r
   UINT8                             BusNum;\r