/* SPDX-License-Identifier: GPL-2.0 */
/* Copyright (c) 2018 Intel Corporation */

#ifndef __PECI_IOCTL_H
#define __PECI_IOCTL_H

#include <linux/ioctl.h>
#include <linux/types.h>

/* Base Address of 48d */
#define PECI_BASE_ADDR  0x30  /* The PECI client's default address of 0x30 */
#define PECI_OFFSET_MAX 8     /* Max numver of CPU clients */

/* PCI Access */
#define MAX_PCI_READ_LEN 24   /* Number of bytes of the PCI Space read */

#define PCI_BUS0_CPU0      0x00
#define PCI_BUS0_CPU1      0x80
#define PCI_CPUBUSNO_BUS   0x00
#define PCI_CPUBUSNO_DEV   0x08
#define PCI_CPUBUSNO_FUNC  0x02
#define PCI_CPUBUSNO       0xcc
#define PCI_CPUBUSNO_1     0xd0
#define PCI_CPUBUSNO_VALID 0xd4

/* Package Identifier Read Parameter Value */
#define PKG_ID_CPU_ID               0x0000  /* CPUID Info */
#define PKG_ID_PLATFORM_ID          0x0001  /* Platform ID */
#define PKG_ID_UNCORE_ID            0x0002  /* Uncore Device ID */
#define PKG_ID_MAX_THREAD_ID        0x0003  /* Max Thread ID */
#define PKG_ID_MICROCODE_REV        0x0004  /* CPU Microcode Update Revision */
#define PKG_ID_MACHINE_CHECK_STATUS 0x0005  /* Machine Check Status */

/* Crashdump Parameters */
enum crashdump_agent {
	CRASHDUMP_CORE = 0x00,
	CRASHDUMP_TOR = 0x01,
};
enum crashdump_discovery_sub_opcode {
	CRASHDUMP_ENABLED = 0x00,
	CRASHDUMP_NUM_AGENTS = 0x01,
	CRASHDUMP_AGENT_DATA = 0x02,
};
enum crashdump_agent_data_param {
	CRASHDUMP_AGENT_ID = 0x00,
	CRASHDUMP_AGENT_PARAM = 0x01,
};
enum crashdump_agent_param {
	CRASHDUMP_PAYLOAD_SIZE = 0x00,
};

/* RdPkgConfig Index */
#define MBX_INDEX_CPU_ID            0   /* Package Identifier Read */
#define MBX_INDEX_VR_DEBUG          1   /* VR Debug */
#define MBX_INDEX_PKG_TEMP_READ     2   /* Package Temperature Read */
#define MBX_INDEX_ENERGY_COUNTER    3   /* Energy counter */
#define MBX_INDEX_ENERGY_STATUS     4   /* DDR Energy Status */
#define MBX_INDEX_WAKE_MODE_BIT     5   /* "Wake on PECI" Mode bit */
#define MBX_INDEX_EPI               6   /* Efficient Performance Indication */
#define MBX_INDEX_PKG_RAPL_PERF     8   /* Pkg RAPL Performance Status Read */
#define MBX_INDEX_PER_CORE_DTS_TEMP 9   /* Per Core DTS Temperature Read */
#define MBX_INDEX_DTS_MARGIN        10  /* DTS thermal margin */
#define MBX_INDEX_SKT_PWR_THRTL_DUR 11  /* Socket Power Throttled Duration */
#define MBX_INDEX_CFG_TDP_CONTROL   12  /* TDP Config Control */
#define MBX_INDEX_CFG_TDP_LEVELS    13  /* TDP Config Levels */
#define MBX_INDEX_DDR_DIMM_TEMP     14  /* DDR DIMM Temperature */
#define MBX_INDEX_CFG_ICCMAX        15  /* Configurable ICCMAX */
#define MBX_INDEX_TEMP_TARGET       16  /* Temperature Target Read */
#define MBX_INDEX_CURR_CFG_LIMIT    17  /* Current Config Limit */
#define MBX_INDEX_DIMM_TEMP_READ    20  /* Package Thermal Status Read */
#define MBX_INDEX_DRAM_IMC_TMP_READ 22  /* DRAM IMC Temperature Read */
#define MBX_INDEX_DDR_CH_THERM_STAT 23  /* DDR Channel Thermal Status */
#define MBX_INDEX_PKG_POWER_LIMIT1  26  /* Package Power Limit1 */
#define MBX_INDEX_PKG_POWER_LIMIT2  27  /* Package Power Limit2 */
#define MBX_INDEX_TDP               28  /* Thermal design power minimum */
#define MBX_INDEX_TDP_HIGH          29  /* Thermal design power maximum */
#define MBX_INDEX_TDP_UNITS         30  /* Units for power/energy registers */
#define MBX_INDEX_RUN_TIME          31  /* Accumulated Run Time */
#define MBX_INDEX_CONSTRAINED_TIME  32  /* Thermally Constrained Time Read */
#define MBX_INDEX_TURBO_RATIO       33  /* Turbo Activation Ratio */
#define MBX_INDEX_DDR_RAPL_PL1      34  /* DDR RAPL PL1 */
#define MBX_INDEX_DDR_PWR_INFO_HIGH 35  /* DRAM Power Info Read (high) */
#define MBX_INDEX_DDR_PWR_INFO_LOW  36  /* DRAM Power Info Read (low) */
#define MBX_INDEX_DDR_RAPL_PL2      37  /* DDR RAPL PL2 */
#define MBX_INDEX_DDR_RAPL_STATUS   38  /* DDR RAPL Performance Status */
#define MBX_INDEX_DDR_HOT_ABSOLUTE  43  /* DDR Hottest Dimm Absolute Temp */
#define MBX_INDEX_DDR_HOT_RELATIVE  44  /* DDR Hottest Dimm Relative Temp */
#define MBX_INDEX_DDR_THROTTLE_TIME 45  /* DDR Throttle Time */
#define MBX_INDEX_DDR_THERM_STATUS  46  /* DDR Thermal Status */
#define MBX_INDEX_TIME_AVG_TEMP     47  /* Package time-averaged temperature */
#define MBX_INDEX_TURBO_RATIO_LIMIT 49  /* Turbo Ratio Limit Read */
#define MBX_INDEX_HWP_AUTO_OOB      53  /* HWP Autonomous Out-of-band */
#define MBX_INDEX_DDR_WARM_BUDGET   55  /* DDR Warm Power Budget */
#define MBX_INDEX_DDR_HOT_BUDGET    56  /* DDR Hot Power Budget */
#define MBX_INDEX_PKG_PSYS_PWR_LIM3 57  /* Package/Psys Power Limit3 */
#define MBX_INDEX_PKG_PSYS_PWR_LIM1 58  /* Package/Psys Power Limit1 */
#define MBX_INDEX_PKG_PSYS_PWR_LIM2 59  /* Package/Psys Power Limit2 */
#define MBX_INDEX_PKG_PSYS_PWR_LIM4 60  /* Package/Psys Power Limit4 */
#define MBX_INDEX_PERF_LIMIT_REASON 65  /* Performance Limit Reasons */

/* WrPkgConfig Index */
#define MBX_INDEX_DIMM_AMBIENT 19
#define MBX_INDEX_DIMM_TEMP    24

enum peci_cmd {
	PECI_CMD_XFER = 0,
	PECI_CMD_PING,
	PECI_CMD_GET_DIB,
	PECI_CMD_GET_TEMP,
	PECI_CMD_RD_PKG_CFG,
	PECI_CMD_WR_PKG_CFG,
	PECI_CMD_RD_IA_MSR,
	PECI_CMD_WR_IA_MSR,
	PECI_CMD_RD_PCI_CFG,
	PECI_CMD_WR_PCI_CFG,
	PECI_CMD_RD_PCI_CFG_LOCAL,
	PECI_CMD_WR_PCI_CFG_LOCAL,
	PECI_CMD_CRASHDUMP_DISC,
	PECI_CMD_CRASHDUMP_GET_FRAME,
	PECI_CMD_MAX
};

struct peci_ping_msg {
	__u8 addr;
} __attribute__((__packed__));

struct peci_get_dib_msg {
	__u8  addr;
	__u32 dib;
} __attribute__((__packed__));

struct peci_get_temp_msg {
	__u8  addr;
	__s16 temp_raw;
} __attribute__((__packed__));

struct peci_rd_pkg_cfg_msg {
	__u8  addr;
	__u8  index;
	__u16 param;
	__u8  rx_len;
	__u8  pkg_config[4];
} __attribute__((__packed__));

struct peci_wr_pkg_cfg_msg {
	__u8  addr;
	__u8  index;
	__u16 param;
	__u8  tx_len;
	__u32 value;
} __attribute__((__packed__));

struct peci_rd_ia_msr_msg {
	__u8  addr;
	__u8  thread_id;
	__u16 address;
	__u64 value;
} __attribute__((__packed__));

struct peci_rd_pci_cfg_msg {
	__u8  addr;
	__u8  bus;
	__u8  device;
	__u8  function;
	__u16 reg;
	__u8  pci_config[4];
} __attribute__((__packed__));

struct peci_rd_pci_cfg_local_msg {
	__u8  addr;
	__u8  bus;
	__u8  device;
	__u8  function;
	__u16 reg;
	__u8  rx_len;
	__u8  pci_config[4];
} __attribute__((__packed__));

struct peci_wr_pci_cfg_local_msg {
	__u8  addr;
	__u8  bus;
	__u8  device;
	__u8  function;
	__u16 reg;
	__u8  tx_len;
	__u32 value;
} __attribute__((__packed__));

struct peci_crashdump_disc_msg {
	__u8  addr;
	__u8  subopcode;
	__u8  param0;
	__u16 param1;
	__u8  param2;
	__u8  rx_len;
	__u8  data[8];
} __attribute__((__packed__));

struct peci_crashdump_get_frame_msg {
	__u8  addr;
	__u16 param0;
	__u16 param1;
	__u16 param2;
	__u8  rx_len;
	__u8  data[16];
} __attribute__((__packed__));

#define PECI_IOC_BASE  0xb6

#define PECI_IOC_PING \
	_IOWR(PECI_IOC_BASE, PECI_CMD_PING, struct peci_ping_msg)

#define PECI_IOC_GET_DIB \
	_IOWR(PECI_IOC_BASE, PECI_CMD_GET_DIB, struct peci_get_dib_msg)

#define PECI_IOC_GET_TEMP \
	_IOWR(PECI_IOC_BASE, PECI_CMD_GET_TEMP, struct peci_get_temp_msg)

#define PECI_IOC_RD_PKG_CFG \
	_IOWR(PECI_IOC_BASE, PECI_CMD_RD_PKG_CFG, struct peci_rd_pkg_cfg_msg)

#define PECI_IOC_WR_PKG_CFG \
	_IOWR(PECI_IOC_BASE, PECI_CMD_WR_PKG_CFG, struct peci_wr_pkg_cfg_msg)

#define PECI_IOC_RD_IA_MSR \
	_IOWR(PECI_IOC_BASE, PECI_CMD_RD_IA_MSR, struct peci_rd_ia_msr_msg)

#define PECI_IOC_RD_PCI_CFG \
	_IOWR(PECI_IOC_BASE, PECI_CMD_RD_PCI_CFG, struct peci_rd_pci_cfg_msg)

#define PECI_IOC_RD_PCI_CFG_LOCAL \
	_IOWR(PECI_IOC_BASE, PECI_CMD_RD_PCI_CFG_LOCAL, \
	      struct peci_rd_pci_cfg_local_msg)

#define PECI_IOC_WR_PCI_CFG_LOCAL \
	_IOWR(PECI_IOC_BASE, PECI_CMD_WR_PCI_CFG_LOCAL, \
	      struct peci_wr_pci_cfg_local_msg)

#define PECI_IOC_CRASHDUMP_DISC \
	_IOWR(PECI_IOC_BASE, PECI_CMD_CRASHDUMP_DISC, \
	      struct peci_crashdump_disc_msg)

#define PECI_IOC_CRASHDUMP_GET_FRAME \
	_IOWR(PECI_IOC_BASE, PECI_CMD_CRASHDUMP_GET_FRAME, \
	      struct peci_crashdump_get_frame_msg)

#endif /* __PECI_IOCTL_H */
