diff options
author | Rafael J. Wysocki <rjw@rjwysocki.net> | 2013-10-25 16:36:40 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rjw@rjwysocki.net> | 2013-10-25 16:36:40 -0400 |
commit | 6ddee424fea2d269c2f402278d93165c7b92dc58 (patch) | |
tree | c1b1d0d9058846a6da22def648dea61e16faacd0 /include/linux/cpufreq.h | |
parent | e4db1c7439b31993a4886b273bb9235a8eea82bf (diff) | |
parent | a814613b9a32d9ab9578d9dab396265c826d37f0 (diff) |
Merge back earlier 'pm-cpufreq' material.
Conflicts:
drivers/cpufreq/omap-cpufreq.c
Diffstat (limited to 'include/linux/cpufreq.h')
-rw-r--r-- | include/linux/cpufreq.h | 50 |
1 files changed, 36 insertions, 14 deletions
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index fcabc42d66ab..0aba2a6cadaf 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
@@ -180,13 +180,6 @@ __ATTR(_name, 0644, show_##_name, store_##_name) | |||
180 | struct cpufreq_driver { | 180 | struct cpufreq_driver { |
181 | char name[CPUFREQ_NAME_LEN]; | 181 | char name[CPUFREQ_NAME_LEN]; |
182 | u8 flags; | 182 | u8 flags; |
183 | /* | ||
184 | * This should be set by platforms having multiple clock-domains, i.e. | ||
185 | * supporting multiple policies. With this sysfs directories of governor | ||
186 | * would be created in cpu/cpu<num>/cpufreq/ directory and so they can | ||
187 | * use the same governor with different tunables for different clusters. | ||
188 | */ | ||
189 | bool have_governor_per_policy; | ||
190 | 183 | ||
191 | /* needed by all drivers */ | 184 | /* needed by all drivers */ |
192 | int (*init) (struct cpufreq_policy *policy); | 185 | int (*init) (struct cpufreq_policy *policy); |
@@ -211,13 +204,22 @@ struct cpufreq_driver { | |||
211 | }; | 204 | }; |
212 | 205 | ||
213 | /* flags */ | 206 | /* flags */ |
214 | #define CPUFREQ_STICKY 0x01 /* the driver isn't removed even if | 207 | #define CPUFREQ_STICKY (1 << 0) /* driver isn't removed even if |
215 | * all ->init() calls failed */ | 208 | all ->init() calls failed */ |
216 | #define CPUFREQ_CONST_LOOPS 0x02 /* loops_per_jiffy or other kernel | 209 | #define CPUFREQ_CONST_LOOPS (1 << 1) /* loops_per_jiffy or other |
217 | * "constants" aren't affected by | 210 | kernel "constants" aren't |
218 | * frequency transitions */ | 211 | affected by frequency |
219 | #define CPUFREQ_PM_NO_WARN 0x04 /* don't warn on suspend/resume speed | 212 | transitions */ |
220 | * mismatches */ | 213 | #define CPUFREQ_PM_NO_WARN (1 << 2) /* don't warn on suspend/resume |
214 | speed mismatches */ | ||
215 | |||
216 | /* | ||
217 | * This should be set by platforms having multiple clock-domains, i.e. | ||
218 | * supporting multiple policies. With this sysfs directories of governor would | ||
219 | * be created in cpu/cpu<num>/cpufreq/ directory and so they can use the same | ||
220 | * governor with different tunables for different clusters. | ||
221 | */ | ||
222 | #define CPUFREQ_HAVE_GOVERNOR_PER_POLICY (1 << 3) | ||
221 | 223 | ||
222 | int cpufreq_register_driver(struct cpufreq_driver *driver_data); | 224 | int cpufreq_register_driver(struct cpufreq_driver *driver_data); |
223 | int cpufreq_unregister_driver(struct cpufreq_driver *driver_data); | 225 | int cpufreq_unregister_driver(struct cpufreq_driver *driver_data); |
@@ -240,6 +242,13 @@ static inline void cpufreq_verify_within_limits(struct cpufreq_policy *policy, | |||
240 | return; | 242 | return; |
241 | } | 243 | } |
242 | 244 | ||
245 | static inline void | ||
246 | cpufreq_verify_within_cpu_limits(struct cpufreq_policy *policy) | ||
247 | { | ||
248 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, | ||
249 | policy->cpuinfo.max_freq); | ||
250 | } | ||
251 | |||
243 | /********************************************************************* | 252 | /********************************************************************* |
244 | * CPUFREQ NOTIFIER INTERFACE * | 253 | * CPUFREQ NOTIFIER INTERFACE * |
245 | *********************************************************************/ | 254 | *********************************************************************/ |
@@ -392,6 +401,7 @@ int cpufreq_frequency_table_cpuinfo(struct cpufreq_policy *policy, | |||
392 | 401 | ||
393 | int cpufreq_frequency_table_verify(struct cpufreq_policy *policy, | 402 | int cpufreq_frequency_table_verify(struct cpufreq_policy *policy, |
394 | struct cpufreq_frequency_table *table); | 403 | struct cpufreq_frequency_table *table); |
404 | int cpufreq_generic_frequency_table_verify(struct cpufreq_policy *policy); | ||
395 | 405 | ||
396 | int cpufreq_frequency_table_target(struct cpufreq_policy *policy, | 406 | int cpufreq_frequency_table_target(struct cpufreq_policy *policy, |
397 | struct cpufreq_frequency_table *table, | 407 | struct cpufreq_frequency_table *table, |
@@ -407,8 +417,20 @@ struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu); | |||
407 | 417 | ||
408 | /* the following are really really optional */ | 418 | /* the following are really really optional */ |
409 | 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[]; | ||
410 | void cpufreq_frequency_table_get_attr(struct cpufreq_frequency_table *table, | 421 | void cpufreq_frequency_table_get_attr(struct cpufreq_frequency_table *table, |
411 | unsigned int cpu); | 422 | unsigned int cpu); |
412 | void cpufreq_frequency_table_put_attr(unsigned int cpu); | 423 | void cpufreq_frequency_table_put_attr(unsigned int cpu); |
424 | int cpufreq_table_validate_and_show(struct cpufreq_policy *policy, | ||
425 | struct cpufreq_frequency_table *table); | ||
426 | |||
427 | int cpufreq_generic_init(struct cpufreq_policy *policy, | ||
428 | struct cpufreq_frequency_table *table, | ||
429 | unsigned int transition_latency); | ||
430 | static inline int cpufreq_generic_exit(struct cpufreq_policy *policy) | ||
431 | { | ||
432 | cpufreq_frequency_table_put_attr(policy->cpu); | ||
433 | return 0; | ||
434 | } | ||
413 | 435 | ||
414 | #endif /* _LINUX_CPUFREQ_H */ | 436 | #endif /* _LINUX_CPUFREQ_H */ |