aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq
diff options
context:
space:
mode:
authorTomasz Figa <t.figa@samsung.com>2012-11-21 18:09:27 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2012-11-21 18:09:27 -0500
commitfd06a20852e145b2b96c7c6b655fcb9f23ac4e00 (patch)
treef3175bccc497fd5f2eec31f60b57ec8714f79313 /drivers/cpufreq
parentc0e61cb151f2ff8edd02af23b2bd49f625288124 (diff)
cpufreq: exynos: Broadcast frequency change notifications for all cores
On Exynos SoCs all cores share the same frequency setting, so changing frequency of one core will affect rest of cores. This patch modifies the exynos-cpufreq driver to inform cpufreq core about this behavior and broadcast frequency change notifications for all cores. Signed-off-by: Tomasz Figa <t.figa@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r--drivers/cpufreq/exynos-cpufreq.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c
index af2d81e10f71..c0d54a8ba949 100644
--- a/drivers/cpufreq/exynos-cpufreq.c
+++ b/drivers/cpufreq/exynos-cpufreq.c
@@ -100,7 +100,8 @@ static int exynos_target(struct cpufreq_policy *policy,
100 } 100 }
101 arm_volt = volt_table[index]; 101 arm_volt = volt_table[index];
102 102
103 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 103 for_each_cpu(freqs.cpu, policy->cpus)
104 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
104 105
105 /* When the new frequency is higher than current frequency */ 106 /* When the new frequency is higher than current frequency */
106 if ((freqs.new > freqs.old) && !safe_arm_volt) { 107 if ((freqs.new > freqs.old) && !safe_arm_volt) {
@@ -115,7 +116,8 @@ static int exynos_target(struct cpufreq_policy *policy,
115 if (freqs.new != freqs.old) 116 if (freqs.new != freqs.old)
116 exynos_info->set_freq(old_index, index); 117 exynos_info->set_freq(old_index, index);
117 118
118 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 119 for_each_cpu(freqs.cpu, policy->cpus)
120 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
119 121
120 /* When the new frequency is lower than current frequency */ 122 /* When the new frequency is lower than current frequency */
121 if ((freqs.new < freqs.old) || 123 if ((freqs.new < freqs.old) ||
@@ -235,6 +237,7 @@ static int exynos_cpufreq_cpu_init(struct cpufreq_policy *policy)
235 cpumask_copy(policy->related_cpus, cpu_possible_mask); 237 cpumask_copy(policy->related_cpus, cpu_possible_mask);
236 cpumask_copy(policy->cpus, cpu_online_mask); 238 cpumask_copy(policy->cpus, cpu_online_mask);
237 } else { 239 } else {
240 policy->shared_type = CPUFREQ_SHARED_TYPE_ANY;
238 cpumask_setall(policy->cpus); 241 cpumask_setall(policy->cpus);
239 } 242 }
240 243