From d5b53d6c46665c7f2232f2d572105c948cffbce6 Mon Sep 17 00:00:00 2001 From: Kiran Gunda Date: Thu, 14 May 2020 19:35:27 +0530 Subject: [PATCH] regulator: qcom_pm8008: Fix regulator_get_voltage API Currently the LDO voltage is read from "VSET_VALID_LB" and "VSET_VALID_UB" registers which provides the actual voltage when the LDO is enabled. However, these registers return a value "0" when the LDO is disabled. Due to this the incorrect voltage is set on the parent buck which leads to voltage ripples. Fix it by reading VSET_LB and VSET_UB registers which return a valid voltage even though the LDO is disabled. Change-Id: Id47882802a1d39f7843a40853edfc4f6d17376f5 Signed-off-by: Kiran Gunda --- drivers/regulator/qcom_pm8008-regulator.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/regulator/qcom_pm8008-regulator.c b/drivers/regulator/qcom_pm8008-regulator.c index 3127508154de..81aaa56e494e 100644 --- a/drivers/regulator/qcom_pm8008-regulator.c +++ b/drivers/regulator/qcom_pm8008-regulator.c @@ -53,8 +53,6 @@ #define LDO_VSET_LB_REG(base) (base + 0x40) -#define LDO_VSET_VALID_LB_REG(base) (base + 0x42) - #define LDO_MODE_CTL1_REG(base) (base + 0x45) #define MODE_PRIMARY_MASK GENMASK(2, 0) #define LDO_MODE_NPM 7 @@ -156,7 +154,7 @@ static int pm8008_regulator_get_voltage(struct regulator_dev *rdev) int rc; rc = pm8008_read(pm8008_reg->regmap, - LDO_VSET_VALID_LB_REG(pm8008_reg->base), + LDO_VSET_LB_REG(pm8008_reg->base), vset_raw, 2); if (rc < 0) { pm8008_err(pm8008_reg,