diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/cpufreq/acpi-cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/arm_big_little.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 7 | ||||
-rw-r--r-- | drivers/cpufreq/e_powersaver.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/freq_table.c | 46 | ||||
-rw-r--r-- | drivers/cpufreq/ia64-acpi-cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/loongson2_cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/omap-cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/pasemi-cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/powernow-k6.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/powernow-k7.c | 2 | ||||
-rw-r--r-- | drivers/cpufreq/powernow-k8.c | 2 | ||||
-rw-r--r-- | drivers/cpufreq/ppc-corenet-cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/sh-cpufreq.c | 1 | ||||
-rw-r--r-- | drivers/cpufreq/sparc-us2e-cpufreq.c | 4 | ||||
-rw-r--r-- | drivers/cpufreq/sparc-us3-cpufreq.c | 4 | ||||
-rw-r--r-- | drivers/cpufreq/speedstep-centrino.c | 2 | ||||
-rw-r--r-- | drivers/cpufreq/tegra-cpufreq.c | 1 |
18 files changed, 16 insertions, 62 deletions
diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c index 18448a7e9f86..822ca03a87f7 100644 --- a/drivers/cpufreq/acpi-cpufreq.c +++ b/drivers/cpufreq/acpi-cpufreq.c | |||
@@ -855,7 +855,6 @@ static int acpi_cpufreq_cpu_exit(struct cpufreq_policy *policy) | |||
855 | pr_debug("acpi_cpufreq_cpu_exit\n"); | 855 | pr_debug("acpi_cpufreq_cpu_exit\n"); |
856 | 856 | ||
857 | if (data) { | 857 | if (data) { |
858 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
859 | per_cpu(acfreq_data, policy->cpu) = NULL; | 858 | per_cpu(acfreq_data, policy->cpu) = NULL; |
860 | acpi_processor_unregister_performance(data->acpi_data, | 859 | acpi_processor_unregister_performance(data->acpi_data, |
861 | policy->cpu); | 860 | policy->cpu); |
diff --git a/drivers/cpufreq/arm_big_little.c b/drivers/cpufreq/arm_big_little.c index 72f87e9317e3..3d8707848035 100644 --- a/drivers/cpufreq/arm_big_little.c +++ b/drivers/cpufreq/arm_big_little.c | |||
@@ -478,7 +478,6 @@ static int bL_cpufreq_exit(struct cpufreq_policy *policy) | |||
478 | return -ENODEV; | 478 | return -ENODEV; |
479 | } | 479 | } |
480 | 480 | ||
481 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
482 | put_cluster_clk_and_freq_table(cpu_dev); | 481 | put_cluster_clk_and_freq_table(cpu_dev); |
483 | dev_dbg(cpu_dev, "%s: Exited, cpu: %d\n", __func__, policy->cpu); | 482 | dev_dbg(cpu_dev, "%s: Exited, cpu: %d\n", __func__, policy->cpu); |
484 | 483 | ||
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 746f70875078..dddbefb857c9 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -191,6 +191,12 @@ unsigned int cpufreq_generic_get(unsigned int cpu) | |||
191 | } | 191 | } |
192 | EXPORT_SYMBOL_GPL(cpufreq_generic_get); | 192 | EXPORT_SYMBOL_GPL(cpufreq_generic_get); |
193 | 193 | ||
194 | /* Only for cpufreq core internal use */ | ||
195 | struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu) | ||
196 | { | ||
197 | return per_cpu(cpufreq_cpu_data, cpu); | ||
198 | } | ||
199 | |||
194 | struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu) | 200 | struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu) |
195 | { | 201 | { |
196 | struct cpufreq_policy *policy = NULL; | 202 | struct cpufreq_policy *policy = NULL; |
@@ -1031,7 +1037,6 @@ static void update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu) | |||
1031 | 1037 | ||
1032 | up_write(&policy->rwsem); | 1038 | up_write(&policy->rwsem); |
1033 | 1039 | ||
1034 | cpufreq_frequency_table_update_policy_cpu(policy); | ||
1035 | blocking_notifier_call_chain(&cpufreq_policy_notifier_list, | 1040 | blocking_notifier_call_chain(&cpufreq_policy_notifier_list, |
1036 | CPUFREQ_UPDATE_POLICY_CPU, policy); | 1041 | CPUFREQ_UPDATE_POLICY_CPU, policy); |
1037 | } | 1042 | } |
diff --git a/drivers/cpufreq/e_powersaver.c b/drivers/cpufreq/e_powersaver.c index 9012b8bb6b64..a0d2a423cea9 100644 --- a/drivers/cpufreq/e_powersaver.c +++ b/drivers/cpufreq/e_powersaver.c | |||
@@ -382,7 +382,6 @@ static int eps_cpu_exit(struct cpufreq_policy *policy) | |||
382 | unsigned int cpu = policy->cpu; | 382 | unsigned int cpu = policy->cpu; |
383 | 383 | ||
384 | /* Bye */ | 384 | /* Bye */ |
385 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
386 | kfree(eps_cpu[cpu]); | 385 | kfree(eps_cpu[cpu]); |
387 | eps_cpu[cpu] = NULL; | 386 | eps_cpu[cpu] = NULL; |
388 | return 0; | 387 | return 0; |
diff --git a/drivers/cpufreq/freq_table.c b/drivers/cpufreq/freq_table.c index 8e54f97899ba..65a477075b3f 100644 --- a/drivers/cpufreq/freq_table.c +++ b/drivers/cpufreq/freq_table.c | |||
@@ -91,8 +91,8 @@ int cpufreq_frequency_table_verify(struct cpufreq_policy *policy, | |||
91 | EXPORT_SYMBOL_GPL(cpufreq_frequency_table_verify); | 91 | EXPORT_SYMBOL_GPL(cpufreq_frequency_table_verify); |
92 | 92 | ||
93 | /* | 93 | /* |
94 | * Generic routine to verify policy & frequency table, requires driver to call | 94 | * Generic routine to verify policy & frequency table, requires driver to set |
95 | * cpufreq_frequency_table_get_attr() prior to it. | 95 | * policy->freq_table prior to it. |
96 | */ | 96 | */ |
97 | int cpufreq_generic_frequency_table_verify(struct cpufreq_policy *policy) | 97 | int cpufreq_generic_frequency_table_verify(struct cpufreq_policy *policy) |
98 | { | 98 | { |
@@ -203,8 +203,6 @@ int cpufreq_frequency_table_get_index(struct cpufreq_policy *policy, | |||
203 | } | 203 | } |
204 | EXPORT_SYMBOL_GPL(cpufreq_frequency_table_get_index); | 204 | EXPORT_SYMBOL_GPL(cpufreq_frequency_table_get_index); |
205 | 205 | ||
206 | static DEFINE_PER_CPU(struct cpufreq_frequency_table *, cpufreq_show_table); | ||
207 | |||
208 | /** | 206 | /** |
209 | * show_available_freqs - show available frequencies for the specified CPU | 207 | * show_available_freqs - show available frequencies for the specified CPU |
210 | */ | 208 | */ |
@@ -212,15 +210,12 @@ static ssize_t show_available_freqs(struct cpufreq_policy *policy, char *buf, | |||
212 | bool show_boost) | 210 | bool show_boost) |
213 | { | 211 | { |
214 | unsigned int i = 0; | 212 | unsigned int i = 0; |
215 | unsigned int cpu = policy->cpu; | ||
216 | ssize_t count = 0; | 213 | ssize_t count = 0; |
217 | struct cpufreq_frequency_table *table; | 214 | struct cpufreq_frequency_table *table = policy->freq_table; |
218 | 215 | ||
219 | if (!per_cpu(cpufreq_show_table, cpu)) | 216 | if (!table) |
220 | return -ENODEV; | 217 | return -ENODEV; |
221 | 218 | ||
222 | table = per_cpu(cpufreq_show_table, cpu); | ||
223 | |||
224 | for (i = 0; (table[i].frequency != CPUFREQ_TABLE_END); i++) { | 219 | for (i = 0; (table[i].frequency != CPUFREQ_TABLE_END); i++) { |
225 | if (table[i].frequency == CPUFREQ_ENTRY_INVALID) | 220 | if (table[i].frequency == CPUFREQ_ENTRY_INVALID) |
226 | continue; | 221 | continue; |
@@ -283,49 +278,24 @@ struct freq_attr *cpufreq_generic_attr[] = { | |||
283 | }; | 278 | }; |
284 | EXPORT_SYMBOL_GPL(cpufreq_generic_attr); | 279 | EXPORT_SYMBOL_GPL(cpufreq_generic_attr); |
285 | 280 | ||
286 | /* | ||
287 | * if you use these, you must assure that the frequency table is valid | ||
288 | * all the time between get_attr and put_attr! | ||
289 | */ | ||
290 | void cpufreq_frequency_table_get_attr(struct cpufreq_frequency_table *table, | ||
291 | unsigned int cpu) | ||
292 | { | ||
293 | pr_debug("setting show_table for cpu %u to %p\n", cpu, table); | ||
294 | per_cpu(cpufreq_show_table, cpu) = table; | ||
295 | } | ||
296 | EXPORT_SYMBOL_GPL(cpufreq_frequency_table_get_attr); | ||
297 | |||
298 | void cpufreq_frequency_table_put_attr(unsigned int cpu) | ||
299 | { | ||
300 | pr_debug("clearing show_table for cpu %u\n", cpu); | ||
301 | per_cpu(cpufreq_show_table, cpu) = NULL; | ||
302 | } | ||
303 | EXPORT_SYMBOL_GPL(cpufreq_frequency_table_put_attr); | ||
304 | |||
305 | int cpufreq_table_validate_and_show(struct cpufreq_policy *policy, | 281 | int cpufreq_table_validate_and_show(struct cpufreq_policy *policy, |
306 | struct cpufreq_frequency_table *table) | 282 | struct cpufreq_frequency_table *table) |
307 | { | 283 | { |
308 | int ret = cpufreq_frequency_table_cpuinfo(policy, table); | 284 | int ret = cpufreq_frequency_table_cpuinfo(policy, table); |
309 | 285 | ||
310 | if (!ret) | 286 | if (!ret) |
311 | cpufreq_frequency_table_get_attr(table, policy->cpu); | 287 | policy->freq_table = table; |
312 | 288 | ||
313 | return ret; | 289 | return ret; |
314 | } | 290 | } |
315 | EXPORT_SYMBOL_GPL(cpufreq_table_validate_and_show); | 291 | EXPORT_SYMBOL_GPL(cpufreq_table_validate_and_show); |
316 | 292 | ||
317 | void cpufreq_frequency_table_update_policy_cpu(struct cpufreq_policy *policy) | 293 | struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu); |
318 | { | ||
319 | pr_debug("Updating show_table for new_cpu %u from last_cpu %u\n", | ||
320 | policy->cpu, policy->last_cpu); | ||
321 | per_cpu(cpufreq_show_table, policy->cpu) = per_cpu(cpufreq_show_table, | ||
322 | policy->last_cpu); | ||
323 | per_cpu(cpufreq_show_table, policy->last_cpu) = NULL; | ||
324 | } | ||
325 | 294 | ||
326 | struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu) | 295 | struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu) |
327 | { | 296 | { |
328 | return per_cpu(cpufreq_show_table, cpu); | 297 | struct cpufreq_policy *policy = cpufreq_cpu_get_raw(cpu); |
298 | return policy ? policy->freq_table : NULL; | ||
329 | } | 299 | } |
330 | EXPORT_SYMBOL_GPL(cpufreq_frequency_get_table); | 300 | EXPORT_SYMBOL_GPL(cpufreq_frequency_get_table); |
331 | 301 | ||
diff --git a/drivers/cpufreq/ia64-acpi-cpufreq.c b/drivers/cpufreq/ia64-acpi-cpufreq.c index 53c6ac637e10..a22b5d182e0e 100644 --- a/drivers/cpufreq/ia64-acpi-cpufreq.c +++ b/drivers/cpufreq/ia64-acpi-cpufreq.c | |||
@@ -332,7 +332,6 @@ acpi_cpufreq_cpu_exit ( | |||
332 | pr_debug("acpi_cpufreq_cpu_exit\n"); | 332 | pr_debug("acpi_cpufreq_cpu_exit\n"); |
333 | 333 | ||
334 | if (data) { | 334 | if (data) { |
335 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
336 | acpi_io_data[policy->cpu] = NULL; | 335 | acpi_io_data[policy->cpu] = NULL; |
337 | acpi_processor_unregister_performance(&data->acpi_data, | 336 | acpi_processor_unregister_performance(&data->acpi_data, |
338 | policy->cpu); | 337 | policy->cpu); |
diff --git a/drivers/cpufreq/loongson2_cpufreq.c b/drivers/cpufreq/loongson2_cpufreq.c index b6581abc9207..a3588d61d933 100644 --- a/drivers/cpufreq/loongson2_cpufreq.c +++ b/drivers/cpufreq/loongson2_cpufreq.c | |||
@@ -104,7 +104,6 @@ static int loongson2_cpufreq_cpu_init(struct cpufreq_policy *policy) | |||
104 | 104 | ||
105 | static int loongson2_cpufreq_exit(struct cpufreq_policy *policy) | 105 | static int loongson2_cpufreq_exit(struct cpufreq_policy *policy) |
106 | { | 106 | { |
107 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
108 | clk_put(policy->clk); | 107 | clk_put(policy->clk); |
109 | return 0; | 108 | return 0; |
110 | } | 109 | } |
diff --git a/drivers/cpufreq/omap-cpufreq.c b/drivers/cpufreq/omap-cpufreq.c index 590f5b66d181..5f69c9aa703c 100644 --- a/drivers/cpufreq/omap-cpufreq.c +++ b/drivers/cpufreq/omap-cpufreq.c | |||
@@ -143,7 +143,6 @@ fail: | |||
143 | 143 | ||
144 | static int omap_cpu_exit(struct cpufreq_policy *policy) | 144 | static int omap_cpu_exit(struct cpufreq_policy *policy) |
145 | { | 145 | { |
146 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
147 | freq_table_free(); | 146 | freq_table_free(); |
148 | clk_put(policy->clk); | 147 | clk_put(policy->clk); |
149 | return 0; | 148 | return 0; |
diff --git a/drivers/cpufreq/pasemi-cpufreq.c b/drivers/cpufreq/pasemi-cpufreq.c index 0426008380d8..6a2b7d3e85a7 100644 --- a/drivers/cpufreq/pasemi-cpufreq.c +++ b/drivers/cpufreq/pasemi-cpufreq.c | |||
@@ -234,7 +234,6 @@ static int pas_cpufreq_cpu_exit(struct cpufreq_policy *policy) | |||
234 | if (sdcpwr_mapbase) | 234 | if (sdcpwr_mapbase) |
235 | iounmap(sdcpwr_mapbase); | 235 | iounmap(sdcpwr_mapbase); |
236 | 236 | ||
237 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
238 | return 0; | 237 | return 0; |
239 | } | 238 | } |
240 | 239 | ||
diff --git a/drivers/cpufreq/powernow-k6.c b/drivers/cpufreq/powernow-k6.c index b9a444e358b5..ce27e6c26c94 100644 --- a/drivers/cpufreq/powernow-k6.c +++ b/drivers/cpufreq/powernow-k6.c | |||
@@ -231,7 +231,6 @@ static int powernow_k6_cpu_exit(struct cpufreq_policy *policy) | |||
231 | if (i == max_multiplier) | 231 | if (i == max_multiplier) |
232 | powernow_k6_target(policy, i); | 232 | powernow_k6_target(policy, i); |
233 | } | 233 | } |
234 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
235 | return 0; | 234 | return 0; |
236 | } | 235 | } |
237 | 236 | ||
diff --git a/drivers/cpufreq/powernow-k7.c b/drivers/cpufreq/powernow-k7.c index 946708a1d745..0e68e0275621 100644 --- a/drivers/cpufreq/powernow-k7.c +++ b/drivers/cpufreq/powernow-k7.c | |||
@@ -664,8 +664,6 @@ static int powernow_cpu_init(struct cpufreq_policy *policy) | |||
664 | 664 | ||
665 | static int powernow_cpu_exit(struct cpufreq_policy *policy) | 665 | static int powernow_cpu_exit(struct cpufreq_policy *policy) |
666 | { | 666 | { |
667 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
668 | |||
669 | #ifdef CONFIG_X86_POWERNOW_K7_ACPI | 667 | #ifdef CONFIG_X86_POWERNOW_K7_ACPI |
670 | if (acpi_processor_perf) { | 668 | if (acpi_processor_perf) { |
671 | acpi_processor_unregister_performance(acpi_processor_perf, 0); | 669 | acpi_processor_unregister_performance(acpi_processor_perf, 0); |
diff --git a/drivers/cpufreq/powernow-k8.c b/drivers/cpufreq/powernow-k8.c index 6684e0342792..27eb2be44de5 100644 --- a/drivers/cpufreq/powernow-k8.c +++ b/drivers/cpufreq/powernow-k8.c | |||
@@ -1164,8 +1164,6 @@ static int powernowk8_cpu_exit(struct cpufreq_policy *pol) | |||
1164 | 1164 | ||
1165 | powernow_k8_cpu_exit_acpi(data); | 1165 | powernow_k8_cpu_exit_acpi(data); |
1166 | 1166 | ||
1167 | cpufreq_frequency_table_put_attr(pol->cpu); | ||
1168 | |||
1169 | kfree(data->powernow_table); | 1167 | kfree(data->powernow_table); |
1170 | kfree(data); | 1168 | kfree(data); |
1171 | for_each_cpu(cpu, pol->cpus) | 1169 | for_each_cpu(cpu, pol->cpus) |
diff --git a/drivers/cpufreq/ppc-corenet-cpufreq.c b/drivers/cpufreq/ppc-corenet-cpufreq.c index 051000f44ca2..037949d575bd 100644 --- a/drivers/cpufreq/ppc-corenet-cpufreq.c +++ b/drivers/cpufreq/ppc-corenet-cpufreq.c | |||
@@ -228,7 +228,6 @@ static int __exit corenet_cpufreq_cpu_exit(struct cpufreq_policy *policy) | |||
228 | struct cpu_data *data = per_cpu(cpu_data, policy->cpu); | 228 | struct cpu_data *data = per_cpu(cpu_data, policy->cpu); |
229 | unsigned int cpu; | 229 | unsigned int cpu; |
230 | 230 | ||
231 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
232 | of_node_put(data->parent); | 231 | of_node_put(data->parent); |
233 | kfree(data->table); | 232 | kfree(data->table); |
234 | kfree(data); | 233 | kfree(data); |
diff --git a/drivers/cpufreq/sh-cpufreq.c b/drivers/cpufreq/sh-cpufreq.c index 387af12503a6..696170ebd3a3 100644 --- a/drivers/cpufreq/sh-cpufreq.c +++ b/drivers/cpufreq/sh-cpufreq.c | |||
@@ -143,7 +143,6 @@ static int sh_cpufreq_cpu_exit(struct cpufreq_policy *policy) | |||
143 | unsigned int cpu = policy->cpu; | 143 | unsigned int cpu = policy->cpu; |
144 | struct clk *cpuclk = &per_cpu(sh_cpuclk, cpu); | 144 | struct clk *cpuclk = &per_cpu(sh_cpuclk, cpu); |
145 | 145 | ||
146 | cpufreq_frequency_table_put_attr(cpu); | ||
147 | clk_put(cpuclk); | 146 | clk_put(cpuclk); |
148 | 147 | ||
149 | return 0; | 148 | return 0; |
diff --git a/drivers/cpufreq/sparc-us2e-cpufreq.c b/drivers/cpufreq/sparc-us2e-cpufreq.c index 62aa23e219d4..b73feeb666f9 100644 --- a/drivers/cpufreq/sparc-us2e-cpufreq.c +++ b/drivers/cpufreq/sparc-us2e-cpufreq.c | |||
@@ -301,10 +301,8 @@ static int __init us2e_freq_cpu_init(struct cpufreq_policy *policy) | |||
301 | 301 | ||
302 | static int us2e_freq_cpu_exit(struct cpufreq_policy *policy) | 302 | static int us2e_freq_cpu_exit(struct cpufreq_policy *policy) |
303 | { | 303 | { |
304 | if (cpufreq_us2e_driver) { | 304 | if (cpufreq_us2e_driver) |
305 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
306 | us2e_freq_target(policy, 0); | 305 | us2e_freq_target(policy, 0); |
307 | } | ||
308 | 306 | ||
309 | return 0; | 307 | return 0; |
310 | } | 308 | } |
diff --git a/drivers/cpufreq/sparc-us3-cpufreq.c b/drivers/cpufreq/sparc-us3-cpufreq.c index 724ffbd7105d..9bb42ba50efa 100644 --- a/drivers/cpufreq/sparc-us3-cpufreq.c +++ b/drivers/cpufreq/sparc-us3-cpufreq.c | |||
@@ -156,10 +156,8 @@ static int __init us3_freq_cpu_init(struct cpufreq_policy *policy) | |||
156 | 156 | ||
157 | static int us3_freq_cpu_exit(struct cpufreq_policy *policy) | 157 | static int us3_freq_cpu_exit(struct cpufreq_policy *policy) |
158 | { | 158 | { |
159 | if (cpufreq_us3_driver) { | 159 | if (cpufreq_us3_driver) |
160 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
161 | us3_freq_target(policy, 0); | 160 | us3_freq_target(policy, 0); |
162 | } | ||
163 | 161 | ||
164 | return 0; | 162 | return 0; |
165 | } | 163 | } |
diff --git a/drivers/cpufreq/speedstep-centrino.c b/drivers/cpufreq/speedstep-centrino.c index 4e1daca5ce3b..6723f0390f20 100644 --- a/drivers/cpufreq/speedstep-centrino.c +++ b/drivers/cpufreq/speedstep-centrino.c | |||
@@ -406,8 +406,6 @@ static int centrino_cpu_exit(struct cpufreq_policy *policy) | |||
406 | if (!per_cpu(centrino_model, cpu)) | 406 | if (!per_cpu(centrino_model, cpu)) |
407 | return -ENODEV; | 407 | return -ENODEV; |
408 | 408 | ||
409 | cpufreq_frequency_table_put_attr(cpu); | ||
410 | |||
411 | per_cpu(centrino_model, cpu) = NULL; | 409 | per_cpu(centrino_model, cpu) = NULL; |
412 | 410 | ||
413 | return 0; | 411 | return 0; |
diff --git a/drivers/cpufreq/tegra-cpufreq.c b/drivers/cpufreq/tegra-cpufreq.c index bcfed7761029..63f00598a251 100644 --- a/drivers/cpufreq/tegra-cpufreq.c +++ b/drivers/cpufreq/tegra-cpufreq.c | |||
@@ -136,7 +136,6 @@ static int tegra_cpu_init(struct cpufreq_policy *policy) | |||
136 | 136 | ||
137 | static int tegra_cpu_exit(struct cpufreq_policy *policy) | 137 | static int tegra_cpu_exit(struct cpufreq_policy *policy) |
138 | { | 138 | { |
139 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
140 | clk_disable_unprepare(cpu_clk); | 139 | clk_disable_unprepare(cpu_clk); |
141 | clk_disable_unprepare(emc_clk); | 140 | clk_disable_unprepare(emc_clk); |
142 | return 0; | 141 | return 0; |