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
//\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
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
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
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