From: Jon Hunter <[email protected]>

When checking the bypass state for a regulator, we check to see if any
bits in the bypass mask are set. For most cases this is fine because
there is typically only a single bit used to determine if the regulator
is in bypass. However, for some regulators, such as LDO6 on AS3722, the
bypass state is indicated by a value rather than a single bit.

Therefore, when checking the bypass state, check that the bypass field
matches the ON value.

Signed-off-by: Jon Hunter <[email protected]>
Signed-off-by: Thierry Reding <[email protected]>
---
 drivers/regulator/helpers.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/regulator/helpers.c b/drivers/regulator/helpers.c
index b1e32e7482e9..bcf38fd5106a 100644
--- a/drivers/regulator/helpers.c
+++ b/drivers/regulator/helpers.c
@@ -460,7 +460,7 @@ int regulator_get_bypass_regmap(struct regulator_dev *rdev, 
bool *enable)
        if (ret != 0)
                return ret;
 
-       *enable = val & rdev->desc->bypass_mask;
+       *enable = (val & rdev->desc->bypass_mask) == rdev->desc->bypass_val_on;
 
        return 0;
 }
-- 
2.8.0

Reply via email to