From: Kamil Konieczny <k.koniec...@partner.samsung.com>

Add enable regulators to dev_pm_opp_set_regulators() and disable
regulators to dev_pm_opp_put_regulators(). This prepares for
converting exynos-bus devfreq driver to use dev_pm_opp_set_rate().

Signed-off-by: Kamil Konieczny <k.koniec...@partner.samsung.com>
---
 drivers/opp/core.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/opp/core.c b/drivers/opp/core.c
index 0e7703fe733f..947cac452854 100644
--- a/drivers/opp/core.c
+++ b/drivers/opp/core.c
@@ -1580,8 +1580,19 @@ struct opp_table *dev_pm_opp_set_regulators(struct 
device *dev,
        if (ret)
                goto free_regulators;
 
+       for (i = 0; i < opp_table->regulator_count; i++) {
+               ret = regulator_enable(opp_table->regulators[i]);
+               if (ret < 0)
+                       goto disable;
+       }
+
        return opp_table;
 
+disable:
+       while (i != 0)
+               regulator_disable(opp_table->regulators[--i]);
+
+       i = opp_table->regulator_count;
 free_regulators:
        while (i != 0)
                regulator_put(opp_table->regulators[--i]);
@@ -1609,6 +1620,8 @@ void dev_pm_opp_put_regulators(struct opp_table 
*opp_table)
 
        /* Make sure there are no concurrent readers while updating opp_table */
        WARN_ON(!list_empty(&opp_table->opp_list));
+       for (i = opp_table->regulator_count - 1; i >= 0; i--)
+               regulator_disable(opp_table->regulators[i]);
 
        for (i = opp_table->regulator_count - 1; i >= 0; i--)
                regulator_put(opp_table->regulators[i]);
-- 
2.22.0

Reply via email to