In order to fine-tune the frequency scaling from various governors,
allow to set a maximum transition latency from OPPs, which may be
different depending on the SoC.

Signed-off-by: AngeloGioacchino Del Regno 
<angelogioacchino.delre...@somainline.org>
---
 drivers/cpufreq/qcom-cpufreq-hw.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c 
b/drivers/cpufreq/qcom-cpufreq-hw.c
index a92959bb7b50..5f67da796f6c 100644
--- a/drivers/cpufreq/qcom-cpufreq-hw.c
+++ b/drivers/cpufreq/qcom-cpufreq-hw.c
@@ -1401,6 +1401,7 @@ static int qcom_cpufreq_hw_cpu_init(struct cpufreq_policy 
*policy)
        void __iomem *base;
        struct qcom_cpufreq_data *data;
        const char *fdom_resname;
+       unsigned int transition_latency;
        int cpu_count, index, ret;
 
        cpu_dev = get_cpu_device(policy->cpu);
@@ -1478,6 +1479,12 @@ static int qcom_cpufreq_hw_cpu_init(struct 
cpufreq_policy *policy)
                goto error;
        }
 
+       transition_latency = dev_pm_opp_get_max_transition_latency(cpu_dev);
+       if (!transition_latency)
+               transition_latency = CPUFREQ_ETERNAL;
+
+       policy->cpuinfo.transition_latency = transition_latency;
+
        dev_pm_opp_of_register_em(cpu_dev, policy->cpus);
 
        if (policy_has_boost_freq(policy)) {
-- 
2.30.0

Reply via email to