diff options
-rw-r--r-- | drivers/cpufreq/freq_table.c | 20 | ||||
-rw-r--r-- | include/linux/cpufreq.h | 8 |
2 files changed, 28 insertions, 0 deletions
diff --git a/drivers/cpufreq/freq_table.c b/drivers/cpufreq/freq_table.c index b9336edb9bd6..3458d27f63b4 100644 --- a/drivers/cpufreq/freq_table.c +++ b/drivers/cpufreq/freq_table.c | |||
@@ -86,6 +86,20 @@ int cpufreq_frequency_table_verify(struct cpufreq_policy *policy, | |||
86 | } | 86 | } |
87 | EXPORT_SYMBOL_GPL(cpufreq_frequency_table_verify); | 87 | EXPORT_SYMBOL_GPL(cpufreq_frequency_table_verify); |
88 | 88 | ||
89 | /* | ||
90 | * Generic routine to verify policy & frequency table, requires driver to call | ||
91 | * cpufreq_frequency_table_get_attr() prior to it. | ||
92 | */ | ||
93 | int cpufreq_generic_frequency_table_verify(struct cpufreq_policy *policy) | ||
94 | { | ||
95 | struct cpufreq_frequency_table *table = | ||
96 | cpufreq_frequency_get_table(policy->cpu); | ||
97 | if (!table) | ||
98 | return -ENODEV; | ||
99 | |||
100 | return cpufreq_frequency_table_verify(policy, table); | ||
101 | } | ||
102 | EXPORT_SYMBOL_GPL(cpufreq_generic_frequency_table_verify); | ||
89 | 103 | ||
90 | int cpufreq_frequency_table_target(struct cpufreq_policy *policy, | 104 | int cpufreq_frequency_table_target(struct cpufreq_policy *policy, |
91 | struct cpufreq_frequency_table *table, | 105 | struct cpufreq_frequency_table *table, |
@@ -199,6 +213,12 @@ struct freq_attr cpufreq_freq_attr_scaling_available_freqs = { | |||
199 | }; | 213 | }; |
200 | EXPORT_SYMBOL_GPL(cpufreq_freq_attr_scaling_available_freqs); | 214 | EXPORT_SYMBOL_GPL(cpufreq_freq_attr_scaling_available_freqs); |
201 | 215 | ||
216 | struct freq_attr *cpufreq_generic_attr[] = { | ||
217 | &cpufreq_freq_attr_scaling_available_freqs, | ||
218 | NULL, | ||
219 | }; | ||
220 | EXPORT_SYMBOL_GPL(cpufreq_generic_attr); | ||
221 | |||
202 | /* | 222 | /* |
203 | * if you use these, you must assure that the frequency table is valid | 223 | * if you use these, you must assure that the frequency table is valid |
204 | * all the time between get_attr and put_attr! | 224 | * all the time between get_attr and put_attr! |
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index c7495915932d..36ccd0bf1304 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
@@ -401,6 +401,7 @@ int cpufreq_frequency_table_cpuinfo(struct cpufreq_policy *policy, | |||
401 | 401 | ||
402 | int cpufreq_frequency_table_verify(struct cpufreq_policy *policy, | 402 | int cpufreq_frequency_table_verify(struct cpufreq_policy *policy, |
403 | struct cpufreq_frequency_table *table); | 403 | struct cpufreq_frequency_table *table); |
404 | int cpufreq_generic_frequency_table_verify(struct cpufreq_policy *policy); | ||
404 | 405 | ||
405 | int cpufreq_frequency_table_target(struct cpufreq_policy *policy, | 406 | int cpufreq_frequency_table_target(struct cpufreq_policy *policy, |
406 | struct cpufreq_frequency_table *table, | 407 | struct cpufreq_frequency_table *table, |
@@ -416,10 +417,17 @@ struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu); | |||
416 | 417 | ||
417 | /* the following are really really optional */ | 418 | /* the following are really really optional */ |
418 | extern struct freq_attr cpufreq_freq_attr_scaling_available_freqs; | 419 | extern struct freq_attr cpufreq_freq_attr_scaling_available_freqs; |
420 | extern struct freq_attr *cpufreq_generic_attr[]; | ||
419 | void cpufreq_frequency_table_get_attr(struct cpufreq_frequency_table *table, | 421 | void cpufreq_frequency_table_get_attr(struct cpufreq_frequency_table *table, |
420 | unsigned int cpu); | 422 | unsigned int cpu); |
421 | void cpufreq_frequency_table_put_attr(unsigned int cpu); | 423 | void cpufreq_frequency_table_put_attr(unsigned int cpu); |
422 | int cpufreq_table_validate_and_show(struct cpufreq_policy *policy, | 424 | int cpufreq_table_validate_and_show(struct cpufreq_policy *policy, |
423 | struct cpufreq_frequency_table *table); | 425 | struct cpufreq_frequency_table *table); |
424 | 426 | ||
427 | static inline int cpufreq_generic_exit(struct cpufreq_policy *policy) | ||
428 | { | ||
429 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
430 | return 0; | ||
431 | } | ||
432 | |||
425 | #endif /* _LINUX_CPUFREQ_H */ | 433 | #endif /* _LINUX_CPUFREQ_H */ |