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
ARM64: rockchip: cpufreq-dt: enable CPUFREQ_HAVE_GOVERNOR_PER_POLICY
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
cpufreq
/
cpufreq-dt.c
diff --git
a/drivers/cpufreq/cpufreq-dt.c
b/drivers/cpufreq/cpufreq-dt.c
index f951f911786e086b2b6dc9d615018eb235347dbe..2c566060913ef76085cfdc076ae8eccfdd89927f 100644
(file)
--- a/
drivers/cpufreq/cpufreq-dt.c
+++ b/
drivers/cpufreq/cpufreq-dt.c
@@
-297,11
+297,16
@@
out_put_clk:
static int cpufreq_exit(struct cpufreq_policy *policy)
{
static int cpufreq_exit(struct cpufreq_policy *policy)
{
+ struct cpumask cpus;
struct private_data *priv = policy->driver_data;
struct private_data *priv = policy->driver_data;
+ priv->cpu_dev = get_cpu_device(policy->cpu);
cpufreq_cooling_unregister(priv->cdev);
dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table);
cpufreq_cooling_unregister(priv->cdev);
dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table);
- dev_pm_opp_of_cpumask_remove_table(policy->related_cpus);
+ cpumask_copy(&cpus, policy->related_cpus);
+ cpumask_clear_cpu(policy->cpu, &cpus);
+ dev_pm_opp_of_cpumask_remove_table(&cpus);
+ dev_pm_opp_of_remove_table(priv->cpu_dev);
if (priv->reg_name)
dev_pm_opp_put_regulator(priv->cpu_dev);
if (priv->reg_name)
dev_pm_opp_put_regulator(priv->cpu_dev);
@@
-344,7
+349,8
@@
static void cpufreq_ready(struct cpufreq_policy *policy)
}
static struct cpufreq_driver dt_cpufreq_driver = {
}
static struct cpufreq_driver dt_cpufreq_driver = {
- .flags = CPUFREQ_STICKY | CPUFREQ_NEED_INITIAL_FREQ_CHECK,
+ .flags = CPUFREQ_STICKY | CPUFREQ_NEED_INITIAL_FREQ_CHECK |
+ CPUFREQ_HAVE_GOVERNOR_PER_POLICY,
.verify = cpufreq_generic_frequency_table_verify,
.target_index = set_target,
.get = cpufreq_generic_get,
.verify = cpufreq_generic_frequency_table_verify,
.target_index = set_target,
.get = cpufreq_generic_get,