diff options
author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-01-14 10:50:38 +0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2013-04-08 17:20:56 +0400 |
commit | 4816bd1c6d5589135523b4263be2e1b8b8c97599 (patch) | |
tree | 14d3b8df4a763b69df89a8b7362215546d53b94b /drivers/mfd/arizona-core.c | |
parent | 1816cb3409f1f6909e25e52effc57857803c678c (diff) | |
download | linux-4816bd1c6d5589135523b4263be2e1b8b8c97599.tar.xz |
mfd: arizona: Clean up on failed runtime resume
Make sure that we don't leave the device enabled needlessly.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'drivers/mfd/arizona-core.c')
-rw-r--r-- | drivers/mfd/arizona-core.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c index b562c7bf8a46..0962c558dc02 100644 --- a/drivers/mfd/arizona-core.c +++ b/drivers/mfd/arizona-core.c @@ -235,18 +235,21 @@ static int arizona_runtime_resume(struct device *dev) ret = arizona_wait_for_boot(arizona); if (ret != 0) { - regulator_disable(arizona->dcvdd); - return ret; + goto err; } ret = regcache_sync(arizona->regmap); if (ret != 0) { dev_err(arizona->dev, "Failed to restore register cache\n"); - regulator_disable(arizona->dcvdd); - return ret; + goto err; } return 0; + +err: + regcache_cache_only(arizona->regmap, true); + regulator_disable(arizona->dcvdd); + return ret; } static int arizona_runtime_suspend(struct device *dev) |