diff options
-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) | |||
235 | 235 | ||
236 | ret = arizona_wait_for_boot(arizona); | 236 | ret = arizona_wait_for_boot(arizona); |
237 | if (ret != 0) { | 237 | if (ret != 0) { |
238 | regulator_disable(arizona->dcvdd); | 238 | goto err; |
239 | return ret; | ||
240 | } | 239 | } |
241 | 240 | ||
242 | ret = regcache_sync(arizona->regmap); | 241 | ret = regcache_sync(arizona->regmap); |
243 | if (ret != 0) { | 242 | if (ret != 0) { |
244 | dev_err(arizona->dev, "Failed to restore register cache\n"); | 243 | dev_err(arizona->dev, "Failed to restore register cache\n"); |
245 | regulator_disable(arizona->dcvdd); | 244 | goto err; |
246 | return ret; | ||
247 | } | 245 | } |
248 | 246 | ||
249 | return 0; | 247 | return 0; |
248 | |||
249 | err: | ||
250 | regcache_cache_only(arizona->regmap, true); | ||
251 | regulator_disable(arizona->dcvdd); | ||
252 | return ret; | ||
250 | } | 253 | } |
251 | 254 | ||
252 | static int arizona_runtime_suspend(struct device *dev) | 255 | static int arizona_runtime_suspend(struct device *dev) |