1 /** @file 2 IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1. 3 4 This file contains all NetFn Chassis commands, including: 5 Chassis Commands (Chapter 28) 6 7 See IPMI specification, Appendix G, Command Assignments 8 and Appendix H, Sub-function Assignments. 9 10 Copyright (c) 1999 - 2015, Intel Corporation. All rights reserved.<BR> 11 This program and the accompanying materials 12 are licensed and made available under the terms and conditions of the BSD License 13 which accompanies this distribution. The full text of the license may be found at 14 http://opensource.org/licenses/bsd-license.php 15 16 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 17 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 18 **/ 19 20 #ifndef _IPMI_NET_FN_CHASSIS_H_ 21 #define _IPMI_NET_FN_CHASSIS_H_ 22 23 #pragma pack (1) 24 // 25 // Net function definition for Chassis command 26 // 27 #define IPMI_NETFN_CHASSIS 0x00 28 29 // 30 // Below is Definitions for Chassis commands (Chapter 28) 31 // 32 33 // 34 // Definitions for Get Chassis Capabilities command 35 // 36 #define IPMI_CHASSIS_GET_CAPABILITIES 0x00 37 38 // 39 // Constants and Structure definitions for "Get Chassis Capabilities" command to follow here 40 // 41 42 // 43 // Definitions for Get Chassis Status command 44 // 45 #define IPMI_CHASSIS_GET_STATUS 0x01 46 47 // 48 // Constants and Structure definitions for "Get Chassis Status" command to follow here 49 // 50 51 // 52 // Definitions for Chassis Control command 53 // 54 #define IPMI_CHASSIS_CONTROL 0x02 55 56 // 57 // Constants and Structure definitions for "Chassis Control" command to follow here 58 // 59 60 // 61 // Definitions for Chassis Reset command 62 // 63 #define IPMI_CHASSIS_RESET 0x03 64 65 // 66 // Constants and Structure definitions for "Chassis Reset" command to follow here 67 // 68 69 // 70 // Definitions for Chassis Identify command 71 // 72 #define IPMI_CHASSIS_IDENTIFY 0x04 73 74 // 75 // Constants and Structure definitions for "Chassis Identify" command to follow here 76 // 77 78 // 79 // Definitions for Set Chassis Capabilities command 80 // 81 #define IPMI_CHASSIS_SET_CAPABILITIES 0x05 82 83 // 84 // Constants and Structure definitions for "Set Chassis Capabilities" command to follow here 85 // 86 87 // 88 // Definitions for Set Power Restore Policy command 89 // 90 #define IPMI_CHASSIS_SET_POWER_RESTORE_POLICY 0x06 91 92 // 93 // Constants and Structure definitions for "Set Power Restore Policy" command to follow here 94 // 95 96 // 97 // Definitions for Get System Restart Cause command 98 // 99 #define IPMI_CHASSIS_GET_SYSTEM_RESTART_CAUSE 0x07 100 101 // 102 // Constants and Structure definitions for "Get System Restart Cause" command to follow here 103 // 104 typedef enum { 105 Unknown, 106 ChassisControlCommand, 107 ResetViaPushButton, 108 PowerupViaPowerButton, 109 WatchdogExpiration, 110 Oem, 111 AutoPowerOnAlwaysRestore, 112 AutoPowerOnRestorePrevious, 113 ResetViaPef, 114 PowerCycleViaPef, 115 SoftReset, 116 PowerUpViaRtc 117 } IPMI_SYSTEM_RESTART_CAUSE; 118 119 typedef struct { 120 UINT8 CompletionCode; 121 UINT8 Cause:4; 122 UINT8 Reserved:4; 123 UINT8 ChannelNumber; 124 } IPMI_GET_SYSTEM_RESTART_CAUSE_RESPONSE; 125 126 // 127 // Definitions for Set System BOOT options command 128 // 129 #define IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS 0x08 130 131 // 132 // Constants and Structure definitions for "Set System boot options" command to follow here 133 // 134 typedef struct { 135 UINT8 ParameterSelector:7; 136 UINT8 MarkParameterInvalid:1; 137 UINT8 ParameterData[1]; 138 } IPMI_SET_BOOT_OPTIONS_REQUEST; 139 140 // 141 // Definitions for Get System BOOT options command 142 // 143 #define IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS 0x09 144 145 // 146 // Constants and Structure definitions for "Get System boot options" command to follow here 147 // 148 typedef struct { 149 UINT8 ParameterSelector:7; 150 UINT8 Reserved:1; 151 UINT8 SetSelector; 152 UINT8 BlockSelector; 153 } IPMI_GET_BOOT_OPTIONS_REQUEST; 154 155 typedef struct { 156 UINT8 Parameter; 157 UINT8 Valid; 158 UINT8 Data1; 159 UINT8 Data2; 160 UINT8 Data3; 161 UINT8 Data4; 162 UINT8 Data5; 163 } IPMI_GET_THE_SYSTEM_BOOT_OPTIONS; 164 165 typedef struct { 166 UINT8 ParameterVersion; 167 UINT8 ParameterValid; 168 UINT8 ChannelNumber; 169 UINT32 SessionId; 170 UINT32 TimeStamp; 171 UINT8 Reserved[3]; 172 } IPMI_BOOT_INITIATOR; 173 174 // 175 // Response Parameters for IPMI Get Boot Options 176 // 177 typedef struct { 178 UINT8 SetInProgress: 2; 179 UINT8 Reserved: 6; 180 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0; 181 182 typedef struct { 183 UINT8 ServicePartitionSelector; 184 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1; 185 186 typedef struct { 187 UINT8 ServicePartitionDiscovered:1; 188 UINT8 ServicePartitionScanRequest:1; 189 UINT8 Reserved: 5; 190 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2; 191 192 typedef struct { 193 UINT8 BmcBootFlagValid: 5; 194 UINT8 Reserved: 3; 195 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3; 196 197 typedef struct { 198 UINT8 WriteMask; 199 UINT8 BootInitiatorAcknowledgeData; 200 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4; 201 202 #define BOOT_OPTION_HANDLED_BY_BIOS 0x01 203 204 typedef struct { 205 // 206 // Data 1 207 // 208 UINT8 Reserved0:6; 209 UINT8 PersistentOptions:1; 210 UINT8 BootFlagValid:1; 211 // 212 // Data 2 213 // 214 UINT8 LockReset:1; 215 UINT8 ScreenBlank:1; 216 UINT8 BootDeviceSelector:4; 217 UINT8 LockKeyboard:1; 218 UINT8 CmosClear:1; 219 // 220 // 221 // Data 3 222 UINT8 ConsoleRedirection:2; 223 UINT8 LockSleep:1; 224 UINT8 UserPasswordBypass:1; 225 UINT8 ForceProgressEventTrap:1; 226 UINT8 BiosVerbosity:2; 227 UINT8 LockPower:1; 228 // 229 // Data 4 230 // 231 UINT8 BiosMuxControlOverride:2; 232 UINT8 BiosSharedModeOverride:1; 233 UINT8 Reserved1:4; 234 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5; 235 236 typedef struct { 237 UINT8 ChannelNumber:4; 238 UINT8 Reserved:4; 239 UINT8 SessionId[4]; 240 UINT8 BootInfoTimeStamp[4]; 241 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6; 242 243 typedef struct { 244 UINT8 SetSelector; 245 UINT8 BlockData[16]; 246 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7; 247 248 typedef union { 249 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0 Parm0; 250 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1 Parm1; 251 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2 Parm2; 252 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3 Parm3; 253 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4 Parm4; 254 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5 Parm5; 255 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6 Parm6; 256 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7 Parm7; 257 } IPMI_BOOT_OPTIONS_PARAMETERS; 258 259 typedef struct { 260 UINT8 CompletionCode; 261 UINT8 ParameterVersion:4; 262 UINT8 Reserved:4; 263 UINT8 ParameterSelector:7; 264 UINT8 ParameterValid:1; 265 UINT8 ParameterData[1]; 266 } IPMI_GET_BOOT_OPTIONS_RESPONSE; 267 268 // 269 // Definitions for Set front panel button enables command 270 // 271 #define IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A 272 273 typedef struct { 274 UINT8 DisablePoweroffButton:1; 275 UINT8 DisableResetButton:1; 276 UINT8 DisableDiagnosticInterruptButton:1; 277 UINT8 DisableStandbyButton:1; 278 UINT8 Reserved:4; 279 } IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST; 280 281 // 282 // Constants and Structure definitions for "Set front panel button enables" command to follow here 283 // 284 285 // 286 // Definitions for Set Power Cycle Interval command 287 // 288 #define IPMI_CHASSIS_SET_POWER_CYCLE_INTERVALS 0x0B 289 290 // 291 // Constants and Structure definitions for "Set Power Cycle Interval" command to follow here 292 // 293 294 // 295 // Definitions for Get POH Counter command 296 // 297 #define IPMI_CHASSIS_GET_POH_COUNTER 0x0F 298 299 // 300 // Constants and Structure definitions for "Get POH Counter" command to follow here 301 // 302 #pragma pack() 303 #endif 304