blob: aa2a55dc62b990d7fffc086d97097008cb9ad04d [file] [log] [blame]
#ifndef __HOST_IPMI_APP_HANDLER_H__
#define __HOST_IPMI_APP_HANDLER_H__
#include <stdint.h>
// These are per skiboot ipmi-sel code
// OEM_SEL type with Timestamp
#define SEL_OEM_ID_0 0x55
// SEL type is OEM and -not- general SEL
#define SEL_RECORD_TYPE_OEM 0xC0
// Minor command for soft shurdown
#define SOFT_OFF 0x00
// Major command for Any kind of power ops
#define CMD_POWER 0x04
// IPMI commands for App net functions.
enum ipmi_netfn_app_cmds
{
// Get capability bits
IPMI_CMD_GET_DEVICE_ID = 0x01,
IPMI_CMD_SET_ACPI = 0x06,
IPMI_CMD_GET_DEVICE_GUID = 0x08,
IPMI_CMD_RESET_WD = 0x22,
IPMI_CMD_SET_WD = 0x24,
IPMI_CMD_SET_BMC_GLOBAL_ENABLES = 0x2E,
IPMI_CMD_GET_MSG_FLAGS = 0x31,
IPMI_CMD_READ_EVENT = 0x35,
IPMI_CMD_GET_CAP_BIT = 0x36,
};
// A Mechanism to tell host to shtudown hosts by sending this PEM SEL. Really
// the only used fields by skiboot are:
// id[0] / id[1] for ID_0 , ID_1
// type : SEL_RECORD_TYPE_OEM as standard SELs are ignored by skiboot
// cmd : CMD_POWER for power functions
// data[0], specific commands. example Soft power off. power cycle, etc.
struct oem_sel_timestamped
{
/* SEL header */
uint8_t id[2];
uint8_t type;
uint8_t manuf_id[3];
uint8_t timestamp[4];
/* OEM SEL data (6 bytes) follows */
uint8_t netfun;
uint8_t cmd;
uint8_t data[4];
};
#endif