From db44d1e057ce4c3396668fd0e55cba71729ce71e Mon Sep 17 00:00:00 2001 From: Rohit Gupta Date: Fri, 14 Nov 2014 17:53:15 -0800 Subject: cpufreq: Add a notifer chain that governors can use to report information Some modules can benefit from getting additional information cpufreq governors use to make frequency switch decisions. This change lays down a basic framework that the governors can use to report additional information (Eg: CPU's load) information to the clients that subscribe to cpufreq govinfo notifier chain. Change-Id: I511b4bdb7d12394a31ce5352ae47553861e49303 Signed-off-by: Rohit Gupta [imaund@codeaurora.org: resolved context conflicts] Signed-off-by: Ian Maund --- include/linux/cpufreq.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'include/linux') diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 3ac01621cd1f..af746a212e88 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -361,6 +361,7 @@ static inline void cpufreq_resume(void) {} #define CPUFREQ_TRANSITION_NOTIFIER (0) #define CPUFREQ_POLICY_NOTIFIER (1) +#define CPUFREQ_GOVINFO_NOTIFIER (2) /* Transition notifiers */ #define CPUFREQ_PRECHANGE (0) @@ -373,6 +374,9 @@ static inline void cpufreq_resume(void) {} #define CPUFREQ_CREATE_POLICY (3) #define CPUFREQ_REMOVE_POLICY (4) +/* Govinfo Notifiers */ +#define CPUFREQ_LOAD_CHANGE (0) + #ifdef CONFIG_CPU_FREQ int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list); int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list); @@ -381,6 +385,16 @@ void cpufreq_freq_transition_begin(struct cpufreq_policy *policy, struct cpufreq_freqs *freqs); void cpufreq_freq_transition_end(struct cpufreq_policy *policy, struct cpufreq_freqs *freqs, int transition_failed); +/* + * Governor specific info that can be passed to modules that subscribe + * to CPUFREQ_GOVINFO_NOTIFIER + */ +struct cpufreq_govinfo { + unsigned int cpu; + unsigned int load; + unsigned int sampling_rate_us; +}; +extern struct atomic_notifier_head cpufreq_govinfo_notifier_list; #else /* CONFIG_CPU_FREQ */ static inline int cpufreq_register_notifier(struct notifier_block *nb, -- cgit v1.2.3