diff options
Diffstat (limited to 'include/linux/cpufreq.h')
| -rw-r--r-- | include/linux/cpufreq.h | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index c86d6d8bdfed..b160e98076e3 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
| @@ -151,6 +151,9 @@ struct cpufreq_policy { | |||
| 151 | 151 | ||
| 152 | /* For cpufreq driver's internal use */ | 152 | /* For cpufreq driver's internal use */ |
| 153 | void *driver_data; | 153 | void *driver_data; |
| 154 | |||
| 155 | /* Pointer to the cooling device if used for thermal mitigation */ | ||
| 156 | struct thermal_cooling_device *cdev; | ||
| 154 | }; | 157 | }; |
| 155 | 158 | ||
| 156 | /* Only for ACPI */ | 159 | /* Only for ACPI */ |
| @@ -254,20 +257,12 @@ __ATTR(_name, 0644, show_##_name, store_##_name) | |||
| 254 | static struct freq_attr _name = \ | 257 | static struct freq_attr _name = \ |
| 255 | __ATTR(_name, 0200, NULL, store_##_name) | 258 | __ATTR(_name, 0200, NULL, store_##_name) |
| 256 | 259 | ||
| 257 | struct global_attr { | ||
| 258 | struct attribute attr; | ||
| 259 | ssize_t (*show)(struct kobject *kobj, | ||
| 260 | struct attribute *attr, char *buf); | ||
| 261 | ssize_t (*store)(struct kobject *a, struct attribute *b, | ||
| 262 | const char *c, size_t count); | ||
| 263 | }; | ||
| 264 | |||
| 265 | #define define_one_global_ro(_name) \ | 260 | #define define_one_global_ro(_name) \ |
| 266 | static struct global_attr _name = \ | 261 | static struct kobj_attribute _name = \ |
| 267 | __ATTR(_name, 0444, show_##_name, NULL) | 262 | __ATTR(_name, 0444, show_##_name, NULL) |
| 268 | 263 | ||
| 269 | #define define_one_global_rw(_name) \ | 264 | #define define_one_global_rw(_name) \ |
| 270 | static struct global_attr _name = \ | 265 | static struct kobj_attribute _name = \ |
| 271 | __ATTR(_name, 0644, show_##_name, store_##_name) | 266 | __ATTR(_name, 0644, show_##_name, store_##_name) |
| 272 | 267 | ||
| 273 | 268 | ||
| @@ -330,6 +325,8 @@ struct cpufreq_driver { | |||
| 330 | /* optional */ | 325 | /* optional */ |
| 331 | int (*bios_limit)(int cpu, unsigned int *limit); | 326 | int (*bios_limit)(int cpu, unsigned int *limit); |
| 332 | 327 | ||
| 328 | int (*online)(struct cpufreq_policy *policy); | ||
| 329 | int (*offline)(struct cpufreq_policy *policy); | ||
| 333 | int (*exit)(struct cpufreq_policy *policy); | 330 | int (*exit)(struct cpufreq_policy *policy); |
| 334 | void (*stop_cpu)(struct cpufreq_policy *policy); | 331 | void (*stop_cpu)(struct cpufreq_policy *policy); |
| 335 | int (*suspend)(struct cpufreq_policy *policy); | 332 | int (*suspend)(struct cpufreq_policy *policy); |
| @@ -346,14 +343,15 @@ struct cpufreq_driver { | |||
| 346 | }; | 343 | }; |
| 347 | 344 | ||
| 348 | /* flags */ | 345 | /* flags */ |
| 349 | #define CPUFREQ_STICKY (1 << 0) /* driver isn't removed even if | 346 | |
| 350 | all ->init() calls failed */ | 347 | /* driver isn't removed even if all ->init() calls failed */ |
| 351 | #define CPUFREQ_CONST_LOOPS (1 << 1) /* loops_per_jiffy or other | 348 | #define CPUFREQ_STICKY BIT(0) |
| 352 | kernel "constants" aren't | 349 | |
| 353 | affected by frequency | 350 | /* loops_per_jiffy or other kernel "constants" aren't affected by frequency transitions */ |
| 354 | transitions */ | 351 | #define CPUFREQ_CONST_LOOPS BIT(1) |
| 355 | #define CPUFREQ_PM_NO_WARN (1 << 2) /* don't warn on suspend/resume | 352 | |
| 356 | speed mismatches */ | 353 | /* don't warn on suspend/resume speed mismatches */ |
| 354 | #define CPUFREQ_PM_NO_WARN BIT(2) | ||
| 357 | 355 | ||
| 358 | /* | 356 | /* |
| 359 | * This should be set by platforms having multiple clock-domains, i.e. | 357 | * This should be set by platforms having multiple clock-domains, i.e. |
| @@ -361,14 +359,14 @@ struct cpufreq_driver { | |||
| 361 | * be created in cpu/cpu<num>/cpufreq/ directory and so they can use the same | 359 | * be created in cpu/cpu<num>/cpufreq/ directory and so they can use the same |
| 362 | * governor with different tunables for different clusters. | 360 | * governor with different tunables for different clusters. |
| 363 | */ | 361 | */ |
| 364 | #define CPUFREQ_HAVE_GOVERNOR_PER_POLICY (1 << 3) | 362 | #define CPUFREQ_HAVE_GOVERNOR_PER_POLICY BIT(3) |
| 365 | 363 | ||
| 366 | /* | 364 | /* |
| 367 | * Driver will do POSTCHANGE notifications from outside of their ->target() | 365 | * Driver will do POSTCHANGE notifications from outside of their ->target() |
| 368 | * routine and so must set cpufreq_driver->flags with this flag, so that core | 366 | * routine and so must set cpufreq_driver->flags with this flag, so that core |
| 369 | * can handle them specially. | 367 | * can handle them specially. |
| 370 | */ | 368 | */ |
| 371 | #define CPUFREQ_ASYNC_NOTIFICATION (1 << 4) | 369 | #define CPUFREQ_ASYNC_NOTIFICATION BIT(4) |
| 372 | 370 | ||
| 373 | /* | 371 | /* |
| 374 | * Set by drivers which want cpufreq core to check if CPU is running at a | 372 | * Set by drivers which want cpufreq core to check if CPU is running at a |
| @@ -377,13 +375,19 @@ struct cpufreq_driver { | |||
| 377 | * from the table. And if that fails, we will stop further boot process by | 375 | * from the table. And if that fails, we will stop further boot process by |
| 378 | * issuing a BUG_ON(). | 376 | * issuing a BUG_ON(). |
| 379 | */ | 377 | */ |
| 380 | #define CPUFREQ_NEED_INITIAL_FREQ_CHECK (1 << 5) | 378 | #define CPUFREQ_NEED_INITIAL_FREQ_CHECK BIT(5) |
| 381 | 379 | ||
| 382 | /* | 380 | /* |
| 383 | * Set by drivers to disallow use of governors with "dynamic_switching" flag | 381 | * Set by drivers to disallow use of governors with "dynamic_switching" flag |
| 384 | * set. | 382 | * set. |
| 385 | */ | 383 | */ |
| 386 | #define CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING (1 << 6) | 384 | #define CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING BIT(6) |
| 385 | |||
| 386 | /* | ||
| 387 | * Set by drivers that want the core to automatically register the cpufreq | ||
| 388 | * driver as a thermal cooling device. | ||
| 389 | */ | ||
| 390 | #define CPUFREQ_IS_COOLING_DEV BIT(7) | ||
| 387 | 391 | ||
| 388 | int cpufreq_register_driver(struct cpufreq_driver *driver_data); | 392 | int cpufreq_register_driver(struct cpufreq_driver *driver_data); |
| 389 | int cpufreq_unregister_driver(struct cpufreq_driver *driver_data); | 393 | int cpufreq_unregister_driver(struct cpufreq_driver *driver_data); |
