[PATCH] regulator: Support ramp-up delay for drivers with get_voltage()

From: Georgi Djakov
Date: Wed Mar 30 2016 - 10:23:20 EST


Currently a ramp-up delay is supported only for drivers which have an
implementation of both set_voltage_time_sel() and get_voltage_sel().
But some drivers use get_voltage() instead of get_voltage_sel().

Allow the regulator core to support ramp-up delays for drivers which
use get_voltage().

Signed-off-by: Georgi Djakov <georgi.djakov@xxxxxxxxxx>
---
drivers/regulator/core.c | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 74e8a7a3b3e8..39806b4d580a 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -2772,6 +2772,17 @@ static int _regulator_do_set_voltage(struct regulator_dev *rdev,
old_selector = rdev->desc->ops->get_voltage_sel(rdev);
if (old_selector < 0)
return old_selector;
+
+ } else if (_regulator_is_enabled(rdev) &&
+ rdev->desc->ops->set_voltage_time_sel &&
+ rdev->desc->ops->get_voltage) {
+ int uV = rdev->desc->ops->get_voltage(rdev);
+
+ if (uV > 0) {
+ old_selector = regulator_map_voltage(rdev, uV, uV);
+ if (old_selector < 0)
+ return old_selector;
+ }
}

if (rdev->desc->ops->set_voltage) {