1 #pragma once
2 
3 #include <stdint.h>
4 
5 // These are per skiboot ipmi-sel code
6 
7 // OEM_SEL type with Timestamp
8 #define SEL_OEM_ID_0 0x55
9 // SEL type is OEM and -not- general SEL
10 #define SEL_RECORD_TYPE_OEM 0xC0
11 // Minor command for soft shurdown
12 #define SOFT_OFF 0x00
13 // Major command for Any kind of power ops
14 #define CMD_POWER 0x04
15 // Major command for the heartbeat operation (verify host is alive)
16 #define CMD_HEARTBEAT 0xFF
17 
18 // IPMI commands used via System Interface functions.
19 enum ipmi_netfn_system_intf_cmds
20 {
21     IPMI_CMD_SET_BMC_GLOBAL_ENABLES = 0x2E,
22     IPMI_CMD_GET_BMC_GLOBAL_ENABLES = 0x2F,
23     IPMI_CMD_GET_MSG_FLAGS = 0x31,
24     IPMI_CMD_READ_EVENT = 0x35,
25 };
26 
27 // A Mechanism to tell host to shtudown hosts by sending this PEM SEL. Really
28 // the only used fields by skiboot are:
29 // id[0] / id[1] for ID_0 , ID_1
30 // type : SEL_RECORD_TYPE_OEM as standard SELs are ignored by skiboot
31 // cmd : CMD_POWER for power functions
32 // data[0], specific commands.  example Soft power off. power cycle, etc.
33 struct oem_sel_timestamped
34 {
35     /* SEL header */
36     uint8_t id[2];
37     uint8_t type;
38     uint8_t manuf_id[3];
39     uint8_t timestamp[4];
40     /* OEM SEL data (6 bytes) follows */
41     uint8_t netfun;
42     uint8_t cmd;
43     uint8_t data[4];
44 };
45