summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-02-20 21:32:32 +0000
committerSamuel Ortiz <sameo@linux.intel.com>2012-02-21 11:51:28 +0100
commite7c248a049c2aac21bded0b0722caee6f0e57256 (patch)
tree76fb03f783cdd95f012e54f4515e4d6328a50469
parent0a35ee4783975b7238e20044445962fb4fe82cf5 (diff)
downloadlinux-e7c248a049c2aac21bded0b0722caee6f0e57256.tar.gz
linux-e7c248a049c2aac21bded0b0722caee6f0e57256.tar.bz2
linux-e7c248a049c2aac21bded0b0722caee6f0e57256.zip
mfd: Test for jack detection when deciding if wm8994 should suspend
The jack detection on WM1811 is often required during system suspend, add it as another check when deciding if we should suspend. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Cc: stable@vger.kernel.org Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
-rw-r--r--drivers/mfd/wm8994-core.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/mfd/wm8994-core.c b/drivers/mfd/wm8994-core.c
index f117e7fb9321..a04b3c108c8c 100644
--- a/drivers/mfd/wm8994-core.c
+++ b/drivers/mfd/wm8994-core.c
@@ -256,6 +256,20 @@ static int wm8994_suspend(struct device *dev)
break;
}
+ switch (wm8994->type) {
+ case WM1811:
+ ret = wm8994_reg_read(wm8994, WM8994_ANTIPOP_2);
+ if (ret < 0) {
+ dev_err(dev, "Failed to read jackdet: %d\n", ret);
+ } else if (ret & WM1811_JACKDET_MODE_MASK) {
+ dev_dbg(dev, "CODEC still active, ignoring suspend\n");
+ return 0;
+ }
+ break;
+ default:
+ break;
+ }
+
/* Disable LDO pulldowns while the device is suspended if we
* don't know that something will be driving them. */
if (!wm8994->ldo_ena_always_driven)