diff options
Diffstat (limited to 'include/linux/cpufreq.h')
| -rw-r--r-- | include/linux/cpufreq.h | 21 | 
1 files changed, 16 insertions, 5 deletions
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index a22944ca052..037d36ae63e 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -106,6 +106,7 @@ struct cpufreq_policy {  					 * governors are used */  	unsigned int		policy; /* see above */  	struct cpufreq_governor	*governor; /* see below */ +	void			*governor_data;  	struct work_struct	update; /* if update_policy() needs to be  					 * called, but you're in IRQ context */ @@ -178,9 +179,11 @@ static inline unsigned long cpufreq_scale(unsigned long old, u_int div, u_int mu   *                          CPUFREQ GOVERNORS                        *   *********************************************************************/ -#define CPUFREQ_GOV_START  1 -#define CPUFREQ_GOV_STOP   2 -#define CPUFREQ_GOV_LIMITS 3 +#define CPUFREQ_GOV_START	1 +#define CPUFREQ_GOV_STOP	2 +#define CPUFREQ_GOV_LIMITS	3 +#define CPUFREQ_GOV_POLICY_INIT	4 +#define CPUFREQ_GOV_POLICY_EXIT	5  struct cpufreq_governor {  	char	name[CPUFREQ_NAME_LEN]; @@ -229,6 +232,13 @@ struct cpufreq_driver {  	struct module           *owner;  	char			name[CPUFREQ_NAME_LEN];  	u8			flags; +	/* +	 * This should be set by platforms having multiple clock-domains, i.e. +	 * supporting multiple policies. With this sysfs directories of governor +	 * would be created in cpu/cpu<num>/cpufreq/ directory and so they can +	 * use the same governor with different tunables for different clusters. +	 */ +	bool			have_governor_per_policy;  	/* needed by all drivers */  	int	(*init)		(struct cpufreq_policy *policy); @@ -268,8 +278,8 @@ int cpufreq_register_driver(struct cpufreq_driver *driver_data);  int cpufreq_unregister_driver(struct cpufreq_driver *driver_data); -void cpufreq_notify_transition(struct cpufreq_freqs *freqs, unsigned int state); - +void cpufreq_notify_transition(struct cpufreq_policy *policy, +		struct cpufreq_freqs *freqs, unsigned int state);  static inline void cpufreq_verify_within_limits(struct cpufreq_policy *policy, unsigned int min, unsigned int max)  { @@ -329,6 +339,7 @@ const char *cpufreq_get_current_driver(void);   *********************************************************************/  int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu);  int cpufreq_update_policy(unsigned int cpu); +bool have_governor_per_policy(void);  #ifdef CONFIG_CPU_FREQ  /* query the current CPU frequency (in kHz). If zero, cpufreq couldn't detect it */  |