/* * 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 #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