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: Nishanth Menon <nm@ti.com> Acked-by: Kevin Hilman <khilman@ti.com> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
This commit is contained in:
committed by
Rafael J. Wysocki
parent
3110df800c
commit
99f381d354
@@ -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,
|
|||||||
|
|
||||||
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)
|
|||||||
#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__ */
|
||||||
|
Reference in New Issue
Block a user