diff options
author | Alex Bee <knaerzche@gmail.com> | 2024-04-16 18:12:36 +0200 |
---|---|---|
committer | Lee Jones <lee@kernel.org> | 2024-05-03 09:15:36 +0100 |
commit | 9f4e899c286b5127e2443d50e37ee2112efbfa2c (patch) | |
tree | 60a7a447526f11163312d8927dc79016f1702a6e /drivers/regulator | |
parent | 1bd97d64b5f0c01d03ecc9473ccfcf180dbbf54a (diff) | |
download | linux-9f4e899c286b5127e2443d50e37ee2112efbfa2c.tar.gz linux-9f4e899c286b5127e2443d50e37ee2112efbfa2c.tar.bz2 linux-9f4e899c286b5127e2443d50e37ee2112efbfa2c.zip |
regulator: rk808: Support apply_bit for rk808_set_suspend_voltage_range
rk808_set_suspend_voltage_range currently does not account the existence of
apply_bit/apply_reg.
This adds support for those in same way it is done in
regulator_set_voltage_sel_regmap and is required for the upcoming RK816
support
Signed-off-by: Alex Bee <knaerzche@gmail.com>
Acked-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20240416161237.2500037-5-knaerzche@gmail.com
Signed-off-by: Lee Jones <lee@kernel.org>
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/rk808-regulator.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/drivers/regulator/rk808-regulator.c b/drivers/regulator/rk808-regulator.c index d89ae7f16d7a..a6a563e402d0 100644 --- a/drivers/regulator/rk808-regulator.c +++ b/drivers/regulator/rk808-regulator.c @@ -534,15 +534,25 @@ static int rk808_set_suspend_voltage_range(struct regulator_dev *rdev, int uv) { unsigned int reg; int sel = regulator_map_voltage_linear_range(rdev, uv, uv); + int ret; if (sel < 0) return -EINVAL; reg = rdev->desc->vsel_reg + RK808_SLP_REG_OFFSET; - return regmap_update_bits(rdev->regmap, reg, - rdev->desc->vsel_mask, - sel); + ret = regmap_update_bits(rdev->regmap, reg, + rdev->desc->vsel_mask, + sel); + if (ret) + return ret; + + if (rdev->desc->apply_bit) + ret = regmap_update_bits(rdev->regmap, rdev->desc->apply_reg, + rdev->desc->apply_bit, + rdev->desc->apply_bit); + + return ret; } static int rk805_set_suspend_enable(struct regulator_dev *rdev) |