cpufreq: qcom-hw: invoke frequency-invariance setter function
authorDouglas RAILLARD <douglas.raillard@arm.com>
Thu, 8 Aug 2019 13:18:57 +0000 (14:18 +0100)
committerViresh Kumar <viresh.kumar@linaro.org>
Thu, 22 Aug 2019 06:01:04 +0000 (11:31 +0530)
Add calls to arch_set_freq_scale() in qcom-cpufreq-hw driver to enable
frequency invariance.

Signed-off-by: Douglas RAILLARD <douglas.raillard@arm.com>
Reviewed-by: Quentin Perret <quentin.perret@arm.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/qcom-cpufreq-hw.c

index c9a9da5..a9ae2f8 100644 (file)
@@ -35,9 +35,12 @@ static int qcom_cpufreq_hw_target_index(struct cpufreq_policy *policy,
                                        unsigned int index)
 {
        void __iomem *perf_state_reg = policy->driver_data;
+       unsigned long freq = policy->freq_table[index].frequency;
 
        writel_relaxed(index, perf_state_reg);
 
+       arch_set_freq_scale(policy->related_cpus, freq,
+                           policy->cpuinfo.max_freq);
        return 0;
 }
 
@@ -64,6 +67,7 @@ static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
 {
        void __iomem *perf_state_reg = policy->driver_data;
        int index;
+       unsigned long freq;
 
        index = policy->cached_resolved_idx;
        if (index < 0)
@@ -71,7 +75,11 @@ static unsigned int qcom_cpufreq_hw_fast_switch(struct cpufreq_policy *policy,
 
        writel_relaxed(index, perf_state_reg);
 
-       return policy->freq_table[index].frequency;
+       freq = policy->freq_table[index].frequency;
+       arch_set_freq_scale(policy->related_cpus, freq,
+                           policy->cpuinfo.max_freq);
+
+       return freq;
 }
 
 static int qcom_cpufreq_hw_read_lut(struct device *cpu_dev,