summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-01-09 09:36:42 +0100
committerMark Brown <broonie@opensource.wolfsonmicro.com>2012-01-09 09:49:40 +0100
commit3befc925cb658227fb207f20e6719987f7ee3190 (patch)
tree138ffa4d3bfb273a76340e4a5398b3d1e405617e
parentASoC: Fix idma build after update for channel count check (diff)
downloadlinux-3befc925cb658227fb207f20e6719987f7ee3190.tar.xz
linux-3befc925cb658227fb207f20e6719987f7ee3190.zip
mfd: Put WM8994 into cache only mode when suspending
This is required by the ASoC driver for very low power modes where the device is fully idle but we want to update controls. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--drivers/mfd/wm8994-core.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c
index 9b8d1ad28ee1..d3d9d53ca9e3 100644
--- a/drivers/mfd/wm8994-core.c
+++ b/drivers/mfd/wm8994-core.c
@@ -268,6 +268,7 @@ static int wm8994_suspend(struct device *dev)
wm8994_reg_write(wm8994, WM8994_SOFTWARE_RESET,
wm8994_reg_read(wm8994, WM8994_SOFTWARE_RESET));
+ regcache_cache_only(wm8994->regmap, true);
regcache_mark_dirty(wm8994->regmap);
wm8994->suspended = true;
@@ -298,6 +299,7 @@ static int wm8994_resume(struct device *dev)
return ret;
}
+ regcache_cache_only(wm8994->regmap, false);
ret = regcache_sync(wm8994->regmap);
if (ret != 0) {
dev_err(dev, "Failed to restore register map: %d\n", ret);