diff options
author | Jonghwan Choi <jhbird.choi@samsung.com> | 2013-02-04 21:01:22 -0800 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2013-02-04 21:01:22 -0800 |
commit | c098ea74b268969bde5aaf1689b61d236abf82f5 (patch) | |
tree | fd8ecf1fe080f22c7b0d34210e8fbdb8915e327a /drivers/cpufreq/exynos-cpufreq.c | |
parent | 229b21e2b75302d6d1b931031ae7d53e1a4d0830 (diff) |
cpufreq: exynos: Fix hang in pm handler due to frequency mismatch
When pm handler set freq & voltage, frequency mismatch occurred.
Because freqs.new isn't set in pm handler.
Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'drivers/cpufreq/exynos-cpufreq.c')
-rw-r--r-- | drivers/cpufreq/exynos-cpufreq.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/cpufreq/exynos-cpufreq.c b/drivers/cpufreq/exynos-cpufreq.c index f48ba5260e08..67e89ef55168 100644 --- a/drivers/cpufreq/exynos-cpufreq.c +++ b/drivers/cpufreq/exynos-cpufreq.c @@ -69,9 +69,10 @@ static int exynos_cpufreq_scale(unsigned int target_freq) int ret = 0; freqs.old = policy->cur; + freqs.new = target_freq; freqs.cpu = policy->cpu; - if (target_freq == freqs.old) + if (freqs.new == freqs.old) goto out; /* @@ -159,6 +160,7 @@ static int exynos_target(struct cpufreq_policy *policy, { struct cpufreq_frequency_table *freq_table = exynos_info->freq_table; unsigned int index; + unsigned int new_freq; int ret = 0; mutex_lock(&cpufreq_lock); @@ -172,9 +174,9 @@ static int exynos_target(struct cpufreq_policy *policy, goto out; } - freqs.new = freq_table[index].frequency; + new_freq = freq_table[index].frequency; - ret = exynos_cpufreq_scale(freqs.new); + ret = exynos_cpufreq_scale(new_freq); out: mutex_unlock(&cpufreq_lock); |