Lines Matching full:policy
92 static unsigned int virt_cpufreq_set_perf(struct cpufreq_policy *policy, in virt_cpufreq_set_perf() argument
96 base + policy->cpu * PER_CPU_OFFSET + REG_SET_PERF_STATE_OFFSET); in virt_cpufreq_set_perf()
100 static unsigned int virt_cpufreq_fast_switch(struct cpufreq_policy *policy, in virt_cpufreq_fast_switch() argument
103 virt_cpufreq_set_perf(policy, target_freq); in virt_cpufreq_fast_switch()
115 static int virt_cpufreq_target(struct cpufreq_policy *policy, in virt_cpufreq_target() argument
122 freqs.old = policy->cur; in virt_cpufreq_target()
125 cpufreq_freq_transition_begin(policy, &freqs); in virt_cpufreq_target()
126 ret = virt_cpufreq_set_perf(policy, target_freq); in virt_cpufreq_target()
127 cpufreq_freq_transition_end(policy, &freqs, ret != 0); in virt_cpufreq_target()
132 static int virt_cpufreq_get_sharing_cpus(struct cpufreq_policy *policy) in virt_cpufreq_get_sharing_cpus() argument
138 cur_perf_domain = readl_relaxed(base + policy->cpu * in virt_cpufreq_get_sharing_cpus()
150 cpumask_set_cpu(cpu, policy->cpus); in virt_cpufreq_get_sharing_cpus()
156 static int virt_cpufreq_get_freq_info(struct cpufreq_policy *policy) in virt_cpufreq_get_freq_info() argument
161 num_perftbl_entries = per_cpu(perftbl_num_entries, policy->cpu); in virt_cpufreq_get_freq_info()
164 policy->cpuinfo.min_freq = 1; in virt_cpufreq_get_freq_info()
165 policy->cpuinfo.max_freq = virt_cpufreq_get_perftbl_entry(policy->cpu, 0); in virt_cpufreq_get_freq_info()
167 policy->min = policy->cpuinfo.min_freq; in virt_cpufreq_get_freq_info()
168 policy->max = policy->cpuinfo.max_freq; in virt_cpufreq_get_freq_info()
170 policy->cur = policy->max; in virt_cpufreq_get_freq_info()
179 table[idx].frequency = virt_cpufreq_get_perftbl_entry(policy->cpu, idx); in virt_cpufreq_get_freq_info()
182 policy->freq_table = table; in virt_cpufreq_get_freq_info()
187 static int virt_cpufreq_cpu_init(struct cpufreq_policy *policy) in virt_cpufreq_cpu_init() argument
192 cpu_dev = get_cpu_device(policy->cpu); in virt_cpufreq_cpu_init()
196 ret = virt_cpufreq_get_freq_info(policy); in virt_cpufreq_cpu_init()
202 ret = virt_cpufreq_get_sharing_cpus(policy); in virt_cpufreq_cpu_init()
216 policy->dvfs_possible_from_any_cpu = false; in virt_cpufreq_cpu_init()
217 policy->fast_switch_possible = true; in virt_cpufreq_cpu_init()
227 topology_set_scale_freq_source(&virt_sfd, policy->cpus); in virt_cpufreq_cpu_init()
232 static void virt_cpufreq_cpu_exit(struct cpufreq_policy *policy) in virt_cpufreq_cpu_exit() argument
234 topology_clear_scale_freq_source(SCALE_FREQ_SOURCE_VIRT, policy->related_cpus); in virt_cpufreq_cpu_exit()
235 kfree(policy->freq_table); in virt_cpufreq_cpu_exit()
238 static int virt_cpufreq_online(struct cpufreq_policy *policy) in virt_cpufreq_online() argument
244 static int virt_cpufreq_offline(struct cpufreq_policy *policy) in virt_cpufreq_offline() argument
250 static int virt_cpufreq_verify_policy(struct cpufreq_policy_data *policy) in virt_cpufreq_verify_policy() argument
252 if (policy->freq_table) in virt_cpufreq_verify_policy()
253 return cpufreq_frequency_table_verify(policy, policy->freq_table); in virt_cpufreq_verify_policy()
255 cpufreq_verify_within_cpu_limits(policy); in virt_cpufreq_verify_policy()