aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/max77802.c
diff options
context:
space:
mode:
authorKrzysztof Kozlowski <k.kozlowski@samsung.com>2014-11-04 03:49:43 -0500
committerMark Brown <broonie@kernel.org>2014-11-04 15:47:50 -0500
commita26ed45c912d46cedac5f15c2872aa7e462fcdf1 (patch)
tree8414c9b37c50b7798a5ada27b6e0a1507f46bdb9 /drivers/regulator/max77802.c
parent4d7078e69417852283937872e210adcc633be66f (diff)
regulator: max77802: Don't ignore return value of current opmode
The return value of regmap_read() of current opmode for regulator was silently ignored and whatever happened to be in 'val' variable was used as new opmode. This could lead to using bogus opmode. Don't ignore what regmap_read() returns. If it fails just fall back to normal opmode. Signed-off-by: Krzysztof Kozlowski <k.kozlowski@samsung.com> Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/regulator/max77802.c')
-rw-r--r--drivers/regulator/max77802.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/regulator/max77802.c b/drivers/regulator/max77802.c
index f8f06ece2f3c..d076df1d2166 100644
--- a/drivers/regulator/max77802.c
+++ b/drivers/regulator/max77802.c
@@ -606,7 +606,13 @@ static int max77802_pmic_probe(struct platform_device *pdev)
606 config.of_node = pdata->regulators[i].of_node; 606 config.of_node = pdata->regulators[i].of_node;
607 607
608 ret = regmap_read(iodev->regmap, regulators[i].enable_reg, &val); 608 ret = regmap_read(iodev->regmap, regulators[i].enable_reg, &val);
609 val = val >> shift & MAX77802_OPMODE_MASK; 609 if (ret < 0) {
610 dev_warn(&pdev->dev,
611 "cannot read current mode for %d\n", i);
612 val = MAX77802_OPMODE_NORMAL;
613 } else {
614 val = val >> shift & MAX77802_OPMODE_MASK;
615 }
610 616
611 /* 617 /*
612 * If the regulator is disabled and the system warm rebooted, 618 * If the regulator is disabled and the system warm rebooted,