audk/MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h

465 lines
13 KiB
C

/** @file
IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.
This file contains all NetFn Chassis commands, including:
Chassis Commands (Chapter 28)
See IPMI specification, Appendix G, Command Assignments
and Appendix H, Sub-function Assignments.
Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>
This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License
which accompanies this distribution. The full text of the license may be found at
http://opensource.org/licenses/bsd-license.php
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#ifndef _IPMI_NET_FN_CHASSIS_H_
#define _IPMI_NET_FN_CHASSIS_H_
#pragma pack (1)
//
// Net function definition for Chassis command
//
#define IPMI_NETFN_CHASSIS 0x00
//
// Below is Definitions for Chassis commands (Chapter 28)
//
//
// Definitions for Get Chassis Capabilities command
//
#define IPMI_CHASSIS_GET_CAPABILITIES 0x00
//
// Constants and Structure definitions for "Get Chassis Capabilities" command to follow here
//
typedef struct {
UINT8 CompletionCode;
UINT8 CapabilitiesFlags;
UINT8 ChassisFruInfoDeviceAddress;
UINT8 ChassisSDRDeviceAddress;
UINT8 ChassisSELDeviceAddress;
UINT8 ChassisSystemManagementDeviceAddress;
UINT8 ChassisBridgeDeviceAddress;
} IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE;
//
// Definitions for Get Chassis Status command
//
#define IPMI_CHASSIS_GET_STATUS 0x01
//
// Constants and Structure definitions for "Get Chassis Status" command to follow here
//
typedef struct {
UINT8 CompletionCode;
UINT8 CurrentPowerState;
UINT8 LastPowerEvent;
UINT8 MiscChassisState;
UINT8 FrontPanelButtonCapabilities;
} IPMI_GET_CHASSIS_STATUS_RESPONSE;
//
// Definitions for Chassis Control command
//
#define IPMI_CHASSIS_CONTROL 0x02
//
// Constants and Structure definitions for "Chassis Control" command to follow here
//
typedef union {
struct {
UINT8 ChassisControl:4;
UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_CHASSIS_CONTROL_CHASSIS_CONTROL;
typedef struct {
IPMI_CHASSIS_CONTROL_CHASSIS_CONTROL ChassisControl;
} IPMI_CHASSIS_CONTROL_REQUEST;
//
// Definitions for Chassis Reset command
//
#define IPMI_CHASSIS_RESET 0x03
//
// Constants and Structure definitions for "Chassis Reset" command to follow here
//
//
// Definitions for Chassis Identify command
//
#define IPMI_CHASSIS_IDENTIFY 0x04
//
// Constants and Structure definitions for "Chassis Identify" command to follow here
//
//
// Definitions for Set Chassis Capabilities command
//
#define IPMI_CHASSIS_SET_CAPABILITIES 0x05
//
// Constants and Structure definitions for "Set Chassis Capabilities" command to follow here
//
//
// Definitions for Set Power Restore Policy command
//
#define IPMI_CHASSIS_SET_POWER_RESTORE_POLICY 0x06
//
// Constants and Structure definitions for "Set Power Restore Policy" command to follow here
//
typedef union {
struct {
UINT8 PowerRestorePolicy : 3;
UINT8 Reserved : 5;
} Bits;
UINT8 Uint8;
} IPMI_POWER_RESTORE_POLICY;
typedef struct {
IPMI_POWER_RESTORE_POLICY PowerRestorePolicy;
} IPMI_SET_POWER_RESTORE_POLICY_REQUEST;
typedef struct {
UINT8 CompletionCode;
UINT8 PowerRestorePolicySupport;
} IPMI_SET_POWER_RESTORE_POLICY_RESPONSE;
//
// Definitions for Get System Restart Cause command
//
#define IPMI_CHASSIS_GET_SYSTEM_RESTART_CAUSE 0x07
//
// Constants and Structure definitions for "Get System Restart Cause" command to follow here
//
#define IPMI_SYSTEM_RESTART_CAUSE_UNKNOWN 0x0
#define IPMI_SYSTEM_RESTART_CAUSE_CHASSIS_CONTROL_COMMAND 0x1
#define IPMI_SYSTEM_RESTART_CAUSE_PUSHBUTTON_RESET 0x2
#define IPMI_SYSTEM_RESTART_CAUSE_PUSHBUTTON_POWERUP 0x3
#define IPMI_SYSTEM_RESTART_CAUSE_WATCHDOG_EXPIRE 0x4
#define IPMI_SYSTEM_RESTART_CAUSE_OEM 0x5
#define IPMI_SYSTEM_RESTART_CAUSE_AUTO_POWER_ALWAYS_RESTORE 0x6
#define IPMI_SYSTEM_RESTART_CAUSE_AUTO_POWER_RESTORE_PREV 0x7
#define IPMI_SYSTEM_RESTART_CAUSE_PEF_RESET 0x8
#define IPMI_SYSTEM_RESTART_CAUSE_PEF_POWERCYCLE 0x9
#define IPMI_SYSTEM_RESTART_CAUSE_SOFT_RESET 0xA
#define IPMI_SYSTEM_RESTART_CAUSE_RTC_POWERUP 0xB
typedef union {
struct {
UINT8 Cause:4;
UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_SYSTEM_RESTART_CAUSE;
typedef struct {
UINT8 CompletionCode;
IPMI_SYSTEM_RESTART_CAUSE RestartCause;
UINT8 ChannelNumber;
} IPMI_GET_SYSTEM_RESTART_CAUSE_RESPONSE;
//
// Definitions for Set System BOOT options command
//
#define IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS 0x08
//
// Constants and Structure definitions for "Set System boot options" command to follow here
//
typedef union {
struct {
UINT8 ParameterSelector:7;
UINT8 MarkParameterInvalid:1;
} Bits;
UINT8 Uint8;
} IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID;
typedef struct {
IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID ParameterValid;
UINT8 ParameterData[0];
} IPMI_SET_BOOT_OPTIONS_REQUEST;
//
// Definitions for Get System Boot options command
//
#define IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS 0x09
//
// Constants and Structure definitions for "Get System boot options" command to follow here
//
typedef union {
struct {
UINT8 ParameterSelector:7;
UINT8 Reserved:1;
} Bits;
UINT8 Uint8;
} IPMI_GET_BOOT_OPTIONS_PARAMETER_SELECTOR;
typedef struct {
IPMI_GET_BOOT_OPTIONS_PARAMETER_SELECTOR ParameterSelector;
UINT8 SetSelector;
UINT8 BlockSelector;
} IPMI_GET_BOOT_OPTIONS_REQUEST;
typedef struct {
UINT8 Parameter;
UINT8 Valid;
UINT8 Data1;
UINT8 Data2;
UINT8 Data3;
UINT8 Data4;
UINT8 Data5;
} IPMI_GET_THE_SYSTEM_BOOT_OPTIONS;
typedef struct {
UINT8 ParameterVersion;
UINT8 ParameterValid;
UINT8 ChannelNumber;
UINT32 SessionId;
UINT32 TimeStamp;
UINT8 Reserved[3];
} IPMI_BOOT_INITIATOR;
//
// Definitions for boot option parameter selector
//
#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SET_IN_PROGRESS 0x0
#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SELECTOR 0x1
#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SCAN 0x2
#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_BMC_BOOT_FLAG 0x3
#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INFO_ACK 0x4
#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_FLAGS 0x5
#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_INFO 0x6
#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_MAILBOX 0x7
#define IPMI_BOOT_OPTIONS_PARAMETER_OEM_BEGIN 0x60
#define IPMI_BOOT_OPTIONS_PARAMETER_OEM_END 0x7F
//
// Response Parameters for IPMI Get Boot Options
//
typedef union {
struct {
UINT8 SetInProgress : 2;
UINT8 Reserved : 6;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0;
typedef struct {
UINT8 ServicePartitionSelector;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1;
typedef union {
struct {
UINT8 ServicePartitionDiscovered : 1;
UINT8 ServicePartitionScanRequest : 1;
UINT8 Reserved: 6;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2;
typedef union {
struct {
UINT8 BmcBootFlagValid : 5;
UINT8 Reserved : 3;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3;
typedef struct {
UINT8 WriteMask;
UINT8 BootInitiatorAcknowledgeData;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4;
//
// Definitions for the 'Boot device selector' field of Boot Option Parameters #5
//
#define IPMI_BOOT_DEVICE_SELECTOR_NO_OVERRIDE 0x0
#define IPMI_BOOT_DEVICE_SELECTOR_PXE 0x1
#define IPMI_BOOT_DEVICE_SELECTOR_HARDDRIVE 0x2
#define IPMI_BOOT_DEVICE_SELECTOR_HARDDRIVE_SAFE_MODE 0x3
#define IPMI_BOOT_DEVICE_SELECTOR_DIAGNOSTIC_PARTITION 0x4
#define IPMI_BOOT_DEVICE_SELECTOR_CD_DVD 0x5
#define IPMI_BOOT_DEVICE_SELECTOR_BIOS_SETUP 0x6
#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_FLOPPY 0x7
#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_CD_DVD 0x8
#define IPMI_BOOT_DEVICE_SELECTOR_PRIMARY_REMOTE_MEDIA 0x9
#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_HARDDRIVE 0xB
#define IPMI_BOOT_DEVICE_SELECTOR_FLOPPY 0xF
#define BOOT_OPTION_HANDLED_BY_BIOS 0x01
//
// Constant definitions for the 'BIOS Mux Control Override' field of Boot Option Parameters #5
//
#define BIOS_MUX_CONTROL_OVERRIDE_RECOMMEND_SETTING 0x00
#define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_BMC 0x01
#define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_SYSTEM 0x02
typedef union {
struct {
UINT8 Reserved:5;
UINT8 BiosBootType:1;
UINT8 PersistentOptions:1;
UINT8 BootFlagValid:1;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_1;
typedef union {
struct {
UINT8 LockReset:1;
UINT8 ScreenBlank:1;
UINT8 BootDeviceSelector:4;
UINT8 LockKeyboard:1;
UINT8 CmosClear:1;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_2;
typedef union {
struct {
UINT8 ConsoleRedirection:2;
UINT8 LockSleep:1;
UINT8 UserPasswordBypass:1;
UINT8 ForceProgressEventTrap:1;
UINT8 BiosVerbosity:2;
UINT8 LockPower:1;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_3;
typedef union {
struct {
UINT8 BiosMuxControlOverride:3;
UINT8 BiosSharedModeOverride:1;
UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_4;
typedef union {
struct {
UINT8 DeviceInstanceSelector:5;
UINT8 Reserved:3;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_5;
typedef struct {
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_1 Data1;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_2 Data2;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_3 Data3;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_4 Data4;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_5 Data5;
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5;
typedef union {
struct {
UINT8 ChannelNumber:4;
UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_BOOT_OPTIONS_CHANNEL_NUMBER;
typedef struct {
IPMI_BOOT_OPTIONS_CHANNEL_NUMBER ChannelNumber;
UINT8 SessionId[4];
UINT8 BootInfoTimeStamp[4];
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6;
typedef struct {
UINT8 SetSelector;
UINT8 BlockData[16];
} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7;
typedef union {
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0 Parm0;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1 Parm1;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2 Parm2;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3 Parm3;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4 Parm4;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5 Parm5;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6 Parm6;
IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7 Parm7;
} IPMI_BOOT_OPTIONS_PARAMETERS;
typedef union {
struct {
UINT8 ParameterVersion:4;
UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION;
typedef union {
struct {
UINT8 ParameterSelector:7;
UINT8 ParameterValid:1;
} Bits;
UINT8 Uint8;
} IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID;
typedef struct {
UINT8 CompletionCode;
IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION ParameterVersion;
IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID ParameterValid;
UINT8 ParameterData[0];
} IPMI_GET_BOOT_OPTIONS_RESPONSE;
//
// Definitions for Set front panel button enables command
//
#define IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A
//
// Constants and Structure definitions for "Set front panel button enables" command to follow here
//
typedef union {
struct {
UINT8 DisablePoweroffButton:1;
UINT8 DisableResetButton:1;
UINT8 DisableDiagnosticInterruptButton:1;
UINT8 DisableStandbyButton:1;
UINT8 Reserved:4;
} Bits;
UINT8 Uint8;
} IPMI_FRONT_PANEL_BUTTON_ENABLES;
typedef struct {
IPMI_FRONT_PANEL_BUTTON_ENABLES FrontPanelButtonEnables;
} IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST;
//
// Definitions for Set Power Cycle Interval command
//
#define IPMI_CHASSIS_SET_POWER_CYCLE_INTERVALS 0x0B
//
// Constants and Structure definitions for "Set Power Cycle Interval" command to follow here
//
//
// Definitions for Get POH Counter command
//
#define IPMI_CHASSIS_GET_POH_COUNTER 0x0F
//
// Constants and Structure definitions for "Get POH Counter" command to follow here
//
#pragma pack()
#endif