diff options
| author | Rafael J. Wysocki <[email protected]> | 2016-05-05 01:38:56 +0200 | 
|---|---|---|
| committer | Rafael J. Wysocki <[email protected]> | 2016-05-05 01:38:56 +0200 | 
| commit | 28ed05732a8fdd9cd17c0c46fc407c737f45aa5b (patch) | |
| tree | 8a600169bb001ef7e1a4edc0c830f924defa5281 /drivers/base/power/opp/cpu.c | |
| parent | d9c99acb630de767a295c37cd704d08f8237e3f8 (diff) | |
| parent | 411466c5081d2f649b3583cae0f6c9ad5edec636 (diff) | |
Merge branch 'pm-opp' into pm-cpufreq
Diffstat (limited to 'drivers/base/power/opp/cpu.c')
| -rw-r--r-- | drivers/base/power/opp/cpu.c | 68 | 
1 files changed, 49 insertions, 19 deletions
| diff --git a/drivers/base/power/opp/cpu.c b/drivers/base/power/opp/cpu.c index 3428380dfca7..357781e0b791 100644 --- a/drivers/base/power/opp/cpu.c +++ b/drivers/base/power/opp/cpu.c @@ -119,20 +119,8 @@ void dev_pm_opp_free_cpufreq_table(struct device *dev,  EXPORT_SYMBOL_GPL(dev_pm_opp_free_cpufreq_table);  #endif	/* CONFIG_CPU_FREQ */ -#ifdef CONFIG_OF -/** - * dev_pm_opp_of_cpumask_remove_table() - Removes OPP table for @cpumask - * @cpumask:	cpumask for which OPP table needs to be removed - * - * This removes the OPP tables for CPUs present in the @cpumask. - * - * Locking: The internal opp_table and opp structures are RCU protected. - * Hence this function internally uses RCU updater strategy with mutex locks - * to keep the integrity of the internal data structures. Callers should ensure - * that this function is *NOT* called under RCU protection or in contexts where - * mutex cannot be locked. - */ -void dev_pm_opp_of_cpumask_remove_table(cpumask_var_t cpumask) +static void +_dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask, bool of)  {  	struct device *cpu_dev;  	int cpu; @@ -147,9 +135,51 @@ void dev_pm_opp_of_cpumask_remove_table(cpumask_var_t cpumask)  			continue;  		} -		dev_pm_opp_of_remove_table(cpu_dev); +		if (of) +			dev_pm_opp_of_remove_table(cpu_dev); +		else +			dev_pm_opp_remove_table(cpu_dev);  	}  } + +/** + * dev_pm_opp_cpumask_remove_table() - Removes OPP table for @cpumask + * @cpumask:	cpumask for which OPP table needs to be removed + * + * This removes the OPP tables for CPUs present in the @cpumask. + * This should be used to remove all the OPPs entries associated with + * the cpus in @cpumask. + * + * Locking: The internal opp_table and opp structures are RCU protected. + * Hence this function internally uses RCU updater strategy with mutex locks + * to keep the integrity of the internal data structures. Callers should ensure + * that this function is *NOT* called under RCU protection or in contexts where + * mutex cannot be locked. + */ +void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask) +{ +	_dev_pm_opp_cpumask_remove_table(cpumask, false); +} +EXPORT_SYMBOL_GPL(dev_pm_opp_cpumask_remove_table); + +#ifdef CONFIG_OF +/** + * dev_pm_opp_of_cpumask_remove_table() - Removes OPP table for @cpumask + * @cpumask:	cpumask for which OPP table needs to be removed + * + * This removes the OPP tables for CPUs present in the @cpumask. + * This should be used only to remove static entries created from DT. + * + * Locking: The internal opp_table and opp structures are RCU protected. + * Hence this function internally uses RCU updater strategy with mutex locks + * to keep the integrity of the internal data structures. Callers should ensure + * that this function is *NOT* called under RCU protection or in contexts where + * mutex cannot be locked. + */ +void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask) +{ +	_dev_pm_opp_cpumask_remove_table(cpumask, true); +}  EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_remove_table);  /** @@ -164,7 +194,7 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_remove_table);   * that this function is *NOT* called under RCU protection or in contexts where   * mutex cannot be locked.   */ -int dev_pm_opp_of_cpumask_add_table(cpumask_var_t cpumask) +int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask)  {  	struct device *cpu_dev;  	int cpu, ret = 0; @@ -217,7 +247,7 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_add_table);   * that this function is *NOT* called under RCU protection or in contexts where   * mutex cannot be locked.   */ -int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, cpumask_var_t cpumask) +int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)  {  	struct device_node *np, *tmp_np;  	struct device *tcpu_dev; @@ -288,7 +318,7 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_of_get_sharing_cpus);   * mutex cannot be locked.   */  int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, -				const cpumask_var_t cpumask) +				const struct cpumask *cpumask)  {  	struct opp_device *opp_dev;  	struct opp_table *opp_table; @@ -346,7 +376,7 @@ EXPORT_SYMBOL_GPL(dev_pm_opp_set_sharing_cpus);   * that this function is *NOT* called under RCU protection or in contexts where   * mutex cannot be locked.   */ -int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, cpumask_var_t cpumask) +int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask)  {  	struct opp_device *opp_dev;  	struct opp_table *opp_table; |