]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/IpmiNetFnApp.h
MdePkg: TpmPtp: Add CapCRBIdleBypass definition
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / IpmiNetFnApp.h
index cdd3f07c65cfec96e576dbf8911c5cf66fe1c27d..15eeefee150f7ad860e34697c1a72c42c153cfd7 100644 (file)
 //\r
 //  Constants and Structure definitions for "Get Device ID" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  DeviceRevision : 4;\r
+    UINT8  Reserved : 3;\r
+    UINT8  DeviceSdr : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_DEVICE_ID_DEVICE_REV;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  MajorFirmwareRev : 7;\r
+    UINT8  UpdateMode : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_DEVICE_ID_FIRMWARE_REV_1;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  SensorDeviceSupport : 1;\r
+    UINT8  SdrRepositorySupport : 1;\r
+    UINT8  SelDeviceSupport : 1;\r
+    UINT8  FruInventorySupport : 1;\r
+    UINT8  IpmbMessageReceiver : 1;\r
+    UINT8  IpmbMessageGenerator : 1;\r
+    UINT8  BridgeSupport : 1;\r
+    UINT8  ChassisSupport : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_GET_DEVICE_ID_DEVICE_SUPPORT;\r
+\r
 typedef struct {\r
-  UINT8   CompletionCode;\r
-  UINT8   DeviceId;\r
-  UINT8   DeviceRevision : 4;\r
-  UINT8   Reserved : 3;\r
-  UINT8   DeviceSdr : 1;\r
-  UINT8   MajorFirmwareRev : 7;\r
-  UINT8   UpdateMode : 1;\r
-  UINT8   MinorFirmwareRev;\r
-  UINT8   SpecificationVersion;\r
-  UINT8   SensorDeviceSupport : 1;\r
-  UINT8   SdrRepositorySupport : 1;\r
-  UINT8   SelDeviceSupport : 1;\r
-  UINT8   FruInventorySupport : 1;\r
-  UINT8   IpmbMessageReceiver : 1;\r
-  UINT8   IpmbMessageGenerator : 1;\r
-  UINT8   BridgeSupport : 1;\r
-  UINT8   ChassisSupport : 1;\r
-  UINT8   ManufacturerId[3];\r
-  UINT16  ProductId;\r
-  UINT32  AuxFirmwareRevInfo;\r
+  UINT8                              CompletionCode;\r
+  UINT8                              DeviceId;\r
+  IPMI_GET_DEVICE_ID_DEVICE_REV      DeviceRevision;\r
+  IPMI_GET_DEVICE_ID_FIRMWARE_REV_1  FirmwareRev1;\r
+  UINT8                              MinorFirmwareRev;\r
+  UINT8                              SpecificationVersion;\r
+  IPMI_GET_DEVICE_ID_DEVICE_SUPPORT  DeviceSupport;\r
+  UINT8                              ManufacturerId[3];\r
+  UINT16                             ProductId;\r
+  UINT32                             AuxFirmwareRevInfo;\r
 } IPMI_GET_DEVICE_ID_RESPONSE;\r
 \r
 \r
@@ -165,11 +186,17 @@ typedef struct {
 #define IPMI_DEVICE_POWER_STATE_UNKNOWN      0x2A\r
 #define IPMI_DEVICE_POWER_STATE_NO_CHANGE    0x7F\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8  PowerState  : 7;\r
+    UINT8  StateChange : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_ACPI_POWER_STATE;\r
+\r
 typedef struct {\r
-  UINT8  AcpiSystemPowerState  : 7;\r
-  UINT8  AcpiSystemStateChange : 1;\r
-  UINT8  AcpiDevicePowerState  : 7;\r
-  UINT8  AcpiDeviceStateChange : 1;\r
+  IPMI_ACPI_POWER_STATE  SystemPowerState;\r
+  IPMI_ACPI_POWER_STATE  DevicePowerState;\r
 } IPMI_SET_ACPI_POWER_STATE_REQUEST;\r
 \r
 //\r
@@ -227,11 +254,14 @@ typedef struct {
 //\r
 //  Structure definition for timer Use\r
 //\r
-typedef struct {\r
-  UINT8 TimerUse : 3;\r
-  UINT8 Reserved : 3;\r
-  UINT8 TimerRunning : 1;\r
-  UINT8 TimerUseExpirationFlagLog : 1;\r
+typedef union {\r
+  struct {\r
+    UINT8  TimerUse : 3;\r
+    UINT8  Reserved : 3;\r
+    UINT8  TimerRunning : 1;\r
+    UINT8  TimerUseExpirationFlagLog : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
 } IPMI_WATCHDOG_TIMER_USE;\r
 \r
 //\r
@@ -253,11 +283,14 @@ typedef struct {
 //\r
 //  Structure definitions for Timer Actions\r
 //\r
-typedef struct {\r
-  UINT8  TimeoutAction : 3;\r
-  UINT8  Reserved1 : 1;\r
-  UINT8  PreTimeoutInterrupt : 3;\r
-  UINT8  Reserved2 : 1;\r
+typedef union {\r
+  struct {\r
+    UINT8  TimeoutAction : 3;\r
+    UINT8  Reserved1 : 1;\r
+    UINT8  PreTimeoutInterrupt : 3;\r
+    UINT8  Reserved2 : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
 } IPMI_WATCHDOG_TIMER_ACTIONS;\r
 \r
 //\r
@@ -307,15 +340,22 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Set BMC Global Enables " command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  ReceiveMessageQueueInterrupt : 1;\r
+    UINT8  EventMessageBufferFullInterrupt : 1;\r
+    UINT8  EventMessageBuffer : 1;\r
+    UINT8  SystemEventLogging : 1;\r
+    UINT8  Reserved : 1;\r
+    UINT8  Oem0Enable : 1;\r
+    UINT8  Oem1Enable : 1;\r
+    UINT8  Oem2Enable : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_BMC_GLOBAL_ENABLES;\r
+\r
 typedef struct {\r
-  UINT8  EnableReceiveMessageQueueInterrupt : 1;\r
-  UINT8  EnableEventMessageBufferFullInterrupt : 1;\r
-  UINT8  EnableEventMessageBuffer : 1;\r
-  UINT8  EnableSystemEventLogging : 1;\r
-  UINT8  Reserved : 1;\r
-  UINT8  Oem0Enable : 1;\r
-  UINT8  Oem1Enable : 1;\r
-  UINT8  Oem2Enable : 1;\r
+  IPMI_BMC_GLOBAL_ENABLES  SetEnables;\r
 } IPMI_SET_BMC_GLOBAL_ENABLES_REQUEST;\r
 \r
 //\r
@@ -327,15 +367,8 @@ typedef struct {
 //  Constants and Structure definitions for "Get BMC Global Enables " command to follow here\r
 //\r
 typedef struct {\r
-  UINT8  CompletionCode;\r
-  UINT8  ReceiveMessageQueueInterrupt : 1;\r
-  UINT8  EventMessageBufferFullInterrupt : 1;\r
-  UINT8  EventMessageBuffer : 1;\r
-  UINT8  SystemEventLogging : 1;\r
-  UINT8  Reserved : 1;\r
-  UINT8  Oem0Enable : 1;\r
-  UINT8  Oem1Enable : 1;\r
-  UINT8  Oem2Enable : 1;\r
+  UINT8                    CompletionCode;\r
+  IPMI_BMC_GLOBAL_ENABLES  GetEnables;\r
 } IPMI_GET_BMC_GLOBAL_ENABLES_RESPONSE;\r
 \r
 //\r
@@ -346,15 +379,22 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Clear Message Flags" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  ReceiveMessageQueue : 1;\r
+    UINT8  EventMessageBuffer : 1;\r
+    UINT8  Reserved1 : 1;\r
+    UINT8  WatchdogPerTimeoutInterrupt : 1;\r
+    UINT8  Reserved2 : 1;\r
+    UINT8  Oem0 : 1;\r
+    UINT8  Oem1 : 1;\r
+    UINT8  Oem2 : 1;\r
+  } Bits;\r
+  UINT8    Uint8;\r
+} IPMI_MESSAGE_FLAGS;\r
+\r
 typedef struct {\r
-  UINT8  ClearReceiveMessageQueue : 1;\r
-  UINT8  ClearEventMessageBuffer : 1;\r
-  UINT8  Reserved0 : 1;\r
-  UINT8  ClearWatchdogPerTimeoutInterruptFlag : 1;\r
-  UINT8  Reserved : 1;\r
-  UINT8  ClearOem0Enable : 1;\r
-  UINT8  ClearOem1Enable : 1;\r
-  UINT8  ClearOem2Enable : 1;\r
+  IPMI_MESSAGE_FLAGS  ClearFlags;\r
 } IPMI_CLEAR_MESSAGE_FLAGS_REQUEST;\r
 \r
 //\r
@@ -366,15 +406,8 @@ typedef struct {
 //  Constants and Structure definitions for "Get Message Flags" command to follow here\r
 //\r
 typedef struct {\r
-  UINT8  CompletionCode;\r
-  UINT8  ReceiveMessageAvailable : 1;\r
-  UINT8  EventMessageBufferFull : 1;\r
-  UINT8  Reserved0 : 1;\r
-  UINT8  WatchdogPerTimeoutInterruptOccurred : 1;\r
-  UINT8  Reserved : 1;\r
-  UINT8  Oem0DataAvailable : 1;\r
-  UINT8  Oem1DataAvailable : 1;\r
-  UINT8  Oem2DataAvailable : 1;\r
+  UINT8               CompletionCode;\r
+  IPMI_MESSAGE_FLAGS  GetFlags;\r
 } IPMI_GET_MESSAGE_FLAGS_RESPONSE;\r
 \r
 //\r
@@ -394,11 +427,18 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Get Message" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelNumber : 4;\r
+    UINT8  InferredPrivilegeLevel : 4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_MESSAGE_CHANNEL_NUMBER;\r
+\r
 typedef struct {\r
-  UINT8  CompletionCode;\r
-  UINT8  ChannelNumber : 4;\r
-  UINT8  InferredPrivilegeLevel : 4;\r
-  UINT8  MessageData[0];\r
+  UINT8                            CompletionCode;\r
+  IPMI_GET_MESSAGE_CHANNEL_NUMBER  ChannelNumber;\r
+  UINT8                            MessageData[0];\r
 } IPMI_GET_MESSAGE_RESPONSE;\r
 \r
 //\r
@@ -409,13 +449,20 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Send Message" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelNumber : 4;\r
+    UINT8  Authentication : 1;\r
+    UINT8  Encryption : 1;\r
+    UINT8  Tracking : 2;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_SEND_MESSAGE_CHANNEL_NUMBER;\r
+\r
 typedef struct {\r
-  UINT8  CompletionCode;\r
-  UINT8  ChannelNumber : 4;\r
-  UINT8  Authentication : 1;\r
-  UINT8  Encryption : 1;\r
-  UINT8  Tracking : 2;\r
-  UINT8  MessageData[0];\r
+  UINT8                             CompletionCode;\r
+  IPMI_SEND_MESSAGE_CHANNEL_NUMBER  ChannelNumber;\r
+  UINT8                             MessageData[0];\r
 } IPMI_SEND_MESSAGE_REQUEST;\r
 \r
 typedef struct {\r
@@ -545,22 +592,50 @@ typedef struct {
 #define IPMI_CHANNEL_ACCESS_MODES_ALWAYS_AVAILABLE  0x2\r
 #define IPMI_CHANNEL_ACCESS_MODES_SHARED            0x3\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelNo : 4;\r
+    UINT8  Reserved : 4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  Reserved : 6;\r
+    UINT8  MemoryType : 2;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_CHANNEL_ACCESS_TYPE;\r
+\r
 typedef struct {\r
-  UINT8  ChannelNo : 4;\r
-  UINT8  Reserve1 : 4;\r
-  UINT8  Reserve2 : 6;\r
-  UINT8  MemoryType : 2;\r
+  IPMI_GET_CHANNEL_ACCESS_CHANNEL_NUMBER  ChannelNumber;\r
+  IPMI_GET_CHANNEL_ACCESS_TYPE            AccessType;\r
 } IPMI_GET_CHANNEL_ACCESS_REQUEST;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8  AccessMode : 3;\r
+    UINT8  UserLevelAuthEnabled : 1;\r
+    UINT8  MessageAuthEnable : 1;\r
+    UINT8  Alert : 1;\r
+    UINT8  Reserved : 2;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelPriviledgeLimit : 4;\r
+    UINT8  Reserved : 4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT;\r
+\r
 typedef struct {\r
-  UINT8  CompletionCode;\r
-  UINT8  AccessMode : 3;\r
-  UINT8  UserLevelAuthEnabled : 1;\r
-  UINT8  MessageAuthEnable : 1;\r
-  UINT8  Alert : 1;\r
-  UINT8  Reserve1 : 2;\r
-  UINT8  ChannelPriviledgeLimit : 4;\r
-  UINT8  Reserve2 : 4;\r
+  UINT8                                    CompletionCode;\r
+  IPMI_GET_CHANNEL_ACCESS_CHANNEL_ACCESS   ChannelAccess;\r
+  IPMI_GET_CHANNEL_ACCESS_PRIVILEGE_LIMIT  PrivilegeLimit;\r
 } IPMI_GET_CHANNEL_ACCESS_RESPONSE;\r
 \r
 //\r
@@ -603,18 +678,46 @@ typedef struct {
 #define IPMI_CHANNEL_MEDIA_TYPE_OEM_START         0x60\r
 #define IPMI_CHANNEL_MEDIA_TYPE_OEM_END           0x7F\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelNo : 4;\r
+    UINT8  Reserved : 4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_CHANNEL_INFO_CHANNEL_NUMBER;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelMediumType : 7;\r
+    UINT8  Reserved : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_CHANNEL_INFO_MEDIUM_TYPE;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelProtocolType : 5;\r
+    UINT8  Reserved : 3;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_CHANNEL_INFO_PROTOCOL_TYPE;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  ActiveSessionCount : 6;\r
+    UINT8  SessionSupport : 2;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_CHANNEL_INFO_SESSION_SUPPORT;\r
+\r
 typedef struct {\r
   UINT8   CompletionCode;\r
-  UINT8   ChannelNo : 4;\r
-  UINT8   Reserve1 : 4;\r
-  UINT8   ChannelMediumType : 7;\r
-  UINT8   Reserve2 : 1;\r
-  UINT8   ChannelProtocolType : 5;\r
-  UINT8   Reserve3 : 3;\r
-  UINT8   ActiveSessionCount : 6;\r
-  UINT8   SessionSupport : 2;\r
-  UINT8   VendorId[3];\r
-  UINT16  AuxChannelInfo;\r
+  IPMI_CHANNEL_INFO_CHANNEL_NUMBER   ChannelNumber;\r
+  IPMI_CHANNEL_INFO_MEDIUM_TYPE      MediumType;\r
+  IPMI_CHANNEL_INFO_PROTOCOL_TYPE    ProtocolType;\r
+  IPMI_CHANNEL_INFO_SESSION_SUPPORT  SessionSupport;\r
+  UINT8                              VendorId[3];\r
+  UINT16                             AuxChannelInfo;\r
 } IPMI_GET_CHANNEL_INFO_RESPONSE;\r
 \r
 //\r
@@ -643,26 +746,68 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Get User Access" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelNo : 4;\r
+    UINT8  Reserved : 4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_USER_ACCESS_CHANNEL_NUMBER;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  UserId : 6;\r
+    UINT8  Reserved : 2;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_USER_ID;\r
+\r
 typedef struct {\r
-  UINT8   ChannelNo : 4;\r
-  UINT8   Reserved1 : 4;\r
-  UINT8   UserId : 6;\r
-  UINT8   Reserved2 : 2;\r
+  IPMI_GET_USER_ACCESS_CHANNEL_NUMBER  ChannelNumber;\r
+  IPMI_USER_ID                         UserId;\r
 } IPMI_GET_USER_ACCESS_REQUEST;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8  MaxUserId : 6;\r
+    UINT8  Reserved : 2;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_USER_ACCESS_MAX_USER_ID;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  CurrentUserId : 6;\r
+    UINT8  UserIdEnableStatus : 2;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_USER_ACCESS_CURRENT_USER;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  FixedUserId : 6;\r
+    UINT8  Reserved : 2;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_USER_ACCESS_FIXED_NAME_USER;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  UserPrivilegeLimit : 4;\r
+    UINT8  EnableIpmiMessaging : 1;\r
+    UINT8  EnableUserLinkAuthetication : 1;\r
+    UINT8  UserAccessAvailable : 1;\r
+    UINT8  Reserved : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_USER_ACCESS_CHANNEL_ACCESS;\r
+\r
 typedef struct {\r
-  UINT8   CompletionCode;\r
-  UINT8   MaxUserId : 6;\r
-  UINT8   Reserved1 : 2;\r
-  UINT8   CurrentUserId : 6;\r
-  UINT8   UserIdEnableStatus : 2;\r
-  UINT8   FixedUserId : 6;\r
-  UINT8   Reserved2 : 2;\r
-  UINT8   UserPrivilegeLimit : 4;\r
-  UINT8   EnableIpmiMessaging : 1;\r
-  UINT8   EnableUserLinkAuthetication : 1;\r
-  UINT8   UserAccessAvailable : 1;\r
-  UINT8   Reserved3 : 1;\r
+  UINT8                                 CompletionCode;\r
+  IPMI_GET_USER_ACCESS_MAX_USER_ID      MaxUserId;\r
+  IPMI_GET_USER_ACCESS_CURRENT_USER     CurrentUser;\r
+  IPMI_GET_USER_ACCESS_FIXED_NAME_USER  FixedNameUser;\r
+  IPMI_GET_USER_ACCESS_CHANNEL_ACCESS   ChannelAccess;\r
 } IPMI_GET_USER_ACCESS_RESPONSE;\r
 \r
 //\r
@@ -674,9 +819,8 @@ typedef struct {
 //  Constants and Structure definitions for "Set User Name" command to follow here\r
 //\r
 typedef struct {\r
-  UINT8  UserId : 6;\r
-  UINT8  Reserved : 2;\r
-  UINT8  UserName[16];\r
+  IPMI_USER_ID  UserId;\r
+  UINT8         UserName[16];\r
 } IPMI_SET_USER_NAME_REQUEST;\r
 \r
 //\r
@@ -688,8 +832,7 @@ typedef struct {
 //  Constants and Structure definitions for "Get User Name" command to follow here\r
 //\r
 typedef struct {\r
-  UINT8  UserId : 6;\r
-  UINT8  Reserved : 2;\r
+  IPMI_USER_ID  UserId;\r
 } IPMI_GET_USER_NAME_REQUEST;\r
 \r
 typedef struct {\r
@@ -720,13 +863,27 @@ typedef struct {
 #define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_16  0x0\r
 #define IPMI_SET_USER_PASSWORD_PASSWORD_SIZE_20  0x1\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8  UserId : 6;\r
+    UINT8  Reserved : 1;\r
+    UINT8  PasswordSize : 1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_SET_USER_PASSWORD_USER_ID;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  Operation : 2;\r
+    UINT8  Reserved : 6;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_SET_USER_PASSWORD_OPERATION;\r
+\r
 typedef struct {\r
-  UINT8   UserId : 6;\r
-  UINT8   Reserved1 : 1;\r
-  UINT8   PasswordSize : 1;\r
-  UINT8   Operation : 2;\r
-  UINT8   Reserved2 : 6;\r
-  UINT8   PasswordData[0];  // 16 or 20 bytes, depending on the 'PasswordSize' field\r
+  IPMI_SET_USER_PASSWORD_USER_ID    UserId;\r
+  IPMI_SET_USER_PASSWORD_OPERATION  Operation;\r
+  UINT8                             PasswordData[0];  // 16 or 20 bytes, depending on the 'PasswordSize' field\r
 } IPMI_SET_USER_PASSWORD_REQUEST;\r
 \r
 //\r