]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h
MdePkg/PiFirmwareFile: fix undefined behavior in FFS_FILE_SIZE
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / IpmiNetFnChassis.h
index 7bf6cf31010ef83dcd501194cf7bfb65e592afeb..79db55523d5ea21a8ab1f85ff87645b4929564a9 100644 (file)
@@ -7,14 +7,8 @@
   See IPMI specification, Appendix G, Command Assignments\r
   and Appendix H, Sub-function Assignments.\r
 \r
-  Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR>\r
-  This program and the accompanying materials\r
-  are licensed and made available under the terms and conditions of the BSD License\r
-  which accompanies this distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+  Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 **/\r
 \r
 #ifndef _IPMI_NET_FN_CHASSIS_H_\r
 //\r
 //  Constants and Structure definitions for "Get Chassis Capabilities" command to follow here\r
 //\r
+typedef struct {\r
+  UINT8   CompletionCode;\r
+  UINT8   CapabilitiesFlags;\r
+  UINT8   ChassisFruInfoDeviceAddress;\r
+  UINT8   ChassisSDRDeviceAddress;\r
+  UINT8   ChassisSELDeviceAddress;\r
+  UINT8   ChassisSystemManagementDeviceAddress;\r
+  UINT8   ChassisBridgeDeviceAddress;\r
+} IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE;\r
 \r
 //\r
 //  Definitions for Get Chassis Status command\r
 //\r
 //  Constants and Structure definitions for "Get Chassis Status" command to follow here\r
 //\r
+typedef struct {\r
+  UINT8   CompletionCode;\r
+  UINT8   CurrentPowerState;\r
+  UINT8   LastPowerEvent;\r
+  UINT8   MiscChassisState;\r
+  UINT8   FrontPanelButtonCapabilities;\r
+} IPMI_GET_CHASSIS_STATUS_RESPONSE;\r
 \r
 //\r
 //  Definitions for Chassis Control command\r
 //\r
 //  Constants and Structure definitions for "Chassis Control" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  ChassisControl:4;\r
+    UINT8  Reserved:4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_CHASSIS_CONTROL_CHASSIS_CONTROL;\r
+\r
+typedef struct {\r
+  IPMI_CHASSIS_CONTROL_CHASSIS_CONTROL  ChassisControl;\r
+} IPMI_CHASSIS_CONTROL_REQUEST;\r
 \r
 //\r
 //  Definitions for Chassis Reset command\r
 //\r
 //  Constants and Structure definitions for "Set Power Restore Policy" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  PowerRestorePolicy : 3;\r
+    UINT8  Reserved : 5;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_POWER_RESTORE_POLICY;\r
+\r
+typedef struct {\r
+  IPMI_POWER_RESTORE_POLICY  PowerRestorePolicy;\r
+} IPMI_SET_POWER_RESTORE_POLICY_REQUEST;\r
+\r
+typedef struct {\r
+  UINT8   CompletionCode;\r
+  UINT8   PowerRestorePolicySupport;\r
+} IPMI_SET_POWER_RESTORE_POLICY_RESPONSE;\r
 \r
 //\r
 //  Definitions for Get System Restart Cause command\r
 //\r
 //  Constants and Structure definitions for "Get System Restart Cause" command to follow here\r
 //\r
-typedef enum {\r
-  Unknown,\r
-  ChassisControlCommand,\r
-  ResetViaPushButton,\r
-  PowerupViaPowerButton,\r
-  WatchdogExpiration,\r
-  Oem,\r
-  AutoPowerOnAlwaysRestore,\r
-  AutoPowerOnRestorePrevious,\r
-  ResetViaPef,\r
-  PowerCycleViaPef,\r
-  SoftReset,\r
-  PowerUpViaRtc\r
+#define IPMI_SYSTEM_RESTART_CAUSE_UNKNOWN                    0x0\r
+#define IPMI_SYSTEM_RESTART_CAUSE_CHASSIS_CONTROL_COMMAND    0x1\r
+#define IPMI_SYSTEM_RESTART_CAUSE_PUSHBUTTON_RESET           0x2\r
+#define IPMI_SYSTEM_RESTART_CAUSE_PUSHBUTTON_POWERUP         0x3\r
+#define IPMI_SYSTEM_RESTART_CAUSE_WATCHDOG_EXPIRE            0x4\r
+#define IPMI_SYSTEM_RESTART_CAUSE_OEM                        0x5\r
+#define IPMI_SYSTEM_RESTART_CAUSE_AUTO_POWER_ALWAYS_RESTORE  0x6\r
+#define IPMI_SYSTEM_RESTART_CAUSE_AUTO_POWER_RESTORE_PREV    0x7\r
+#define IPMI_SYSTEM_RESTART_CAUSE_PEF_RESET                  0x8\r
+#define IPMI_SYSTEM_RESTART_CAUSE_PEF_POWERCYCLE             0x9\r
+#define IPMI_SYSTEM_RESTART_CAUSE_SOFT_RESET                 0xA\r
+#define IPMI_SYSTEM_RESTART_CAUSE_RTC_POWERUP                0xB\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  Cause:4;\r
+    UINT8  Reserved:4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
 } IPMI_SYSTEM_RESTART_CAUSE;\r
 \r
 typedef struct {\r
-  UINT8   Cause:4;\r
-  UINT8   Reserved:4;\r
-  UINT8   ChannelNumber;\r
-} GET_SYSTEM_RESTART_CAUSE_RESPONSE;\r
+  UINT8                      CompletionCode;\r
+  IPMI_SYSTEM_RESTART_CAUSE  RestartCause;\r
+  UINT8                      ChannelNumber;\r
+} IPMI_GET_SYSTEM_RESTART_CAUSE_RESPONSE;\r
 \r
 //\r
 //  Definitions for Set System BOOT options command\r
@@ -130,24 +173,41 @@ typedef struct {
 //\r
 //  Constants and Structure definitions for "Set System boot options" command to follow here\r
 //\r
-typedef struct {\r
-  UINT8    ParameterSelector:7;\r
-  UINT8    MarkParameterInvalid:1;\r
-  UINT8    ParameterData[1];\r
-} IPMI_SET_BOOT_OPTIONS_REQUEST;\r
+typedef union {\r
+  struct {\r
+    UINT8  ParameterSelector:7;\r
+    UINT8  MarkParameterInvalid:1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID;\r
 \r
 typedef struct {\r
-  UINT8   CompletionCode:8;\r
-} IPMI_SET_BOOT_OPTIONS_RESPONSE;\r
+  IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID  ParameterValid;\r
+  UINT8                                  ParameterData[0];\r
+} IPMI_SET_BOOT_OPTIONS_REQUEST;\r
 \r
 //\r
-//  Definitions for Get System BOOT options command\r
+//  Definitions for Get System Boot options command\r
 //\r
 #define IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS 0x09\r
 \r
 //\r
 //  Constants and Structure definitions for "Get System boot options" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  ParameterSelector:7;\r
+    UINT8  Reserved:1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_BOOT_OPTIONS_PARAMETER_SELECTOR;\r
+\r
+typedef struct {\r
+  IPMI_GET_BOOT_OPTIONS_PARAMETER_SELECTOR  ParameterSelector;\r
+  UINT8                                     SetSelector;\r
+  UINT8                                     BlockSelector;\r
+} IPMI_GET_BOOT_OPTIONS_REQUEST;\r
+\r
 typedef struct {\r
   UINT8 Parameter;\r
   UINT8 Valid;\r
@@ -167,33 +227,50 @@ typedef struct {
   UINT8   Reserved[3];\r
 } IPMI_BOOT_INITIATOR;\r
 \r
-typedef struct {\r
-  UINT8    ParameterSelector;\r
-  UINT8    SetSelector;\r
-  UINT8    BlockSelector;\r
-} IPMI_GET_BOOT_OPTIONS_REQUEST;\r
+//\r
+// Definitions for boot option parameter selector\r
+//\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SET_IN_PROGRESS             0x0\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SELECTOR  0x1\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SCAN      0x2\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_BMC_BOOT_FLAG               0x3\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INFO_ACK                        0x4\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_FLAGS                           0x5\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_INFO                  0x6\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_MAILBOX               0x7\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_OEM_BEGIN                            0x60\r
+#define IPMI_BOOT_OPTIONS_PARAMETER_OEM_END                              0x7F\r
 \r
 //\r
 // Response Parameters for IPMI Get Boot Options\r
 //\r
-typedef struct {\r
-  UINT8   SetInProgress: 2;\r
-  UINT8   Reserved: 6;\r
+typedef union {\r
+  struct {\r
+    UINT8  SetInProgress : 2;\r
+    UINT8  Reserved : 6;\r
+  } Bits;\r
+  UINT8  Uint8;\r
 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0;\r
 \r
 typedef struct {\r
   UINT8   ServicePartitionSelector;\r
 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1;\r
 \r
-typedef struct {\r
-  UINT8   ServicePartitionDiscovered:1;\r
-  UINT8   ServicePartitionScanRequest:1;\r
-  UINT8   Reserved: 5;\r
+typedef union {\r
+  struct {\r
+    UINT8  ServicePartitionDiscovered : 1;\r
+    UINT8  ServicePartitionScanRequest : 1;\r
+    UINT8  Reserved: 6;\r
+  } Bits;\r
+  UINT8  Uint8;\r
 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2;\r
 \r
-typedef struct {\r
-  UINT8   BmcBootFlagValid: 5;\r
-  UINT8   Reserved: 3;\r
+typedef union {\r
+  struct {\r
+    UINT8  BmcBootFlagValid : 5;\r
+    UINT8  Reserved : 3;\r
+  } Bits;\r
+  UINT8  Uint8;\r
 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3;\r
 \r
 typedef struct {\r
@@ -201,45 +278,101 @@ typedef struct {
   UINT8   BootInitiatorAcknowledgeData;\r
 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4;\r
 \r
+//\r
+//  Definitions for the 'Boot device selector' field of Boot Option Parameters #5\r
+//\r
+#define IPMI_BOOT_DEVICE_SELECTOR_NO_OVERRIDE           0x0\r
+#define IPMI_BOOT_DEVICE_SELECTOR_PXE                   0x1\r
+#define IPMI_BOOT_DEVICE_SELECTOR_HARDDRIVE             0x2\r
+#define IPMI_BOOT_DEVICE_SELECTOR_HARDDRIVE_SAFE_MODE   0x3\r
+#define IPMI_BOOT_DEVICE_SELECTOR_DIAGNOSTIC_PARTITION  0x4\r
+#define IPMI_BOOT_DEVICE_SELECTOR_CD_DVD                0x5\r
+#define IPMI_BOOT_DEVICE_SELECTOR_BIOS_SETUP            0x6\r
+#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_FLOPPY         0x7\r
+#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_CD_DVD         0x8\r
+#define IPMI_BOOT_DEVICE_SELECTOR_PRIMARY_REMOTE_MEDIA  0x9\r
+#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_HARDDRIVE      0xB\r
+#define IPMI_BOOT_DEVICE_SELECTOR_FLOPPY                0xF\r
+\r
 #define BOOT_OPTION_HANDLED_BY_BIOS 0x01\r
 \r
+//\r
+//  Constant definitions for the 'BIOS Mux Control Override' field of Boot Option Parameters #5\r
+//\r
+#define BIOS_MUX_CONTROL_OVERRIDE_RECOMMEND_SETTING    0x00\r
+#define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_BMC         0x01\r
+#define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_SYSTEM      0x02\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  Reserved:5;\r
+    UINT8  BiosBootType:1;\r
+    UINT8  PersistentOptions:1;\r
+    UINT8  BootFlagValid:1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_1;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  LockReset:1;\r
+    UINT8  ScreenBlank:1;\r
+    UINT8  BootDeviceSelector:4;\r
+    UINT8  LockKeyboard:1;\r
+    UINT8  CmosClear:1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_2;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  ConsoleRedirection:2;\r
+    UINT8  LockSleep:1;\r
+    UINT8  UserPasswordBypass:1;\r
+    UINT8  ForceProgressEventTrap:1;\r
+    UINT8  BiosVerbosity:2;\r
+    UINT8  LockPower:1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_3;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  BiosMuxControlOverride:3;\r
+    UINT8  BiosSharedModeOverride:1;\r
+    UINT8  Reserved:4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_4;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  DeviceInstanceSelector:5;\r
+    UINT8  Reserved:3;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_5;\r
+\r
 typedef struct {\r
-  //\r
-  // Data 1\r
-  //\r
-  UINT8   Reserved0:6;\r
-  UINT8   PersistentOptions:1;\r
-  UINT8   BootFlagValid:1;\r
-  //\r
-  // Data 2\r
-  //\r
-  UINT8   LockReset:1;\r
-  UINT8   ScreenBlank:1;\r
-  UINT8   BootDeviceSelector:4;\r
-  UINT8   LockKeyboard:1;\r
-  UINT8   CmosClear:1;\r
-  //\r
-  //\r
-  // Data 3\r
-  UINT8   ConsoleRedirection:2;\r
-  UINT8   LockSleep:1;\r
-  UINT8   UserPasswordBypass:1;\r
-  UINT8   ForceProgressEventTrap:1;\r
-  UINT8   BiosVerbosity:2;\r
-  UINT8   LockPower:1;\r
-  //\r
-  // Data 4\r
-  //\r
-  UINT8   BiosMuxControlOverride:2;\r
-  UINT8   BiosSharedModeOverride:1;\r
-  UINT8   Reserved1:4;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_1  Data1;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_2  Data2;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_3  Data3;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_4  Data4;\r
+  IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_5  Data5;\r
 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8  ChannelNumber:4;\r
+    UINT8  Reserved:4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_BOOT_OPTIONS_CHANNEL_NUMBER;\r
+\r
 typedef struct {\r
-  UINT8   ChannelNumber:4;\r
-  UINT8   Reserved:4;\r
-  UINT8   SessionId[4];\r
-  UINT8   BootInfoTimeStamp[4];\r
+  IPMI_BOOT_OPTIONS_CHANNEL_NUMBER  ChannelNumber;\r
+  UINT8                             SessionId[4];\r
+  UINT8                             BootInfoTimeStamp[4];\r
 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6;\r
 \r
 typedef struct {\r
@@ -258,30 +391,51 @@ typedef union {
   IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7   Parm7;\r
 } IPMI_BOOT_OPTIONS_PARAMETERS;\r
 \r
+typedef union {\r
+  struct {\r
+    UINT8  ParameterVersion:4;\r
+    UINT8  Reserved:4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION;\r
+\r
+typedef union {\r
+  struct {\r
+    UINT8  ParameterSelector:7;\r
+    UINT8  ParameterValid:1;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID;\r
+\r
 typedef struct {\r
-  UINT8    ParameterVersion:4;\r
-  UINT8    Reserved:4;\r
-  UINT8    ParameterSelector:7;\r
-  UINT8    ParameterValid:1;\r
-  UINT8    ParameterData[1];\r
+  UINT8                                    CompletionCode;\r
+  IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION  ParameterVersion;\r
+  IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID    ParameterValid;\r
+  UINT8                                    ParameterData[0];\r
 } IPMI_GET_BOOT_OPTIONS_RESPONSE;\r
 \r
 //\r
 //  Definitions for Set front panel button enables command\r
 //\r
-#define IPMI_CHASSIS_SET_FP_BUTTON_ENABLES 0x0A\r
-\r
-typedef struct {\r
-  UINT8    DisablePoweroffButton:1;\r
-  UINT8    DisableResetButton:1;\r
-  UINT8    DisableDiagnosticInterruptButton:1;\r
-  UINT8    DisableStandbyButton:1;\r
-  UINT8    Reserved:4;\r
-} IPMI_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST;\r
+#define IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A\r
 \r
 //\r
 //  Constants and Structure definitions for "Set front panel button enables" command to follow here\r
 //\r
+typedef union {\r
+  struct {\r
+    UINT8  DisablePoweroffButton:1;\r
+    UINT8  DisableResetButton:1;\r
+    UINT8  DisableDiagnosticInterruptButton:1;\r
+    UINT8  DisableStandbyButton:1;\r
+    UINT8  Reserved:4;\r
+  } Bits;\r
+  UINT8  Uint8;\r
+} IPMI_FRONT_PANEL_BUTTON_ENABLES;\r
+\r
+typedef struct {\r
+  IPMI_FRONT_PANEL_BUTTON_ENABLES  FrontPanelButtonEnables;\r
+} IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST;\r
 \r
 //\r
 //  Definitions for Set Power Cycle Interval command\r