|
@@ -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;
|