summaryrefslogtreecommitdiffstats
path: root/MdePkg/Include/IndustryStandard/IpmiNetFnChassis.h
blob: e3b8a6210513d604f229bfdf476e64c2f01c29a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
/** @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>
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#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;

typedef struct {
  UINT8    CompletionCode : 8;
} IPMI_SET_BOOT_OPTIONS_RESPONSE;

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