diff options
Diffstat (limited to 'drivers/cpufreq/scpi-cpufreq.c')
-rw-r--r-- | drivers/cpufreq/scpi-cpufreq.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/drivers/cpufreq/scpi-cpufreq.c b/drivers/cpufreq/scpi-cpufreq.c index 99449738faa4..3f49427766b8 100644 --- a/drivers/cpufreq/scpi-cpufreq.c +++ b/drivers/cpufreq/scpi-cpufreq.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/cpu.h> | 22 | #include <linux/cpu.h> |
23 | #include <linux/cpufreq.h> | 23 | #include <linux/cpufreq.h> |
24 | #include <linux/cpumask.h> | 24 | #include <linux/cpumask.h> |
25 | #include <linux/cpu_cooling.h> | ||
26 | #include <linux/export.h> | 25 | #include <linux/export.h> |
27 | #include <linux/module.h> | 26 | #include <linux/module.h> |
28 | #include <linux/of_platform.h> | 27 | #include <linux/of_platform.h> |
@@ -34,7 +33,6 @@ | |||
34 | struct scpi_data { | 33 | struct scpi_data { |
35 | struct clk *clk; | 34 | struct clk *clk; |
36 | struct device *cpu_dev; | 35 | struct device *cpu_dev; |
37 | struct thermal_cooling_device *cdev; | ||
38 | }; | 36 | }; |
39 | 37 | ||
40 | static struct scpi_ops *scpi_ops; | 38 | static struct scpi_ops *scpi_ops; |
@@ -170,6 +168,9 @@ static int scpi_cpufreq_init(struct cpufreq_policy *policy) | |||
170 | policy->cpuinfo.transition_latency = latency; | 168 | policy->cpuinfo.transition_latency = latency; |
171 | 169 | ||
172 | policy->fast_switch_possible = false; | 170 | policy->fast_switch_possible = false; |
171 | |||
172 | dev_pm_opp_of_register_em(policy->cpus); | ||
173 | |||
173 | return 0; | 174 | return 0; |
174 | 175 | ||
175 | out_free_cpufreq_table: | 176 | out_free_cpufreq_table: |
@@ -186,7 +187,6 @@ static int scpi_cpufreq_exit(struct cpufreq_policy *policy) | |||
186 | { | 187 | { |
187 | struct scpi_data *priv = policy->driver_data; | 188 | struct scpi_data *priv = policy->driver_data; |
188 | 189 | ||
189 | cpufreq_cooling_unregister(priv->cdev); | ||
190 | clk_put(priv->clk); | 190 | clk_put(priv->clk); |
191 | dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table); | 191 | dev_pm_opp_free_cpufreq_table(priv->cpu_dev, &policy->freq_table); |
192 | kfree(priv); | 192 | kfree(priv); |
@@ -195,23 +195,16 @@ static int scpi_cpufreq_exit(struct cpufreq_policy *policy) | |||
195 | return 0; | 195 | return 0; |
196 | } | 196 | } |
197 | 197 | ||
198 | static void scpi_cpufreq_ready(struct cpufreq_policy *policy) | ||
199 | { | ||
200 | struct scpi_data *priv = policy->driver_data; | ||
201 | |||
202 | priv->cdev = of_cpufreq_cooling_register(policy); | ||
203 | } | ||
204 | |||
205 | static struct cpufreq_driver scpi_cpufreq_driver = { | 198 | static struct cpufreq_driver scpi_cpufreq_driver = { |
206 | .name = "scpi-cpufreq", | 199 | .name = "scpi-cpufreq", |
207 | .flags = CPUFREQ_STICKY | CPUFREQ_HAVE_GOVERNOR_PER_POLICY | | 200 | .flags = CPUFREQ_STICKY | CPUFREQ_HAVE_GOVERNOR_PER_POLICY | |
208 | CPUFREQ_NEED_INITIAL_FREQ_CHECK, | 201 | CPUFREQ_NEED_INITIAL_FREQ_CHECK | |
202 | CPUFREQ_IS_COOLING_DEV, | ||
209 | .verify = cpufreq_generic_frequency_table_verify, | 203 | .verify = cpufreq_generic_frequency_table_verify, |
210 | .attr = cpufreq_generic_attr, | 204 | .attr = cpufreq_generic_attr, |
211 | .get = scpi_cpufreq_get_rate, | 205 | .get = scpi_cpufreq_get_rate, |
212 | .init = scpi_cpufreq_init, | 206 | .init = scpi_cpufreq_init, |
213 | .exit = scpi_cpufreq_exit, | 207 | .exit = scpi_cpufreq_exit, |
214 | .ready = scpi_cpufreq_ready, | ||
215 | .target_index = scpi_cpufreq_set_target, | 208 | .target_index = scpi_cpufreq_set_target, |
216 | }; | 209 | }; |
217 | 210 | ||