/* Set clock frequency */ static int bL_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index) { u32 cpu = policy->cpu, cur_cluster, new_cluster, actual_cluster; unsigned int freqs_new; int ret; cur_cluster = cpu_to_cluster(cpu); new_cluster = actual_cluster = per_cpu(physical_cluster, cpu); freqs_new = freq_table[cur_cluster][index].frequency; if (is_bL_switching_enabled()) { if ((actual_cluster == A15_CLUSTER) && (freqs_new < clk_big_min)) { new_cluster = A7_CLUSTER; } else if ((actual_cluster == A7_CLUSTER) && (freqs_new > clk_little_max)) { new_cluster = A15_CLUSTER; } } ret = bL_cpufreq_set_rate(cpu, actual_cluster, new_cluster, freqs_new); if (!ret) { arch_set_freq_scale(policy->related_cpus, freqs_new, policy->cpuinfo.max_freq); } return ret; }
static int scpi_cpufreq_set_target(struct cpufreq_policy *policy, unsigned int index) { unsigned long freq = policy->freq_table[index].frequency; struct scpi_data *priv = policy->driver_data; u64 rate = freq * 1000; int ret; ret = clk_set_rate(priv->clk, rate); if (ret) return ret; if (clk_get_rate(priv->clk) != rate) return -EIO; arch_set_freq_scale(policy->related_cpus, freq, policy->cpuinfo.max_freq); return 0; }