1*8d67ca89SAndroid Build Coastguard Worker /* 2*8d67ca89SAndroid Build Coastguard Worker * This file is auto-generated. Modifications will be lost. 3*8d67ca89SAndroid Build Coastguard Worker * 4*8d67ca89SAndroid Build Coastguard Worker * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ 5*8d67ca89SAndroid Build Coastguard Worker * for more information. 6*8d67ca89SAndroid Build Coastguard Worker */ 7*8d67ca89SAndroid Build Coastguard Worker #ifndef __ISST_IF_H 8*8d67ca89SAndroid Build Coastguard Worker #define __ISST_IF_H 9*8d67ca89SAndroid Build Coastguard Worker #include <linux/types.h> 10*8d67ca89SAndroid Build Coastguard Worker struct isst_if_platform_info { 11*8d67ca89SAndroid Build Coastguard Worker __u16 api_version; 12*8d67ca89SAndroid Build Coastguard Worker __u16 driver_version; 13*8d67ca89SAndroid Build Coastguard Worker __u16 max_cmds_per_ioctl; 14*8d67ca89SAndroid Build Coastguard Worker __u8 mbox_supported; 15*8d67ca89SAndroid Build Coastguard Worker __u8 mmio_supported; 16*8d67ca89SAndroid Build Coastguard Worker }; 17*8d67ca89SAndroid Build Coastguard Worker struct isst_if_cpu_map { 18*8d67ca89SAndroid Build Coastguard Worker __u32 logical_cpu; 19*8d67ca89SAndroid Build Coastguard Worker __u32 physical_cpu; 20*8d67ca89SAndroid Build Coastguard Worker }; 21*8d67ca89SAndroid Build Coastguard Worker struct isst_if_cpu_maps { 22*8d67ca89SAndroid Build Coastguard Worker __u32 cmd_count; 23*8d67ca89SAndroid Build Coastguard Worker struct isst_if_cpu_map cpu_map[1]; 24*8d67ca89SAndroid Build Coastguard Worker }; 25*8d67ca89SAndroid Build Coastguard Worker struct isst_if_io_reg { 26*8d67ca89SAndroid Build Coastguard Worker __u32 read_write; 27*8d67ca89SAndroid Build Coastguard Worker __u32 logical_cpu; 28*8d67ca89SAndroid Build Coastguard Worker __u32 reg; 29*8d67ca89SAndroid Build Coastguard Worker __u32 value; 30*8d67ca89SAndroid Build Coastguard Worker }; 31*8d67ca89SAndroid Build Coastguard Worker struct isst_if_io_regs { 32*8d67ca89SAndroid Build Coastguard Worker __u32 req_count; 33*8d67ca89SAndroid Build Coastguard Worker struct isst_if_io_reg io_reg[1]; 34*8d67ca89SAndroid Build Coastguard Worker }; 35*8d67ca89SAndroid Build Coastguard Worker struct isst_if_mbox_cmd { 36*8d67ca89SAndroid Build Coastguard Worker __u32 logical_cpu; 37*8d67ca89SAndroid Build Coastguard Worker __u32 parameter; 38*8d67ca89SAndroid Build Coastguard Worker __u32 req_data; 39*8d67ca89SAndroid Build Coastguard Worker __u32 resp_data; 40*8d67ca89SAndroid Build Coastguard Worker __u16 command; 41*8d67ca89SAndroid Build Coastguard Worker __u16 sub_command; 42*8d67ca89SAndroid Build Coastguard Worker __u32 reserved; 43*8d67ca89SAndroid Build Coastguard Worker }; 44*8d67ca89SAndroid Build Coastguard Worker struct isst_if_mbox_cmds { 45*8d67ca89SAndroid Build Coastguard Worker __u32 cmd_count; 46*8d67ca89SAndroid Build Coastguard Worker struct isst_if_mbox_cmd mbox_cmd[1]; 47*8d67ca89SAndroid Build Coastguard Worker }; 48*8d67ca89SAndroid Build Coastguard Worker struct isst_if_msr_cmd { 49*8d67ca89SAndroid Build Coastguard Worker __u32 read_write; 50*8d67ca89SAndroid Build Coastguard Worker __u32 logical_cpu; 51*8d67ca89SAndroid Build Coastguard Worker __u64 msr; 52*8d67ca89SAndroid Build Coastguard Worker __u64 data; 53*8d67ca89SAndroid Build Coastguard Worker }; 54*8d67ca89SAndroid Build Coastguard Worker struct isst_if_msr_cmds { 55*8d67ca89SAndroid Build Coastguard Worker __u32 cmd_count; 56*8d67ca89SAndroid Build Coastguard Worker struct isst_if_msr_cmd msr_cmd[1]; 57*8d67ca89SAndroid Build Coastguard Worker }; 58*8d67ca89SAndroid Build Coastguard Worker struct isst_core_power { 59*8d67ca89SAndroid Build Coastguard Worker __u8 get_set; 60*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 61*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 62*8d67ca89SAndroid Build Coastguard Worker __u8 enable; 63*8d67ca89SAndroid Build Coastguard Worker __u8 supported; 64*8d67ca89SAndroid Build Coastguard Worker __u8 priority_type; 65*8d67ca89SAndroid Build Coastguard Worker }; 66*8d67ca89SAndroid Build Coastguard Worker struct isst_clos_param { 67*8d67ca89SAndroid Build Coastguard Worker __u8 get_set; 68*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 69*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 70*8d67ca89SAndroid Build Coastguard Worker __u8 clos; 71*8d67ca89SAndroid Build Coastguard Worker __u16 min_freq_mhz; 72*8d67ca89SAndroid Build Coastguard Worker __u16 max_freq_mhz; 73*8d67ca89SAndroid Build Coastguard Worker __u8 prop_prio; 74*8d67ca89SAndroid Build Coastguard Worker }; 75*8d67ca89SAndroid Build Coastguard Worker struct isst_if_clos_assoc { 76*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 77*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 78*8d67ca89SAndroid Build Coastguard Worker __u16 logical_cpu; 79*8d67ca89SAndroid Build Coastguard Worker __u16 clos; 80*8d67ca89SAndroid Build Coastguard Worker }; 81*8d67ca89SAndroid Build Coastguard Worker struct isst_if_clos_assoc_cmds { 82*8d67ca89SAndroid Build Coastguard Worker __u16 cmd_count; 83*8d67ca89SAndroid Build Coastguard Worker __u16 get_set; 84*8d67ca89SAndroid Build Coastguard Worker __u16 punit_cpu_map; 85*8d67ca89SAndroid Build Coastguard Worker struct isst_if_clos_assoc assoc_info[1]; 86*8d67ca89SAndroid Build Coastguard Worker }; 87*8d67ca89SAndroid Build Coastguard Worker struct isst_tpmi_instance_count { 88*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 89*8d67ca89SAndroid Build Coastguard Worker __u8 count; 90*8d67ca89SAndroid Build Coastguard Worker __u16 valid_mask; 91*8d67ca89SAndroid Build Coastguard Worker }; 92*8d67ca89SAndroid Build Coastguard Worker struct isst_perf_level_info { 93*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 94*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 95*8d67ca89SAndroid Build Coastguard Worker __u8 max_level; 96*8d67ca89SAndroid Build Coastguard Worker __u8 feature_rev; 97*8d67ca89SAndroid Build Coastguard Worker __u8 level_mask; 98*8d67ca89SAndroid Build Coastguard Worker __u8 current_level; 99*8d67ca89SAndroid Build Coastguard Worker __u8 feature_state; 100*8d67ca89SAndroid Build Coastguard Worker __u8 locked; 101*8d67ca89SAndroid Build Coastguard Worker __u8 enabled; 102*8d67ca89SAndroid Build Coastguard Worker __u8 sst_tf_support; 103*8d67ca89SAndroid Build Coastguard Worker __u8 sst_bf_support; 104*8d67ca89SAndroid Build Coastguard Worker }; 105*8d67ca89SAndroid Build Coastguard Worker struct isst_perf_level_control { 106*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 107*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 108*8d67ca89SAndroid Build Coastguard Worker __u8 level; 109*8d67ca89SAndroid Build Coastguard Worker }; 110*8d67ca89SAndroid Build Coastguard Worker struct isst_perf_feature_control { 111*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 112*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 113*8d67ca89SAndroid Build Coastguard Worker __u8 feature; 114*8d67ca89SAndroid Build Coastguard Worker }; 115*8d67ca89SAndroid Build Coastguard Worker #define TRL_MAX_BUCKETS 8 116*8d67ca89SAndroid Build Coastguard Worker #define TRL_MAX_LEVELS 6 117*8d67ca89SAndroid Build Coastguard Worker struct isst_perf_level_data_info { 118*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 119*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 120*8d67ca89SAndroid Build Coastguard Worker __u16 level; 121*8d67ca89SAndroid Build Coastguard Worker __u16 tdp_ratio; 122*8d67ca89SAndroid Build Coastguard Worker __u16 base_freq_mhz; 123*8d67ca89SAndroid Build Coastguard Worker __u16 base_freq_avx2_mhz; 124*8d67ca89SAndroid Build Coastguard Worker __u16 base_freq_avx512_mhz; 125*8d67ca89SAndroid Build Coastguard Worker __u16 base_freq_amx_mhz; 126*8d67ca89SAndroid Build Coastguard Worker __u16 thermal_design_power_w; 127*8d67ca89SAndroid Build Coastguard Worker __u16 tjunction_max_c; 128*8d67ca89SAndroid Build Coastguard Worker __u16 max_memory_freq_mhz; 129*8d67ca89SAndroid Build Coastguard Worker __u16 cooling_type; 130*8d67ca89SAndroid Build Coastguard Worker __u16 p0_freq_mhz; 131*8d67ca89SAndroid Build Coastguard Worker __u16 p1_freq_mhz; 132*8d67ca89SAndroid Build Coastguard Worker __u16 pn_freq_mhz; 133*8d67ca89SAndroid Build Coastguard Worker __u16 pm_freq_mhz; 134*8d67ca89SAndroid Build Coastguard Worker __u16 p0_fabric_freq_mhz; 135*8d67ca89SAndroid Build Coastguard Worker __u16 p1_fabric_freq_mhz; 136*8d67ca89SAndroid Build Coastguard Worker __u16 pn_fabric_freq_mhz; 137*8d67ca89SAndroid Build Coastguard Worker __u16 pm_fabric_freq_mhz; 138*8d67ca89SAndroid Build Coastguard Worker __u16 max_buckets; 139*8d67ca89SAndroid Build Coastguard Worker __u16 max_trl_levels; 140*8d67ca89SAndroid Build Coastguard Worker __u16 bucket_core_counts[TRL_MAX_BUCKETS]; 141*8d67ca89SAndroid Build Coastguard Worker __u16 trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS]; 142*8d67ca89SAndroid Build Coastguard Worker }; 143*8d67ca89SAndroid Build Coastguard Worker struct isst_perf_level_cpu_mask { 144*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 145*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 146*8d67ca89SAndroid Build Coastguard Worker __u8 level; 147*8d67ca89SAndroid Build Coastguard Worker __u8 punit_cpu_map; 148*8d67ca89SAndroid Build Coastguard Worker __u64 mask; 149*8d67ca89SAndroid Build Coastguard Worker __u16 cpu_buffer_size; 150*8d67ca89SAndroid Build Coastguard Worker __s8 cpu_buffer[1]; 151*8d67ca89SAndroid Build Coastguard Worker }; 152*8d67ca89SAndroid Build Coastguard Worker struct isst_base_freq_info { 153*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 154*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 155*8d67ca89SAndroid Build Coastguard Worker __u16 level; 156*8d67ca89SAndroid Build Coastguard Worker __u16 high_base_freq_mhz; 157*8d67ca89SAndroid Build Coastguard Worker __u16 low_base_freq_mhz; 158*8d67ca89SAndroid Build Coastguard Worker __u16 tjunction_max_c; 159*8d67ca89SAndroid Build Coastguard Worker __u16 thermal_design_power_w; 160*8d67ca89SAndroid Build Coastguard Worker }; 161*8d67ca89SAndroid Build Coastguard Worker struct isst_turbo_freq_info { 162*8d67ca89SAndroid Build Coastguard Worker __u8 socket_id; 163*8d67ca89SAndroid Build Coastguard Worker __u8 power_domain_id; 164*8d67ca89SAndroid Build Coastguard Worker __u16 level; 165*8d67ca89SAndroid Build Coastguard Worker __u16 max_clip_freqs; 166*8d67ca89SAndroid Build Coastguard Worker __u16 max_buckets; 167*8d67ca89SAndroid Build Coastguard Worker __u16 max_trl_levels; 168*8d67ca89SAndroid Build Coastguard Worker __u16 lp_clip_freq_mhz[TRL_MAX_LEVELS]; 169*8d67ca89SAndroid Build Coastguard Worker __u16 bucket_core_counts[TRL_MAX_BUCKETS]; 170*8d67ca89SAndroid Build Coastguard Worker __u16 trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS]; 171*8d67ca89SAndroid Build Coastguard Worker }; 172*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_MAGIC 0xFE 173*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_GET_PLATFORM_INFO _IOR(ISST_IF_MAGIC, 0, struct isst_if_platform_info *) 174*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_GET_PHY_ID _IOWR(ISST_IF_MAGIC, 1, struct isst_if_cpu_map *) 175*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_IO_CMD _IOW(ISST_IF_MAGIC, 2, struct isst_if_io_regs *) 176*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_MBOX_COMMAND _IOWR(ISST_IF_MAGIC, 3, struct isst_if_mbox_cmds *) 177*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_MSR_COMMAND _IOWR(ISST_IF_MAGIC, 4, struct isst_if_msr_cmds *) 178*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_COUNT_TPMI_INSTANCES _IOR(ISST_IF_MAGIC, 5, struct isst_tpmi_instance_count *) 179*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_CORE_POWER_STATE _IOWR(ISST_IF_MAGIC, 6, struct isst_core_power *) 180*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_CLOS_PARAM _IOWR(ISST_IF_MAGIC, 7, struct isst_clos_param *) 181*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_CLOS_ASSOC _IOWR(ISST_IF_MAGIC, 8, struct isst_if_clos_assoc_cmds *) 182*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_PERF_LEVELS _IOWR(ISST_IF_MAGIC, 9, struct isst_perf_level_info *) 183*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_PERF_SET_LEVEL _IOW(ISST_IF_MAGIC, 10, struct isst_perf_level_control *) 184*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_PERF_SET_FEATURE _IOW(ISST_IF_MAGIC, 11, struct isst_perf_feature_control *) 185*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_GET_PERF_LEVEL_INFO _IOR(ISST_IF_MAGIC, 12, struct isst_perf_level_data_info *) 186*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_GET_PERF_LEVEL_CPU_MASK _IOR(ISST_IF_MAGIC, 13, struct isst_perf_level_cpu_mask *) 187*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_GET_BASE_FREQ_INFO _IOR(ISST_IF_MAGIC, 14, struct isst_base_freq_info *) 188*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_GET_BASE_FREQ_CPU_MASK _IOR(ISST_IF_MAGIC, 15, struct isst_perf_level_cpu_mask *) 189*8d67ca89SAndroid Build Coastguard Worker #define ISST_IF_GET_TURBO_FREQ_INFO _IOR(ISST_IF_MAGIC, 16, struct isst_turbo_freq_info *) 190*8d67ca89SAndroid Build Coastguard Worker #endif 191