]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h
MdePkg/PiFirmwareFile: fix undefined behavior in FFS_FILE_SIZE
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / IpmiNetFnChassis.h
CommitLineData
e59a797f
DB
1/** @file\r
2 IPMI 2.0 definitions from the IPMI Specification Version 2.0, Revision 1.1.\r
3\r
4 This file contains all NetFn Chassis commands, including:\r
5 Chassis Commands (Chapter 28)\r
6\r
7 See IPMI specification, Appendix G, Command Assignments\r
8 and Appendix H, Sub-function Assignments.\r
9\r
25517f7c 10 Copyright (c) 1999 - 2018, Intel Corporation. All rights reserved.<BR>\r
9344f092 11 SPDX-License-Identifier: BSD-2-Clause-Patent\r
e59a797f
DB
12**/\r
13\r
14#ifndef _IPMI_NET_FN_CHASSIS_H_\r
15#define _IPMI_NET_FN_CHASSIS_H_\r
16\r
17#pragma pack (1)\r
18//\r
19// Net function definition for Chassis command\r
20//\r
21#define IPMI_NETFN_CHASSIS 0x00\r
22\r
23//\r
24// Below is Definitions for Chassis commands (Chapter 28)\r
25//\r
26\r
27//\r
28// Definitions for Get Chassis Capabilities command\r
29//\r
30#define IPMI_CHASSIS_GET_CAPABILITIES 0x00\r
31\r
32//\r
33// Constants and Structure definitions for "Get Chassis Capabilities" command to follow here\r
34//\r
25517f7c
HW
35typedef struct {\r
36 UINT8 CompletionCode;\r
37 UINT8 CapabilitiesFlags;\r
38 UINT8 ChassisFruInfoDeviceAddress;\r
39 UINT8 ChassisSDRDeviceAddress;\r
40 UINT8 ChassisSELDeviceAddress;\r
41 UINT8 ChassisSystemManagementDeviceAddress;\r
42 UINT8 ChassisBridgeDeviceAddress;\r
43} IPMI_GET_CHASSIS_CAPABILITIES_RESPONSE;\r
e59a797f
DB
44\r
45//\r
46// Definitions for Get Chassis Status command\r
47//\r
48#define IPMI_CHASSIS_GET_STATUS 0x01\r
49\r
50//\r
51// Constants and Structure definitions for "Get Chassis Status" command to follow here\r
52//\r
25517f7c
HW
53typedef struct {\r
54 UINT8 CompletionCode;\r
55 UINT8 CurrentPowerState;\r
56 UINT8 LastPowerEvent;\r
57 UINT8 MiscChassisState;\r
58 UINT8 FrontPanelButtonCapabilities;\r
59} IPMI_GET_CHASSIS_STATUS_RESPONSE;\r
e59a797f
DB
60\r
61//\r
62// Definitions for Chassis Control command\r
63//\r
64#define IPMI_CHASSIS_CONTROL 0x02\r
65\r
66//\r
67// Constants and Structure definitions for "Chassis Control" command to follow here\r
68//\r
aeb6f576
HW
69typedef union {\r
70 struct {\r
71 UINT8 ChassisControl:4;\r
72 UINT8 Reserved:4;\r
73 } Bits;\r
74 UINT8 Uint8;\r
75} IPMI_CHASSIS_CONTROL_CHASSIS_CONTROL;\r
76\r
25517f7c 77typedef struct {\r
aeb6f576 78 IPMI_CHASSIS_CONTROL_CHASSIS_CONTROL ChassisControl;\r
25517f7c 79} IPMI_CHASSIS_CONTROL_REQUEST;\r
e59a797f
DB
80\r
81//\r
82// Definitions for Chassis Reset command\r
83//\r
84#define IPMI_CHASSIS_RESET 0x03\r
85\r
86//\r
87// Constants and Structure definitions for "Chassis Reset" command to follow here\r
88//\r
89\r
90//\r
91// Definitions for Chassis Identify command\r
92//\r
93#define IPMI_CHASSIS_IDENTIFY 0x04\r
94\r
95//\r
96// Constants and Structure definitions for "Chassis Identify" command to follow here\r
97//\r
98\r
99//\r
100// Definitions for Set Chassis Capabilities command\r
101//\r
102#define IPMI_CHASSIS_SET_CAPABILITIES 0x05\r
103\r
104//\r
105// Constants and Structure definitions for "Set Chassis Capabilities" command to follow here\r
106//\r
107\r
108//\r
109// Definitions for Set Power Restore Policy command\r
110//\r
111#define IPMI_CHASSIS_SET_POWER_RESTORE_POLICY 0x06\r
112\r
113//\r
114// Constants and Structure definitions for "Set Power Restore Policy" command to follow here\r
115//\r
aeb6f576
HW
116typedef union {\r
117 struct {\r
118 UINT8 PowerRestorePolicy : 3;\r
119 UINT8 Reserved : 5;\r
120 } Bits;\r
121 UINT8 Uint8;\r
122} IPMI_POWER_RESTORE_POLICY;\r
123\r
25517f7c 124typedef struct {\r
aeb6f576 125 IPMI_POWER_RESTORE_POLICY PowerRestorePolicy;\r
25517f7c
HW
126} IPMI_SET_POWER_RESTORE_POLICY_REQUEST;\r
127\r
128typedef struct {\r
129 UINT8 CompletionCode;\r
130 UINT8 PowerRestorePolicySupport;\r
131} IPMI_SET_POWER_RESTORE_POLICY_RESPONSE;\r
e59a797f
DB
132\r
133//\r
134// Definitions for Get System Restart Cause command\r
135//\r
136#define IPMI_CHASSIS_GET_SYSTEM_RESTART_CAUSE 0x07\r
137\r
138//\r
139// Constants and Structure definitions for "Get System Restart Cause" command to follow here\r
140//\r
aeb6f576
HW
141#define IPMI_SYSTEM_RESTART_CAUSE_UNKNOWN 0x0\r
142#define IPMI_SYSTEM_RESTART_CAUSE_CHASSIS_CONTROL_COMMAND 0x1\r
143#define IPMI_SYSTEM_RESTART_CAUSE_PUSHBUTTON_RESET 0x2\r
144#define IPMI_SYSTEM_RESTART_CAUSE_PUSHBUTTON_POWERUP 0x3\r
145#define IPMI_SYSTEM_RESTART_CAUSE_WATCHDOG_EXPIRE 0x4\r
146#define IPMI_SYSTEM_RESTART_CAUSE_OEM 0x5\r
147#define IPMI_SYSTEM_RESTART_CAUSE_AUTO_POWER_ALWAYS_RESTORE 0x6\r
148#define IPMI_SYSTEM_RESTART_CAUSE_AUTO_POWER_RESTORE_PREV 0x7\r
149#define IPMI_SYSTEM_RESTART_CAUSE_PEF_RESET 0x8\r
150#define IPMI_SYSTEM_RESTART_CAUSE_PEF_POWERCYCLE 0x9\r
151#define IPMI_SYSTEM_RESTART_CAUSE_SOFT_RESET 0xA\r
152#define IPMI_SYSTEM_RESTART_CAUSE_RTC_POWERUP 0xB\r
153\r
154typedef union {\r
155 struct {\r
156 UINT8 Cause:4;\r
157 UINT8 Reserved:4;\r
158 } Bits;\r
159 UINT8 Uint8;\r
e59a797f
DB
160} IPMI_SYSTEM_RESTART_CAUSE;\r
161\r
162typedef struct {\r
aeb6f576
HW
163 UINT8 CompletionCode;\r
164 IPMI_SYSTEM_RESTART_CAUSE RestartCause;\r
165 UINT8 ChannelNumber;\r
aeff1d6e 166} IPMI_GET_SYSTEM_RESTART_CAUSE_RESPONSE;\r
e59a797f
DB
167\r
168//\r
169// Definitions for Set System BOOT options command\r
170//\r
171#define IPMI_CHASSIS_SET_SYSTEM_BOOT_OPTIONS 0x08\r
172\r
173//\r
174// Constants and Structure definitions for "Set System boot options" command to follow here\r
175//\r
aeb6f576
HW
176typedef union {\r
177 struct {\r
178 UINT8 ParameterSelector:7;\r
179 UINT8 MarkParameterInvalid:1;\r
180 } Bits;\r
181 UINT8 Uint8;\r
182} IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID;\r
183\r
e59a797f 184typedef struct {\r
aeb6f576
HW
185 IPMI_SET_BOOT_OPTIONS_PARAMETER_VALID ParameterValid;\r
186 UINT8 ParameterData[0];\r
e59a797f
DB
187} IPMI_SET_BOOT_OPTIONS_REQUEST;\r
188\r
e59a797f 189//\r
25517f7c 190// Definitions for Get System Boot options command\r
e59a797f
DB
191//\r
192#define IPMI_CHASSIS_GET_SYSTEM_BOOT_OPTIONS 0x09\r
193\r
194//\r
195// Constants and Structure definitions for "Get System boot options" command to follow here\r
196//\r
aeb6f576
HW
197typedef union {\r
198 struct {\r
199 UINT8 ParameterSelector:7;\r
200 UINT8 Reserved:1;\r
201 } Bits;\r
202 UINT8 Uint8;\r
203} IPMI_GET_BOOT_OPTIONS_PARAMETER_SELECTOR;\r
204\r
aeff1d6e 205typedef struct {\r
aeb6f576
HW
206 IPMI_GET_BOOT_OPTIONS_PARAMETER_SELECTOR ParameterSelector;\r
207 UINT8 SetSelector;\r
208 UINT8 BlockSelector;\r
aeff1d6e
DB
209} IPMI_GET_BOOT_OPTIONS_REQUEST;\r
210\r
e59a797f
DB
211typedef struct {\r
212 UINT8 Parameter;\r
213 UINT8 Valid;\r
214 UINT8 Data1;\r
215 UINT8 Data2;\r
216 UINT8 Data3;\r
217 UINT8 Data4;\r
218 UINT8 Data5;\r
219} IPMI_GET_THE_SYSTEM_BOOT_OPTIONS;\r
220\r
221typedef struct {\r
222 UINT8 ParameterVersion;\r
223 UINT8 ParameterValid;\r
224 UINT8 ChannelNumber;\r
225 UINT32 SessionId;\r
226 UINT32 TimeStamp;\r
227 UINT8 Reserved[3];\r
228} IPMI_BOOT_INITIATOR;\r
229\r
25517f7c
HW
230//\r
231// Definitions for boot option parameter selector\r
232//\r
233#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SET_IN_PROGRESS 0x0\r
234#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SELECTOR 0x1\r
235#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_SERVICE_PARTITION_SCAN 0x2\r
236#define IPMI_BOOT_OPTIONS_PARAMETER_SELECTOR_BMC_BOOT_FLAG 0x3\r
237#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INFO_ACK 0x4\r
238#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_FLAGS 0x5\r
239#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_INFO 0x6\r
240#define IPMI_BOOT_OPTIONS_PARAMETER_BOOT_INITIATOR_MAILBOX 0x7\r
241#define IPMI_BOOT_OPTIONS_PARAMETER_OEM_BEGIN 0x60\r
242#define IPMI_BOOT_OPTIONS_PARAMETER_OEM_END 0x7F\r
243\r
e59a797f
DB
244//\r
245// Response Parameters for IPMI Get Boot Options\r
246//\r
aeb6f576
HW
247typedef union {\r
248 struct {\r
249 UINT8 SetInProgress : 2;\r
250 UINT8 Reserved : 6;\r
251 } Bits;\r
252 UINT8 Uint8;\r
e59a797f
DB
253} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0;\r
254\r
255typedef struct {\r
256 UINT8 ServicePartitionSelector;\r
257} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1;\r
258\r
aeb6f576
HW
259typedef union {\r
260 struct {\r
261 UINT8 ServicePartitionDiscovered : 1;\r
262 UINT8 ServicePartitionScanRequest : 1;\r
263 UINT8 Reserved: 6;\r
264 } Bits;\r
265 UINT8 Uint8;\r
e59a797f
DB
266} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2;\r
267\r
aeb6f576
HW
268typedef union {\r
269 struct {\r
270 UINT8 BmcBootFlagValid : 5;\r
271 UINT8 Reserved : 3;\r
272 } Bits;\r
273 UINT8 Uint8;\r
e59a797f
DB
274} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3;\r
275\r
276typedef struct {\r
277 UINT8 WriteMask;\r
278 UINT8 BootInitiatorAcknowledgeData;\r
279} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4;\r
280\r
25517f7c
HW
281//\r
282// Definitions for the 'Boot device selector' field of Boot Option Parameters #5\r
283//\r
284#define IPMI_BOOT_DEVICE_SELECTOR_NO_OVERRIDE 0x0\r
285#define IPMI_BOOT_DEVICE_SELECTOR_PXE 0x1\r
286#define IPMI_BOOT_DEVICE_SELECTOR_HARDDRIVE 0x2\r
287#define IPMI_BOOT_DEVICE_SELECTOR_HARDDRIVE_SAFE_MODE 0x3\r
288#define IPMI_BOOT_DEVICE_SELECTOR_DIAGNOSTIC_PARTITION 0x4\r
289#define IPMI_BOOT_DEVICE_SELECTOR_CD_DVD 0x5\r
290#define IPMI_BOOT_DEVICE_SELECTOR_BIOS_SETUP 0x6\r
291#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_FLOPPY 0x7\r
292#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_CD_DVD 0x8\r
293#define IPMI_BOOT_DEVICE_SELECTOR_PRIMARY_REMOTE_MEDIA 0x9\r
294#define IPMI_BOOT_DEVICE_SELECTOR_REMOTE_HARDDRIVE 0xB\r
295#define IPMI_BOOT_DEVICE_SELECTOR_FLOPPY 0xF\r
296\r
e59a797f
DB
297#define BOOT_OPTION_HANDLED_BY_BIOS 0x01\r
298\r
25517f7c
HW
299//\r
300// Constant definitions for the 'BIOS Mux Control Override' field of Boot Option Parameters #5\r
301//\r
302#define BIOS_MUX_CONTROL_OVERRIDE_RECOMMEND_SETTING 0x00\r
303#define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_BMC 0x01\r
304#define BIOS_MUX_CONTROL_OVERRIDE_FORCE_TO_SYSTEM 0x02\r
305\r
aeb6f576
HW
306typedef union {\r
307 struct {\r
308 UINT8 Reserved:5;\r
309 UINT8 BiosBootType:1;\r
310 UINT8 PersistentOptions:1;\r
311 UINT8 BootFlagValid:1;\r
312 } Bits;\r
313 UINT8 Uint8;\r
314} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_1;\r
315\r
316typedef union {\r
317 struct {\r
318 UINT8 LockReset:1;\r
319 UINT8 ScreenBlank:1;\r
320 UINT8 BootDeviceSelector:4;\r
321 UINT8 LockKeyboard:1;\r
322 UINT8 CmosClear:1;\r
323 } Bits;\r
324 UINT8 Uint8;\r
325} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_2;\r
326\r
327typedef union {\r
328 struct {\r
329 UINT8 ConsoleRedirection:2;\r
330 UINT8 LockSleep:1;\r
331 UINT8 UserPasswordBypass:1;\r
332 UINT8 ForceProgressEventTrap:1;\r
333 UINT8 BiosVerbosity:2;\r
334 UINT8 LockPower:1;\r
335 } Bits;\r
336 UINT8 Uint8;\r
337} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_3;\r
338\r
339typedef union {\r
340 struct {\r
341 UINT8 BiosMuxControlOverride:3;\r
342 UINT8 BiosSharedModeOverride:1;\r
343 UINT8 Reserved:4;\r
344 } Bits;\r
345 UINT8 Uint8;\r
346} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_4;\r
347\r
348typedef union {\r
349 struct {\r
350 UINT8 DeviceInstanceSelector:5;\r
351 UINT8 Reserved:3;\r
352 } Bits;\r
353 UINT8 Uint8;\r
354} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_5;\r
355\r
e59a797f 356typedef struct {\r
aeb6f576
HW
357 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_1 Data1;\r
358 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_2 Data2;\r
359 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_3 Data3;\r
360 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_4 Data4;\r
361 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5_DATA_5 Data5;\r
e59a797f
DB
362} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5;\r
363\r
aeb6f576
HW
364typedef union {\r
365 struct {\r
366 UINT8 ChannelNumber:4;\r
367 UINT8 Reserved:4;\r
368 } Bits;\r
369 UINT8 Uint8;\r
370} IPMI_BOOT_OPTIONS_CHANNEL_NUMBER;\r
371\r
e59a797f 372typedef struct {\r
aeb6f576
HW
373 IPMI_BOOT_OPTIONS_CHANNEL_NUMBER ChannelNumber;\r
374 UINT8 SessionId[4];\r
375 UINT8 BootInfoTimeStamp[4];\r
e59a797f
DB
376} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6;\r
377\r
378typedef struct {\r
379 UINT8 SetSelector;\r
380 UINT8 BlockData[16];\r
381} IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7;\r
382\r
383typedef union {\r
384 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_0 Parm0;\r
385 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_1 Parm1;\r
386 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_2 Parm2;\r
387 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_3 Parm3;\r
388 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_4 Parm4;\r
389 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_5 Parm5;\r
390 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_6 Parm6;\r
391 IPMI_BOOT_OPTIONS_RESPONSE_PARAMETER_7 Parm7;\r
392} IPMI_BOOT_OPTIONS_PARAMETERS;\r
393\r
aeb6f576
HW
394typedef union {\r
395 struct {\r
396 UINT8 ParameterVersion:4;\r
397 UINT8 Reserved:4;\r
398 } Bits;\r
399 UINT8 Uint8;\r
400} IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION;\r
401\r
402typedef union {\r
403 struct {\r
404 UINT8 ParameterSelector:7;\r
405 UINT8 ParameterValid:1;\r
406 } Bits;\r
407 UINT8 Uint8;\r
408} IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID;\r
409\r
e59a797f 410typedef struct {\r
aeb6f576
HW
411 UINT8 CompletionCode;\r
412 IPMI_GET_BOOT_OPTIONS_PARAMETER_VERSION ParameterVersion;\r
413 IPMI_GET_BOOT_OPTIONS_PARAMETER_VALID ParameterValid;\r
414 UINT8 ParameterData[0];\r
e59a797f
DB
415} IPMI_GET_BOOT_OPTIONS_RESPONSE;\r
416\r
417//\r
418// Definitions for Set front panel button enables command\r
419//\r
aeff1d6e 420#define IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES 0x0A\r
e59a797f 421\r
e59a797f
DB
422//\r
423// Constants and Structure definitions for "Set front panel button enables" command to follow here\r
424//\r
aeb6f576
HW
425typedef union {\r
426 struct {\r
427 UINT8 DisablePoweroffButton:1;\r
428 UINT8 DisableResetButton:1;\r
429 UINT8 DisableDiagnosticInterruptButton:1;\r
430 UINT8 DisableStandbyButton:1;\r
431 UINT8 Reserved:4;\r
432 } Bits;\r
433 UINT8 Uint8;\r
434} IPMI_FRONT_PANEL_BUTTON_ENABLES;\r
435\r
436typedef struct {\r
437 IPMI_FRONT_PANEL_BUTTON_ENABLES FrontPanelButtonEnables;\r
438} IPMI_CHASSIS_SET_FRONT_PANEL_BUTTON_ENABLES_REQUEST;\r
e59a797f
DB
439\r
440//\r
441// Definitions for Set Power Cycle Interval command\r
442//\r
443#define IPMI_CHASSIS_SET_POWER_CYCLE_INTERVALS 0x0B\r
444\r
445//\r
446// Constants and Structure definitions for "Set Power Cycle Interval" command to follow here\r
447//\r
448\r
449//\r
450// Definitions for Get POH Counter command\r
451//\r
452#define IPMI_CHASSIS_GET_POH_COUNTER 0x0F\r
453\r
454//\r
455// Constants and Structure definitions for "Get POH Counter" command to follow here\r
456//\r
457#pragma pack()\r
458#endif\r