aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/cpufreq.h
diff options
context:
space:
mode:
authorLukasz Majewski <l.majewski@samsung.com>2013-12-20 09:24:49 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2014-01-16 20:00:44 -0500
commit6f19efc0a1ca08bc61841b971d8b85ab505d95c8 (patch)
treef522350ff98997a14b3cb86d1d17814965ac098c /include/linux/cpufreq.h
parentb69880f9ccf7e13b2e2cb38f49a2451d7aa548b3 (diff)
cpufreq: Add boost frequency support in core
This commit adds boost frequency support in cpufreq core (Hardware & Software). Some SoCs (like Exynos4 - e.g. 4x12) allow setting frequency above its normal operation limits. Such mode shall be only used for a short time. Overclocking (boost) support is essentially provided by platform dependent cpufreq driver. This commit unifies support for SW and HW (Intel) overclocking solutions in the core cpufreq driver. Previously the "boost" sysfs attribute was defined in the ACPI processor driver code. By default boost is disabled. One global attribute is available at: /sys/devices/system/cpu/cpufreq/boost. It only shows up when cpufreq driver supports overclocking. Under the hood frequencies dedicated for boosting are marked with a special flag (CPUFREQ_BOOST_FREQ) at driver's frequency table. It is the user's concern to enable/disable overclocking with a proper call to sysfs. The cpufreq_boost_trigger_state() function is defined non static on purpose. It is used later with thermal subsystem to provide automatic enable/disable of the BOOST feature. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include/linux/cpufreq.h')
-rw-r--r--include/linux/cpufreq.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h
index 422f10561e0b..4d89e0e6f9cc 100644
--- a/include/linux/cpufreq.h
+++ b/include/linux/cpufreq.h
@@ -227,6 +227,11 @@ struct cpufreq_driver {
227 int (*suspend) (struct cpufreq_policy *policy); 227 int (*suspend) (struct cpufreq_policy *policy);
228 int (*resume) (struct cpufreq_policy *policy); 228 int (*resume) (struct cpufreq_policy *policy);
229 struct freq_attr **attr; 229 struct freq_attr **attr;
230
231 /* platform specific boost support code */
232 bool boost_supported;
233 bool boost_enabled;
234 int (*set_boost) (int state);
230}; 235};
231 236
232/* flags */ 237/* flags */
@@ -435,6 +440,7 @@ extern struct cpufreq_governor cpufreq_gov_conservative;
435 440
436#define CPUFREQ_ENTRY_INVALID ~0 441#define CPUFREQ_ENTRY_INVALID ~0
437#define CPUFREQ_TABLE_END ~1 442#define CPUFREQ_TABLE_END ~1
443#define CPUFREQ_BOOST_FREQ ~2
438 444
439struct cpufreq_frequency_table { 445struct cpufreq_frequency_table {
440 unsigned int driver_data; /* driver specific data, not used by core */ 446 unsigned int driver_data; /* driver specific data, not used by core */
@@ -460,6 +466,24 @@ int cpufreq_frequency_table_get_index(struct cpufreq_policy *policy,
460void cpufreq_frequency_table_update_policy_cpu(struct cpufreq_policy *policy); 466void cpufreq_frequency_table_update_policy_cpu(struct cpufreq_policy *policy);
461ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf); 467ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf);
462 468
469#ifdef CONFIG_CPU_FREQ
470int cpufreq_boost_trigger_state(int state);
471int cpufreq_boost_supported(void);
472int cpufreq_boost_enabled(void);
473#else
474static inline int cpufreq_boost_trigger_state(int state)
475{
476 return 0;
477}
478static inline int cpufreq_boost_supported(void)
479{
480 return 0;
481}
482static inline int cpufreq_boost_enabled(void)
483{
484 return 0;
485}
486#endif
463/* the following funtion is for cpufreq core use only */ 487/* the following funtion is for cpufreq core use only */
464struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu); 488struct cpufreq_frequency_table *cpufreq_frequency_get_table(unsigned int cpu);
465 489