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_MSG_FLAGS = 0x31,
23     IPMI_CMD_READ_EVENT = 0x35,
24 };
25 
26 // A Mechanism to tell host to shtudown hosts by sending this PEM SEL. Really
27 // the only used fields by skiboot are:
28 // id[0] / id[1] for ID_0 , ID_1
29 // type : SEL_RECORD_TYPE_OEM as standard SELs are ignored by skiboot
30 // cmd : CMD_POWER for power functions
31 // data[0], specific commands.  example Soft power off. power cycle, etc.
32 struct oem_sel_timestamped
33 {
34     /* SEL header */
35     uint8_t id[2];
36     uint8_t type;
37     uint8_t manuf_id[3];
38     uint8_t timestamp[4];
39     /* OEM SEL data (6 bytes) follows */
40     uint8_t netfun;
41     uint8_t cmd;
42     uint8_t data[4];
43 };
44