Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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
	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
==================
Typically an SoC contains multiple voltage domains which are variable. Each
+17 −0
Original line number Diff line number Diff line
@@ -625,4 +625,21 @@ int opp_init_cpufreq_table(struct device *dev,

	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 */
+8 −0
Original line number Diff line number Diff line
@@ -94,12 +94,20 @@ static inline int opp_disable(struct device *dev, unsigned long freq)
#if defined(CONFIG_CPU_FREQ) && defined(CONFIG_PM_OPP)
int opp_init_cpufreq_table(struct device *dev,
			    struct cpufreq_frequency_table **table);
void opp_free_cpufreq_table(struct device *dev,
				struct cpufreq_frequency_table **table);
#else
static inline int opp_init_cpufreq_table(struct device *dev,
			    struct cpufreq_frequency_table **table)
{
	return -EINVAL;
}

static inline
void opp_free_cpufreq_table(struct device *dev,
				struct cpufreq_frequency_table **table)
{
}
#endif		/* CONFIG_CPU_FREQ */

#endif		/* __LINUX_OPP_H__ */