Commit 99f381d3 authored by Nishanth Menon's avatar Nishanth Menon Committed by Rafael J. Wysocki

PM / OPP: Introduce function to free cpufreq table

cpufreq table allocated by opp_init_cpufreq_table is better
freed by OPP layer itself. This allows future modifications to
the table handling to be transparent to the users.
Signed-off-by: default avatarNishanth Menon <nm@ti.com>
Acked-by: default avatarKevin Hilman <khilman@ti.com>
Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent 3110df80
...@@ -321,6 +321,8 @@ opp_init_cpufreq_table - cpufreq framework typically is initialized with ...@@ -321,6 +321,8 @@ opp_init_cpufreq_table - cpufreq framework typically is initialized with
addition to CONFIG_PM as power management feature is required to addition to CONFIG_PM as power management feature is required to
dynamically scale voltage and frequency in a system. dynamically scale voltage and frequency in a system.
opp_free_cpufreq_table - Free up the table allocated by opp_init_cpufreq_table
7. Data Structures 7. Data Structures
================== ==================
Typically an SoC contains multiple voltage domains which are variable. Each Typically an SoC contains multiple voltage domains which are variable. Each
......
...@@ -625,4 +625,21 @@ int opp_init_cpufreq_table(struct device *dev, ...@@ -625,4 +625,21 @@ int opp_init_cpufreq_table(struct device *dev,
return 0; return 0;
} }
/**
* opp_free_cpufreq_table() - free the cpufreq table
* @dev: device for which we do this operation
* @table: table to free
*
* Free up the table allocated by opp_init_cpufreq_table
*/
void opp_free_cpufreq_table(struct device *dev,
struct cpufreq_frequency_table **table)
{
if (!table)
return;
kfree(*table);
*table = NULL;
}
#endif /* CONFIG_CPU_FREQ */ #endif /* CONFIG_CPU_FREQ */
...@@ -94,12 +94,20 @@ static inline int opp_disable(struct device *dev, unsigned long freq) ...@@ -94,12 +94,20 @@ static inline int opp_disable(struct device *dev, unsigned long freq)
#if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP) #if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP)
int opp_init_cpufreq_table(struct device *dev, int opp_init_cpufreq_table(struct device *dev,
struct cpufreq_frequency_table **table); struct cpufreq_frequency_table **table);
void opp_free_cpufreq_table(struct device *dev,
struct cpufreq_frequency_table **table);
#else #else
static inline int opp_init_cpufreq_table(struct device *dev, static inline int opp_init_cpufreq_table(struct device *dev,
struct cpufreq_frequency_table **table) struct cpufreq_frequency_table **table)
{ {
return -EINVAL; return -EINVAL;
} }
static inline
void opp_free_cpufreq_table(struct device *dev,
struct cpufreq_frequency_table **table)
{
}
#endif /* CONFIG_CPU_FREQ */ #endif /* CONFIG_CPU_FREQ */
#endif /* __LINUX_OPP_H__ */ #endif /* __LINUX_OPP_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment