]> www.infradead.org Git - users/hch/misc.git/commitdiff
cpufreq: tegra186: Set target frequency for all cpus in policy
authorAaron Kling <webgeek1234@gmail.com>
Fri, 29 Aug 2025 02:48:12 +0000 (21:48 -0500)
committerViresh Kumar <viresh.kumar@linaro.org>
Mon, 29 Sep 2025 09:25:35 +0000 (14:55 +0530)
The original commit set all cores in a cluster to a shared policy, but
did not update set_target to apply a frequency change to all cores for
the policy. This caused most cores to remain stuck at their boot
frequency.

Fixes: be4ae8c19492 ("cpufreq: tegra186: Share policy per cluster")
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/tegra186-cpufreq.c

index 4270686fc3e3ebb27868418b49377fb8010fa308..a9e1f9bd2a4e9be37921609d5ae172ffa65ba6f2 100644 (file)
@@ -93,10 +93,14 @@ static int tegra186_cpufreq_set_target(struct cpufreq_policy *policy,
 {
        struct tegra186_cpufreq_data *data = cpufreq_get_driver_data();
        struct cpufreq_frequency_table *tbl = policy->freq_table + index;
-       unsigned int edvd_offset = data->cpus[policy->cpu].edvd_offset;
+       unsigned int edvd_offset;
        u32 edvd_val = tbl->driver_data;
+       u32 cpu;
 
-       writel(edvd_val, data->regs + edvd_offset);
+       for_each_cpu(cpu, policy->cpus) {
+               edvd_offset = data->cpus[cpu].edvd_offset;
+               writel(edvd_val, data->regs + edvd_offset);
+       }
 
        return 0;
 }