blob: 0d630bfb16f5fd691719844d405507f7723992c7 [file] [log] [blame]
/*
* This file is auto-generated. Modifications will be lost.
*
* See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
* for more information.
*/
#ifndef _UAPI_ASM_X86_AMD_HSMP_H_
#define _UAPI_ASM_X86_AMD_HSMP_H_
#include <linux/types.h>
#pragma pack(4)
#define HSMP_MAX_MSG_LEN 8
enum hsmp_message_ids {
HSMP_TEST = 1,
HSMP_GET_SMU_VER,
HSMP_GET_PROTO_VER,
HSMP_GET_SOCKET_POWER,
HSMP_SET_SOCKET_POWER_LIMIT,
HSMP_GET_SOCKET_POWER_LIMIT,
HSMP_GET_SOCKET_POWER_LIMIT_MAX,
HSMP_SET_BOOST_LIMIT,
HSMP_SET_BOOST_LIMIT_SOCKET,
HSMP_GET_BOOST_LIMIT,
HSMP_GET_PROC_HOT,
HSMP_SET_XGMI_LINK_WIDTH,
HSMP_SET_DF_PSTATE,
HSMP_SET_AUTO_DF_PSTATE,
HSMP_GET_FCLK_MCLK,
HSMP_GET_CCLK_THROTTLE_LIMIT,
HSMP_GET_C0_PERCENT,
HSMP_SET_NBIO_DPM_LEVEL,
HSMP_GET_NBIO_DPM_LEVEL,
HSMP_GET_DDR_BANDWIDTH,
HSMP_GET_TEMP_MONITOR,
HSMP_GET_DIMM_TEMP_RANGE,
HSMP_GET_DIMM_POWER,
HSMP_GET_DIMM_THERMAL,
HSMP_GET_SOCKET_FREQ_LIMIT,
HSMP_GET_CCLK_CORE_LIMIT,
HSMP_GET_RAILS_SVI,
HSMP_GET_SOCKET_FMAX_FMIN,
HSMP_GET_IOLINK_BANDWITH,
HSMP_GET_XGMI_BANDWITH,
HSMP_SET_GMI3_WIDTH,
HSMP_SET_PCI_RATE,
HSMP_SET_POWER_MODE,
HSMP_SET_PSTATE_MAX_MIN,
HSMP_GET_METRIC_TABLE_VER,
HSMP_GET_METRIC_TABLE,
HSMP_GET_METRIC_TABLE_DRAM_ADDR,
HSMP_MSG_ID_MAX,
};
struct hsmp_message {
__u32 msg_id;
__u16 num_args;
__u16 response_sz;
__u32 args[HSMP_MAX_MSG_LEN];
__u16 sock_ind;
};
enum hsmp_msg_type {
HSMP_RSVD = - 1,
HSMP_SET = 0,
HSMP_GET = 1,
};
enum hsmp_proto_versions {
HSMP_PROTO_VER2 = 2,
HSMP_PROTO_VER3,
HSMP_PROTO_VER4,
HSMP_PROTO_VER5,
HSMP_PROTO_VER6
};
struct hsmp_msg_desc {
int num_args;
int response_sz;
enum hsmp_msg_type type;
};
static const struct hsmp_msg_desc hsmp_msg_desc_table[] = {
{
0, 0, HSMP_RSVD
}
, {
1, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
1, 0, HSMP_SET
}
, {
0, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
1, 0, HSMP_SET
}
, {
1, 0, HSMP_SET
}
, {
1, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
1, 0, HSMP_SET
}
, {
1, 0, HSMP_SET
}
, {
0, 0, HSMP_SET
}
, {
0, 2, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
1, 0, HSMP_SET
}
, {
1, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
1, 1, HSMP_GET
}
, {
1, 1, HSMP_GET
}
, {
1, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
1, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
0, 1, HSMP_GET
}
, {
1, 1, HSMP_GET
}
, {
1, 1, HSMP_GET
}
, {
1, 0, HSMP_SET
}
, {
1, 1, HSMP_SET
}
, {
1, 0, HSMP_SET
}
, {
1, 0, HSMP_SET
}
, {
0, 1, HSMP_GET
}
, {
0, 0, HSMP_GET
}
, {
0, 2, HSMP_GET
}
,
};
struct hsmp_metric_table {
__u32 accumulation_counter;
__u32 max_socket_temperature;
__u32 max_vr_temperature;
__u32 max_hbm_temperature;
__u64 max_socket_temperature_acc;
__u64 max_vr_temperature_acc;
__u64 max_hbm_temperature_acc;
__u32 socket_power_limit;
__u32 max_socket_power_limit;
__u32 socket_power;
__u64 timestamp;
__u64 socket_energy_acc;
__u64 ccd_energy_acc;
__u64 xcd_energy_acc;
__u64 aid_energy_acc;
__u64 hbm_energy_acc;
__u32 cclk_frequency_limit;
__u32 gfxclk_frequency_limit;
__u32 fclk_frequency;
__u32 uclk_frequency;
__u32 socclk_frequency[4];
__u32 vclk_frequency[4];
__u32 dclk_frequency[4];
__u32 lclk_frequency[4];
__u64 gfxclk_frequency_acc[8];
__u64 cclk_frequency_acc[96];
__u32 max_cclk_frequency;
__u32 min_cclk_frequency;
__u32 max_gfxclk_frequency;
__u32 min_gfxclk_frequency;
__u32 fclk_frequency_table[4];
__u32 uclk_frequency_table[4];
__u32 socclk_frequency_table[4];
__u32 vclk_frequency_table[4];
__u32 dclk_frequency_table[4];
__u32 lclk_frequency_table[4];
__u32 max_lclk_dpm_range;
__u32 min_lclk_dpm_range;
__u32 xgmi_width;
__u32 xgmi_bitrate;
__u64 xgmi_read_bandwidth_acc[8];
__u64 xgmi_write_bandwidth_acc[8];
__u32 socket_c0_residency;
__u32 socket_gfx_busy;
__u32 dram_bandwidth_utilization;
__u64 socket_c0_residency_acc;
__u64 socket_gfx_busy_acc;
__u64 dram_bandwidth_acc;
__u32 max_dram_bandwidth;
__u64 dram_bandwidth_utilization_acc;
__u64 pcie_bandwidth_acc[4];
__u32 prochot_residency_acc;
__u32 ppt_residency_acc;
__u32 socket_thm_residency_acc;
__u32 vr_thm_residency_acc;
__u32 hbm_thm_residency_acc;
__u32 spare;
__u32 gfxclk_frequency[8];
};
#pragma pack()
#define HSMP_BASE_IOCTL_NR 0xF8
#define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
#endif