diff options
author | Mark Brown <broonie@sirena.org.uk> | 2013-04-28 02:13:42 +0100 |
---|---|---|
committer | Mark Brown <broonie@sirena.org.uk> | 2013-04-28 02:13:42 +0100 |
commit | c4578da56a022867acea2d6c6caf0301de0ff7ba (patch) | |
tree | 07702d06e89a759ba840859aa88a11efac382424 /drivers/regulator | |
parent | 388128ffd69e09306b8f17c626fd565120c416de (diff) | |
parent | 3ecf198eab145d45624010e03db2e9dfd284cced (diff) | |
download | linux-c4578da56a022867acea2d6c6caf0301de0ff7ba.tar.bz2 |
Merge remote-tracking branch 'regulator/topic/max77686' into v3.9-rc8
Diffstat (limited to 'drivers/regulator')
-rw-r--r-- | drivers/regulator/max77686.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/drivers/regulator/max77686.c b/drivers/regulator/max77686.c index e4586ee8858d..20935b1a6ed4 100644 --- a/drivers/regulator/max77686.c +++ b/drivers/regulator/max77686.c @@ -75,17 +75,20 @@ static int max77686_buck_set_suspend_disable(struct regulator_dev *rdev) { unsigned int val; struct max77686_data *max77686 = rdev_get_drvdata(rdev); - int id = rdev_get_id(rdev); + int ret, id = rdev_get_id(rdev); if (id == MAX77686_BUCK1) val = 0x1; else val = 0x1 << MAX77686_OPMODE_BUCK234_SHIFT; + ret = regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, + rdev->desc->enable_mask, val); + if (ret) + return ret; + max77686->opmode[id] = val; - return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, - rdev->desc->enable_mask, - val); + return 0; } /* Some LDOs supports [LPM/Normal]ON mode during suspend state */ @@ -94,7 +97,7 @@ static int max77686_set_suspend_mode(struct regulator_dev *rdev, { struct max77686_data *max77686 = rdev_get_drvdata(rdev); unsigned int val; - int id = rdev_get_id(rdev); + int ret, id = rdev_get_id(rdev); /* BUCK[5-9] doesn't support this feature */ if (id >= MAX77686_BUCK5) @@ -113,10 +116,13 @@ static int max77686_set_suspend_mode(struct regulator_dev *rdev, return -EINVAL; } + ret = regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, + rdev->desc->enable_mask, val); + if (ret) + return ret; + max77686->opmode[id] = val; - return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, - rdev->desc->enable_mask, - val); + return 0; } /* Some LDOs supports LPM-ON/OFF/Normal-ON mode during suspend state */ @@ -125,6 +131,7 @@ static int max77686_ldo_set_suspend_mode(struct regulator_dev *rdev, { unsigned int val; struct max77686_data *max77686 = rdev_get_drvdata(rdev); + int ret; switch (mode) { case REGULATOR_MODE_STANDBY: /* switch off */ @@ -142,10 +149,13 @@ static int max77686_ldo_set_suspend_mode(struct regulator_dev *rdev, return -EINVAL; } + ret = regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, + rdev->desc->enable_mask, val); + if (ret) + return ret; + max77686->opmode[rdev_get_id(rdev)] = val; - return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg, - rdev->desc->enable_mask, - val); + return 0; } static int max77686_enable(struct regulator_dev *rdev) |