Commit fd7ee8de authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'regulator-fix-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator

Pull regulator fixes from Mark Brown:
 "Two fixes here, one driver fix for incorrect error codes and a fix in
  the core to use ktime_get_boottime() in order to fix accounting of the
  time regulators have been powered down over suspend. ktime_get()
  pauses over suspend which is not what we want"

* tag 'regulator-fix-v6.3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
  regulator: core: Use ktime_get_boottime() to determine how long a regulator was off
  regulator: max597x: Fix error return code in max597x_get_status
parents ee3f96b1 80d2c29e
...@@ -1584,7 +1584,7 @@ static int set_machine_constraints(struct regulator_dev *rdev) ...@@ -1584,7 +1584,7 @@ static int set_machine_constraints(struct regulator_dev *rdev)
} }
if (rdev->desc->off_on_delay) if (rdev->desc->off_on_delay)
rdev->last_off = ktime_get(); rdev->last_off = ktime_get_boottime();
/* If the constraints say the regulator should be on at this point /* If the constraints say the regulator should be on at this point
* and we have control then make sure it is enabled. * and we have control then make sure it is enabled.
...@@ -2673,7 +2673,7 @@ static int _regulator_do_enable(struct regulator_dev *rdev) ...@@ -2673,7 +2673,7 @@ static int _regulator_do_enable(struct regulator_dev *rdev)
* this regulator was disabled. * this regulator was disabled.
*/ */
ktime_t end = ktime_add_us(rdev->last_off, rdev->desc->off_on_delay); ktime_t end = ktime_add_us(rdev->last_off, rdev->desc->off_on_delay);
s64 remaining = ktime_us_delta(end, ktime_get()); s64 remaining = ktime_us_delta(end, ktime_get_boottime());
if (remaining > 0) if (remaining > 0)
_regulator_delay_helper(remaining); _regulator_delay_helper(remaining);
...@@ -2912,7 +2912,7 @@ static int _regulator_do_disable(struct regulator_dev *rdev) ...@@ -2912,7 +2912,7 @@ static int _regulator_do_disable(struct regulator_dev *rdev)
} }
if (rdev->desc->off_on_delay) if (rdev->desc->off_on_delay)
rdev->last_off = ktime_get(); rdev->last_off = ktime_get_boottime();
trace_regulator_disable_complete(rdev_get_name(rdev)); trace_regulator_disable_complete(rdev_get_name(rdev));
......
...@@ -193,7 +193,7 @@ static int max597x_get_status(struct regulator_dev *rdev) ...@@ -193,7 +193,7 @@ static int max597x_get_status(struct regulator_dev *rdev)
ret = regmap_read(rdev->regmap, MAX5970_REG_STATUS3, &val); ret = regmap_read(rdev->regmap, MAX5970_REG_STATUS3, &val);
if (ret) if (ret)
return REGULATOR_FAILED_RETRY; return ret;
if (val & MAX5970_STATUS3_ALERT) if (val & MAX5970_STATUS3_ALERT)
return REGULATOR_STATUS_ERROR; return REGULATOR_STATUS_ERROR;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment