diff options
author | Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> | 2015-04-10 19:58:57 +0200 |
---|---|---|
committer | Seung-Woo Kim <sw0312.kim@samsung.com> | 2016-12-14 13:50:12 +0900 |
commit | 01d5f3b599dbaf11ca78f3c6ac7cfe902e441df1 (patch) | |
tree | 0fd2aa67be26ac62fa2b0b67b8d2f92b3f09f66c | |
parent | 91517b8e6bbe4f7bd71813c485fde714096352fb (diff) |
cpufreq / OPP: allow allocation of extra table entries in freq_table
Prefix dev_pm_opp_init_cpufreq_table() with "__" and add a wrapper
for it to keep current users unchanged. Then add an extra_opps
parameter to __dev_pm_opp_init_cpufreq_table() to allow allocation of
extra table entries in freq_table.
This patch is a preparation for adding 'boost' mode frequencies
support to cpufreq-dt driver.
Cc: Tomasz Figa <tomasz.figa@gmail.com>
Cc: Mike Turquette <mturquette@linaro.org>
Cc: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Cc: Thomas Abraham <thomas.ab@samsung.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
-rw-r--r-- | drivers/cpufreq/cpufreq_opp.c | 18 | ||||
-rw-r--r-- | include/linux/cpufreq.h | 3 |
2 files changed, 17 insertions, 4 deletions
diff --git a/drivers/cpufreq/cpufreq_opp.c b/drivers/cpufreq/cpufreq_opp.c index 773bcde893c0..773164ba41dc 100644 --- a/drivers/cpufreq/cpufreq_opp.c +++ b/drivers/cpufreq/cpufreq_opp.c @@ -21,9 +21,10 @@ #include <linux/slab.h> /** - * dev_pm_opp_init_cpufreq_table() - create a cpufreq table for a device + * __dev_pm_opp_init_cpufreq_table() - create a cpufreq table for a device * @dev: device for which we do this operation * @table: Cpufreq table returned back to caller + * @extra_opps: Number of extra table entries to allocate * * Generate a cpufreq table for a provided device- this assumes that the * opp list is already initialized and ready for usage. @@ -44,8 +45,9 @@ * structures, we use RCU read lock inside this function. As a result, users of * this function DONOT need to use explicit locks for invoking. */ -int dev_pm_opp_init_cpufreq_table(struct device *dev, - struct cpufreq_frequency_table **table) +int __dev_pm_opp_init_cpufreq_table(struct device *dev, + struct cpufreq_frequency_table **table, + unsigned int extra_opps) { struct dev_pm_opp *opp; struct cpufreq_frequency_table *freq_table = NULL; @@ -60,7 +62,8 @@ int dev_pm_opp_init_cpufreq_table(struct device *dev, goto out; } - freq_table = kcalloc((max_opps + 1), sizeof(*freq_table), GFP_ATOMIC); + freq_table = kcalloc((max_opps + extra_opps + 1), sizeof(*freq_table), + GFP_ATOMIC); if (!freq_table) { ret = -ENOMEM; goto out; @@ -89,6 +92,13 @@ out: return ret; } +EXPORT_SYMBOL_GPL(__dev_pm_opp_init_cpufreq_table); + +int dev_pm_opp_init_cpufreq_table(struct device *dev, + struct cpufreq_frequency_table **table) +{ + return __dev_pm_opp_init_cpufreq_table(dev, table, 0); +} EXPORT_SYMBOL_GPL(dev_pm_opp_init_cpufreq_table); /** diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 60d9a2052e3e..5c0501f50452 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h @@ -517,6 +517,9 @@ struct cpufreq_frequency_table { }; #if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP) +int __dev_pm_opp_init_cpufreq_table(struct device *dev, + struct cpufreq_frequency_table **table, + unsigned int extra_opps); int dev_pm_opp_init_cpufreq_table(struct device *dev, struct cpufreq_frequency_table **table); void dev_pm_opp_free_cpufreq_table(struct device *dev, |