ASoC: Manage VMID mode for WM8990
A small additional power saving can be achieved for the WM8990 by maintaining VMID using a 2*250k divider when in standby mode. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
be1b87c70a
commit
2adb9833d1
@ -1222,8 +1222,14 @@ static int wm8990_set_bias_level(struct snd_soc_codec *codec,
|
|||||||
switch (level) {
|
switch (level) {
|
||||||
case SND_SOC_BIAS_ON:
|
case SND_SOC_BIAS_ON:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_SOC_BIAS_PREPARE:
|
case SND_SOC_BIAS_PREPARE:
|
||||||
|
/* VMID=2*50k */
|
||||||
|
val = wm8990_read_reg_cache(codec, WM8990_POWER_MANAGEMENT_1) &
|
||||||
|
~WM8990_VMID_MODE_MASK;
|
||||||
|
wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, val | 0x2);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_SOC_BIAS_STANDBY:
|
case SND_SOC_BIAS_STANDBY:
|
||||||
if (codec->bias_level == SND_SOC_BIAS_OFF) {
|
if (codec->bias_level == SND_SOC_BIAS_OFF) {
|
||||||
/* Enable all output discharge bits */
|
/* Enable all output discharge bits */
|
||||||
@ -1278,6 +1284,11 @@ static int wm8990_set_bias_level(struct snd_soc_codec *codec,
|
|||||||
wm8990_write(codec, WM8990_EXT_CTL1, 0xa003);
|
wm8990_write(codec, WM8990_EXT_CTL1, 0xa003);
|
||||||
wm8990_write(codec, WM8990_EXT_ACCESS_ENA, 0);
|
wm8990_write(codec, WM8990_EXT_ACCESS_ENA, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* VMID=2*250k */
|
||||||
|
val = wm8990_read_reg_cache(codec, WM8990_POWER_MANAGEMENT_1) &
|
||||||
|
~WM8990_VMID_MODE_MASK;
|
||||||
|
wm8990_write(codec, WM8990_POWER_MANAGEMENT_1, val | 0x4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SND_SOC_BIAS_OFF:
|
case SND_SOC_BIAS_OFF:
|
||||||
|
Loading…
Reference in New Issue
Block a user