mfd: Add more checks for WM8994 being active during suspend
Enhancements to the WM8994 audio driver and new features on more modern devices in the series mean that we can no longer rely on VMID being active as an indication that the device is active. Add further checks for digital paths and microphone detection. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
cdcc966d48
commit
5f40c6b650
1 changed files with 34 additions and 0 deletions
|
@ -281,6 +281,40 @@ static int wm8994_suspend(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
ret = wm8994_reg_read(wm8994, WM8994_POWER_MANAGEMENT_4);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "Failed to read power status: %d\n", ret);
|
||||
} else if (ret & (WM8994_AIF2ADCL_ENA | WM8994_AIF2ADCR_ENA |
|
||||
WM8994_AIF1ADC2L_ENA | WM8994_AIF1ADC2R_ENA |
|
||||
WM8994_AIF1ADC1L_ENA | WM8994_AIF1ADC1R_ENA)) {
|
||||
dev_dbg(dev, "CODEC still active, ignoring suspend\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = wm8994_reg_read(wm8994, WM8994_POWER_MANAGEMENT_5);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "Failed to read power status: %d\n", ret);
|
||||
} else if (ret & (WM8994_AIF2DACL_ENA | WM8994_AIF2DACR_ENA |
|
||||
WM8994_AIF1DAC2L_ENA | WM8994_AIF1DAC2R_ENA |
|
||||
WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA)) {
|
||||
dev_dbg(dev, "CODEC still active, ignoring suspend\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (wm8994->type) {
|
||||
case WM8958:
|
||||
ret = wm8994_reg_read(wm8994, WM8958_MIC_DETECT_1);
|
||||
if (ret < 0) {
|
||||
dev_err(dev, "Failed to read power status: %d\n", ret);
|
||||
} else if (ret & WM8958_MICD_ENA) {
|
||||
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)
|
||||
|
|
Loading…
Reference in a new issue