@@ -35,9 +35,6 @@ struct pwm_regulator_data {
struct regulator_ops ops;
int state;
-
- /* Continuous voltage */
- int volt_uV;
};
struct pwm_voltages {
@@ -135,8 +132,13 @@ static int pwm_regulator_is_enabled(struct regulator_dev *dev)
static int pwm_regulator_get_voltage(struct regulator_dev *rdev)
{
struct pwm_regulator_data *drvdata = rdev_get_drvdata(rdev);
+ int min_uV = rdev->constraints->min_uV;
+ int diff = rdev->constraints->max_uV - min_uV;
+ struct pwm_state pstate;
- return drvdata->volt_uV;
+ pwm_get_state(drvdata->pwm, &pstate);
+
+ return min_uV + pwm_get_relative_duty_cycle(&pstate, diff);
}
static int pwm_regulator_set_voltage(struct regulator_dev *rdev,
@@ -162,8 +164,6 @@ static int pwm_regulator_set_voltage(struct regulator_dev *rdev,
return ret;
}
- drvdata->volt_uV = min_uV;
-
/* Delay required by PWM regulator to settle to the new voltage */
usleep_range(ramp_delay, ramp_delay + 1000);