mirror of
https://github.com/torvalds/linux.git
synced 2024-12-03 09:31:26 +00:00
ASoC: wm8996: Put the microphone biases into bypass mode when idle
When we're not actively doing audio we don't need the microphone biases to be regulated, noise is not important when we are not looking at the audio signal. Save some power by putting the MICBIAS regulators into bypass mode when not doing audio. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
be3f3f2ce6
commit
501bf0354d
@ -1770,7 +1770,13 @@ static int wm8996_set_bias_level(struct snd_soc_codec *codec,
|
||||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_ON:
|
||||
break;
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
/* Put the MICBIASes into regulating mode */
|
||||
snd_soc_update_bits(codec, WM8996_MICBIAS_1,
|
||||
WM8996_MICB1_MODE, 0);
|
||||
snd_soc_update_bits(codec, WM8996_MICBIAS_2,
|
||||
WM8996_MICB2_MODE, 0);
|
||||
break;
|
||||
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
@ -1793,6 +1799,12 @@ static int wm8996_set_bias_level(struct snd_soc_codec *codec,
|
||||
regcache_cache_only(codec->control_data, false);
|
||||
regcache_sync(codec->control_data);
|
||||
}
|
||||
|
||||
/* Bypass the MICBIASes for lowest power */
|
||||
snd_soc_update_bits(codec, WM8996_MICBIAS_1,
|
||||
WM8996_MICB1_MODE, WM8996_MICB1_MODE);
|
||||
snd_soc_update_bits(codec, WM8996_MICBIAS_2,
|
||||
WM8996_MICB2_MODE, WM8996_MICB2_MODE);
|
||||
break;
|
||||
|
||||
case SND_SOC_BIAS_OFF:
|
||||
|
Loading…
Reference in New Issue
Block a user