projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab...
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
cpufreq
/
s3c64xx-cpufreq.c
diff --git
a/drivers/cpufreq/s3c64xx-cpufreq.c
b/drivers/cpufreq/s3c64xx-cpufreq.c
index 27cacb524796994f2cc06a5bef1478aa8e4b9e06..13bb4bae64ee11505fb8a072d041ec9a8268bf84 100644
(file)
--- a/
drivers/cpufreq/s3c64xx-cpufreq.c
+++ b/
drivers/cpufreq/s3c64xx-cpufreq.c
@@
-87,7
+87,7
@@
static int s3c64xx_cpufreq_set_target(struct cpufreq_policy *policy,
freqs.old = clk_get_rate(armclk) / 1000;
freqs.new = s3c64xx_freq_table[i].frequency;
freqs.flags = 0;
freqs.old = clk_get_rate(armclk) / 1000;
freqs.new = s3c64xx_freq_table[i].frequency;
freqs.flags = 0;
- dvfs = &s3c64xx_dvfs_table[s3c64xx_freq_table[i].
index
];
+ dvfs = &s3c64xx_dvfs_table[s3c64xx_freq_table[i].
driver_data
];
if (freqs.old == freqs.new)
return 0;
if (freqs.old == freqs.new)
return 0;
@@
-104,7
+104,8
@@
static int s3c64xx_cpufreq_set_target(struct cpufreq_policy *policy,
if (ret != 0) {
pr_err("Failed to set VDDARM for %dkHz: %d\n",
freqs.new, ret);
if (ret != 0) {
pr_err("Failed to set VDDARM for %dkHz: %d\n",
freqs.new, ret);
- goto err;
+ freqs.new = freqs.old;
+ goto post_notify;
}
}
#endif
}
}
#endif
@@
-113,10
+114,13
@@
static int s3c64xx_cpufreq_set_target(struct cpufreq_policy *policy,
if (ret < 0) {
pr_err("Failed to set rate %dkHz: %d\n",
freqs.new, ret);
if (ret < 0) {
pr_err("Failed to set rate %dkHz: %d\n",
freqs.new, ret);
-
goto err
;
+
freqs.new = freqs.old
;
}
}
+post_notify:
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
+ if (ret)
+ goto err;
#ifdef CONFIG_REGULATOR
if (vddarm && freqs.new < freqs.old) {
#ifdef CONFIG_REGULATOR
if (vddarm && freqs.new < freqs.old) {