diff options
author | Linaro CI <ci_notify@linaro.org> | 2019-02-03 22:10:47 +0000 |
---|---|---|
committer | Linaro CI <ci_notify@linaro.org> | 2019-02-03 22:10:47 +0000 |
commit | f07991d612706f6ccd68447d3075d50f5ef16587 (patch) | |
tree | d0d92c7a28d1a8c41197d564ff74c6f199ffbf84 /include | |
parent | 6f35f47376c98501e8eb4d3a1f5ba914cec29751 (diff) | |
parent | 919fa6bd26bfc1a53ee63b00e441b6d1d59631b2 (diff) |
Merge remote-tracking branch 'tsens-thermal/integration/thermal-automerge' into integration-linux-qcomlt
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/cpufreq.h | 50 |
1 files changed, 38 insertions, 12 deletions
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index c86d6d8bdfed..02fc9f210aee 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -13,6 +13,7 @@ #include <linux/clk.h> #include <linux/cpumask.h> +#include <linux/cpu_cooling.h> #include <linux/completion.h> #include <linux/kobject.h> #include <linux/notifier.h> @@ -151,6 +152,11 @@ struct cpufreq_policy { /* For cpufreq driver's internal use */ void *driver_data; + +#ifdef CONFIG_CPU_THERMAL + /* Pointer to the cooling device if used for thermal mitigation */ + struct thermal_cooling_device *cdev; +#endif }; /* Only for ACPI */ @@ -346,14 +352,15 @@ struct cpufreq_driver { }; /* flags */ -#define CPUFREQ_STICKY (1 << 0) /* driver isn't removed even if - all ->init() calls failed */ -#define CPUFREQ_CONST_LOOPS (1 << 1) /* loops_per_jiffy or other - kernel "constants" aren't - affected by frequency - transitions */ -#define CPUFREQ_PM_NO_WARN (1 << 2) /* don't warn on suspend/resume - speed mismatches */ + +/* driver isn't removed even if all ->init() calls failed */ +#define CPUFREQ_STICKY BIT(0) + +/* loops_per_jiffy or other kernel "constants" aren't affected by frequency transitions */ +#define CPUFREQ_CONST_LOOPS BIT(1) + +/* don't warn on suspend/resume speed mismatches */ +#define CPUFREQ_PM_NO_WARN BIT(2) /* * This should be set by platforms having multiple clock-domains, i.e. @@ -361,14 +368,14 @@ struct cpufreq_driver { * be created in cpu/cpu<num>/cpufreq/ directory and so they can use the same * governor with different tunables for different clusters. */ -#define CPUFREQ_HAVE_GOVERNOR_PER_POLICY (1 << 3) +#define CPUFREQ_HAVE_GOVERNOR_PER_POLICY BIT(3) /* * Driver will do POSTCHANGE notifications from outside of their ->target() * routine and so must set cpufreq_driver->flags with this flag, so that core * can handle them specially. */ -#define CPUFREQ_ASYNC_NOTIFICATION (1 << 4) +#define CPUFREQ_ASYNC_NOTIFICATION BIT(4) /* * Set by drivers which want cpufreq core to check if CPU is running at a @@ -377,13 +384,19 @@ struct cpufreq_driver { * from the table. And if that fails, we will stop further boot process by * issuing a BUG_ON(). */ -#define CPUFREQ_NEED_INITIAL_FREQ_CHECK (1 << 5) +#define CPUFREQ_NEED_INITIAL_FREQ_CHECK BIT(5) /* * Set by drivers to disallow use of governors with "dynamic_switching" flag * set. */ -#define CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING (1 << 6) +#define CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING BIT(6) + +/* + * Set by drivers that want the core to automatically register the cpufreq + * driver as a thermal cooling device. + */ +#define CPUFREQ_AUTO_REGISTER_COOLING_DEV BIT(7) int cpufreq_register_driver(struct cpufreq_driver *driver_data); int cpufreq_unregister_driver(struct cpufreq_driver *driver_data); @@ -414,6 +427,19 @@ cpufreq_verify_within_cpu_limits(struct cpufreq_policy *policy) policy->cpuinfo.max_freq); } +#ifdef CONFIG_CPU_THERMAL +static inline void register_cooling_device(struct cpufreq_policy *policy) { + policy->cdev = of_cpufreq_cooling_register(policy); +} + +static inline void unregister_cooling_device(struct cpufreq_policy *policy) { + cpufreq_cooling_unregister(policy->cdev); + policy->cdev = NULL; +} +#else +static inline void register_cooling_device(struct cpufreq_policy *policy) {} +static inline void unregister_cooling_device(struct cpufreq_policy *policy) {} +#endif #ifdef CONFIG_CPU_FREQ void cpufreq_suspend(void); void cpufreq_resume(void); |