1 #pragma once
2 
3 #include <stdint.h>
4 
5 #include <cstddef>
6 
7 // IPMI commands for Chassis net functions.
8 enum ipmi_netfn_chassis_cmds
9 {
10     IPMI_CMD_GET_CHASSIS_CAP = 0x00,
11     // Chassis Status
12     IPMI_CMD_CHASSIS_STATUS = 0x01,
13     // Chassis Control
14     IPMI_CMD_CHASSIS_CONTROL = 0x02,
15     IPMI_CMD_CHASSIS_IDENTIFY = 0x04,
16     IPMI_CMD_SET_CHASSIS_CAP = 0x05,
17     // Set Power Restore Policy
18     IPMI_CMD_SET_RESTORE_POLICY = 0x06,
19     // Get capability bits
20     IPMI_CMD_SET_SYS_BOOT_OPTIONS = 0x08,
21     IPMI_CMD_GET_SYS_BOOT_OPTIONS = 0x09,
22     IPMI_CMD_GET_POH_COUNTER = 0x0F,
23 };
24 
25 // Command specific completion codes
26 enum ipmi_chassis_return_codes
27 {
28     IPMI_OK = 0x0,
29     IPMI_CC_PARM_NOT_SUPPORTED = 0x80,
30 };
31 
32 // Generic completion codes,
33 // see IPMI doc section 5.2
34 enum ipmi_generic_return_codes
35 {
36     IPMI_OUT_OF_SPACE = 0xC4,
37 };
38 
39 // Various Chassis operations under a single command.
40 enum ipmi_chassis_control_cmds : uint8_t
41 {
42     CMD_POWER_OFF = 0x00,
43     CMD_POWER_ON = 0x01,
44     CMD_POWER_CYCLE = 0x02,
45     CMD_HARD_RESET = 0x03,
46     CMD_PULSE_DIAGNOSTIC_INTR = 0x04,
47     CMD_SOFT_OFF_VIA_OVER_TEMP = 0x05,
48 };
49 enum class BootOptionParameter : size_t
50 {
51     BOOT_INFO = 0x4,
52     BOOT_FLAGS = 0x5,
53     OPAL_NETWORK_SETTINGS = 0x61
54 };
55 
56 enum class BootOptionResponseSize : size_t
57 {
58     BOOT_FLAGS = 5,
59     OPAL_NETWORK_SETTINGS = 50
60 };
61