]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h
MdePkg/IndustryStandard/Ipmi: Update IPMI header files
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / IpmiNetFnChassis.h
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 - 2018, 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 typedef struct {
42 UINT8 CompletionCode;
43 UINT8 CapabilitiesFlags;
44 UINT8 ChassisFruInfoDeviceAddress;
45 UINT8 ChassisSDRDeviceAddress;
46 UINT8 ChassisSELDeviceAddress;
47 UINT8 ChassisSystemManagementDeviceAddress;
48 UINT8 ChassisBridgeDeviceAddress;
49 } IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE;
50
51 //
52 // Definitions for Get Chassis Status command
53 //
54 #define IPMI_CHASSIS_GET_STATUS 0x01
55
56 //
57 // Constants and Structure definitions for "Get Chassis Status" command to follow here
58 //
59 typedef struct {
60 UINT8 CompletionCode;
61 UINT8 CurrentPowerState;
62 UINT8 LastPowerEvent;
63 UINT8 MiscChassisState;
64 UINT8 FrontPanelButtonCapabilities;
65 } IPMI_GET_CHASSIS_STATUS_RESPONSE;
66
67 //
68 // Definitions for Chassis Control command
69 //
70 #define IPMI_CHASSIS_CONTROL 0x02
71
72 //
73 // Constants and Structure definitions for "Chassis Control" command to follow here
74 //
75 typedef struct {
76 UINT8 ChassisControl:4;
77 UINT8 Reserved:4;
78 } IPMI_CHASSIS_CONTROL_REQUEST;
79
80 //
81 // Definitions for Chassis Reset command
82 //
83 #define IPMI_CHASSIS_RESET 0x03
84
85 //
86 // Constants and Structure definitions for "Chassis Reset" command to follow here
87 //
88
89 //
90 // Definitions for Chassis Identify command
91 //
92 #define IPMI_CHASSIS_IDENTIFY 0x04
93
94 //
95 // Constants and Structure definitions for "Chassis Identify" command to follow here
96 //
97
98 //
99 // Definitions for Set Chassis Capabilities command
100 //
101 #define IPMI_CHASSIS_SET_CAPABILITIES 0x05
102
103 //
104 // Constants and Structure definitions for "Set Chassis Capabilities" command to follow here
105 //
106
107 //
108 // Definitions for Set Power Restore Policy command
109 //
110 #define IPMI_CHASSIS_SET_POWER_RESTORE_POLICY 0x06
111
112 //
113 // Constants and Structure definitions for "Set Power Restore Policy" command to follow here
114 //
115 typedef struct {
116 UINT8 PowerRestorePolicy:3;
117 UINT8 Reserved:5;
118 } IPMI_SET_POWER_RESTORE_POLICY_REQUEST;
119
120 typedef struct {
121 UINT8 CompletionCode;
122 UINT8 PowerRestorePolicySupport;
123 } IPMI_SET_POWER_RESTORE_POLICY_RESPONSE;
124
125 //
126 // Definitions for Get System Restart Cause command
127 //
128 #define IPMI_CHASSIS_GET_SYSTEM_RESTART_CAUSE 0x07
129
130 //
131 // Constants and Structure definitions for "Get System Restart Cause" command to follow here
132 //
133 typedef enum {
134 Unknown,
135 ChassisControlCommand,
136 ResetViaPushButton,
137 PowerupViaPowerButton,
138 WatchdogExpiration,
139 Oem,
140 AutoPowerOnAlwaysRestore,
141 AutoPowerOnRestorePrevious,
142 ResetViaPef,
143 PowerCycleViaPef,
144 SoftReset,
145 PowerUpViaRtc
146 } IPMI_SYSTEM_RESTART_CAUSE;
147
148 typedef struct {
149 UINT8 CompletionCode;
150 UINT8 Cause:4;
151 UINT8 Reserved:4;
152 UINT8 ChannelNumber;
153 } IPMI_GET_SYSTEM_RESTART_CAUSE_RESPONSE;
154
155 //
156 // Definitions for Set System BOOT options command
157 //
158 #define IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS 0x08
159
160 //
161 // Constants and Structure definitions for "Set System boot options" command to follow here
162 //
163 typedef struct {
164 UINT8 ParameterSelector:7;
165 UINT8 MarkParameterInvalid:1;
166 UINT8 ParameterData[1];
167 } IPMI_SET_BOOT_OPTIONS_REQUEST;
168
169 //
170 // Definitions for Get System Boot options command
171 //
172 #define IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS 0x09
173
174 //
175 // Constants and Structure definitions for "Get System boot options" command to follow here
176 //
177 typedef struct {
178 UINT8 ParameterSelector:7;
179 UINT8 Reserved:1;
180 UINT8 SetSelector;
181 UINT8 BlockSelector;
182 } IPMI_GET_BOOT_OPTIONS_REQUEST;
183
184 typedef struct {
185 UINT8 Parameter;
186 UINT8 Valid;
187 UINT8 Data1;
188 UINT8 Data2;
189 UINT8 Data3;
190 UINT8 Data4;
191 UINT8 Data5;
192 } IPMI_GET_THE_SYSTEM_BOOT_OPTIONS;
193
194 typedef struct {
195 UINT8 ParameterVersion;
196 UINT8 ParameterValid;
197 UINT8 ChannelNumber;
198 UINT32 SessionId;
199 UINT32 TimeStamp;
200 UINT8 Reserved[3];
201 } IPMI_BOOT_INITIATOR;
202
203 //
204 // Definitions for boot option parameter selector
205 //
206 #define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SET_IN_PROGRESS 0x0
207 #define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SELECTOR 0x1
208 #define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SCAN 0x2
209 #define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_BMC_BOOT_FLAG 0x3
210 #define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INFO_ACK 0x4
211 #define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_FLAGS 0x5
212 #define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_INFO 0x6
213 #define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_MAILBOX 0x7
214 #define IPMI_BOOT_OPTIONS_PARAMETER_OEM_BEGIN 0x60
215 #define IPMI_BOOT_OPTIONS_PARAMETER_OEM_END 0x7F
216
217 //
218 // Response Parameters for IPMI Get Boot Options
219 //
220 typedef struct {
221 UINT8 SetInProgress: 2;
222 UINT8 Reserved: 6;
223 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0;
224
225 typedef struct {
226 UINT8 ServicePartitionSelector;
227 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1;
228
229 typedef struct {
230 UINT8 ServicePartitionDiscovered:1;
231 UINT8 ServicePartitionScanRequest:1;
232 UINT8 Reserved: 6;
233 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2;
234
235 typedef struct {
236 UINT8 BmcBootFlagValid: 5;
237 UINT8 Reserved: 3;
238 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3;
239
240 typedef struct {
241 UINT8 WriteMask;
242 UINT8 BootInitiatorAcknowledgeData;
243 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4;
244
245 //
246 // Definitions for the 'Boot device selector' field of Boot Option Parameters #5
247 //
248 #define IPMI_BOOT_DEVICE_SELECTOR_NO_OVERRIDE 0x0
249 #define IPMI_BOOT_DEVICE_SELECTOR_PXE 0x1
250 #define IPMI_BOOT_DEVICE_SELECTOR_HARDDRIVE 0x2
251 #define IPMI_BOOT_DEVICE_SELECTOR_HARDDRIVE_SAFE_MODE 0x3
252 #define IPMI_BOOT_DEVICE_SELECTOR_DIAGNOSTIC_PARTITION 0x4
253 #define IPMI_BOOT_DEVICE_SELECTOR_CD_DVD 0x5
254 #define IPMI_BOOT_DEVICE_SELECTOR_BIOS_SETUP 0x6
255 #define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_FLOPPY 0x7
256 #define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_CD_DVD 0x8
257 #define IPMI_BOOT_DEVICE_SELECTOR_PRIMARY_REMOTE_MEDIA 0x9
258 #define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_HARDDRIVE 0xB
259 #define IPMI_BOOT_DEVICE_SELECTOR_FLOPPY 0xF
260
261 #define BOOT_OPTION_HANDLED_BY_BIOS 0x01
262
263 //
264 // Constant definitions for the 'BIOS Mux Control Override' field of Boot Option Parameters #5
265 //
266 #define BIOS_MUX_CONTROL_OVERRIDE_RECOMMEND_SETTING 0x00
267 #define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_BMC 0x01
268 #define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_SYSTEM 0x02
269
270 typedef struct {
271 //
272 // Data 1
273 //
274 UINT8 Reserved0:5;
275 UINT8 BiosBootType:1;
276 UINT8 PersistentOptions:1;
277 UINT8 BootFlagValid:1;
278 //
279 // Data 2
280 //
281 UINT8 LockReset:1;
282 UINT8 ScreenBlank:1;
283 UINT8 BootDeviceSelector:4;
284 UINT8 LockKeyboard:1;
285 UINT8 CmosClear:1;
286 //
287 // Data 3
288 //
289 UINT8 ConsoleRedirection:2;
290 UINT8 LockSleep:1;
291 UINT8 UserPasswordBypass:1;
292 UINT8 ForceProgressEventTrap:1;
293 UINT8 BiosVerbosity:2;
294 UINT8 LockPower:1;
295 //
296 // Data 4
297 //
298 UINT8 BiosMuxControlOverride:3;
299 UINT8 BiosSharedModeOverride:1;
300 UINT8 Reserved1:4;
301 //
302 // Data 5
303 //
304 UINT8 DeviceInstanceSelector:5;
305 UINT8 Reserved2:3;
306 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5;
307
308 typedef struct {
309 UINT8 ChannelNumber:4;
310 UINT8 Reserved:4;
311 UINT8 SessionId[4];
312 UINT8 BootInfoTimeStamp[4];
313 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6;
314
315 typedef struct {
316 UINT8 SetSelector;
317 UINT8 BlockData[16];
318 } IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7;
319
320 typedef union {
321 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0 Parm0;
322 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1 Parm1;
323 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2 Parm2;
324 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3 Parm3;
325 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4 Parm4;
326 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5 Parm5;
327 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6 Parm6;
328 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7 Parm7;
329 } IPMI_BOOT_OPTIONS_PARAMETERS;
330
331 typedef struct {
332 UINT8 CompletionCode;
333 UINT8 ParameterVersion:4;
334 UINT8 Reserved:4;
335 UINT8 ParameterSelector:7;
336 UINT8 ParameterValid:1;
337 UINT8 ParameterData[1];
338 } IPMI_GET_BOOT_OPTIONS_RESPONSE;
339
340 //
341 // Definitions for Set front panel button enables command
342 //
343 #define IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A
344
345 typedef struct {
346 UINT8 DisablePoweroffButton:1;
347 UINT8 DisableResetButton:1;
348 UINT8 DisableDiagnosticInterruptButton:1;
349 UINT8 DisableStandbyButton:1;
350 UINT8 Reserved:4;
351 } IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST;
352
353 //
354 // Constants and Structure definitions for "Set front panel button enables" command to follow here
355 //
356
357 //
358 // Definitions for Set Power Cycle Interval command
359 //
360 #define IPMI_CHASSIS_SET_POWER_CYCLE_INTERVALS 0x0B
361
362 //
363 // Constants and Structure definitions for "Set Power Cycle Interval" command to follow here
364 //
365
366 //
367 // Definitions for Get POH Counter command
368 //
369 #define IPMI_CHASSIS_GET_POH_COUNTER 0x0F
370
371 //
372 // Constants and Structure definitions for "Get POH Counter" command to follow here
373 //
374 #pragma pack()
375 #endif