*/
void dev_pm_opp_of_remove_table(struct device *dev)
{
- _dev_pm_opp_find_and_remove_table(dev, false);
+ _dev_pm_opp_find_and_remove_table(dev);
}
EXPORT_SYMBOL_GPL(dev_pm_opp_of_remove_table);
ret = -ENOMEM;
else if (!opp_table->parsed_static_opps)
goto initialize_static_opps;
+ else
+ kref_get(&opp_table->list_kref);
goto put_opp_table;
}
return -ENOMEM;
initialize_static_opps:
+ kref_init(&opp_table->list_kref);
+
/* We have opp-table node now, iterate over it and add OPPs */
for_each_available_child_of_node(opp_np, np) {
count++;
if (ret) {
dev_err(dev, "%s: Failed to add OPP, %d\n", __func__,
ret);
- _dev_pm_opp_remove_table(opp_table, dev, false);
+ _dev_pm_opp_remove_table(opp_table, dev);
of_node_put(np);
goto put_opp_table;
}
/* There should be one of more OPP defined */
if (WARN_ON(!count)) {
ret = -ENOENT;
+ _put_opp_list_kref(opp_table);
goto put_opp_table;
}
dev_err(dev, "Not all nodes have performance state set (%d: %d)\n",
count, pstate_count);
ret = -ENOENT;
- _dev_pm_opp_remove_table(opp_table, dev, false);
+ _dev_pm_opp_remove_table(opp_table, dev);
goto put_opp_table;
}
if (!opp_table)
return -ENOMEM;
+ kref_init(&opp_table->list_kref);
+
val = prop->value;
while (nr) {
unsigned long freq = be32_to_cpup(val++) * 1000;
if (ret) {
dev_err(dev, "%s: Failed to add OPP %ld (%d)\n",
__func__, freq, ret);
- _dev_pm_opp_remove_table(opp_table, dev, false);
+ _dev_pm_opp_remove_table(opp_table, dev);
break;
}
nr -= 2;
*/
void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask)
{
- _dev_pm_opp_cpumask_remove_table(cpumask, true, -1);
+ _dev_pm_opp_cpumask_remove_table(cpumask, -1);
}
EXPORT_SYMBOL_GPL(dev_pm_opp_of_cpumask_remove_table);
__func__, cpu, ret);
/* Free all other OPPs */
- _dev_pm_opp_cpumask_remove_table(cpumask, true, cpu);
+ _dev_pm_opp_cpumask_remove_table(cpumask, cpu);
break;
}
}