提交 f959dee9 编写于 作者: M Mark Brown

ASoC: wm_hubs: Push check for idle_bias_off out into drivers

For later wm_hubs devices we have much less need to keep the biases up
even when using single ended line outputs so flag idle_bias_off for
everything except the WM8993 and WM8994.
Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
上级 5aa44b13
...@@ -1622,6 +1622,12 @@ static int wm8993_probe(struct snd_soc_codec *codec) ...@@ -1622,6 +1622,12 @@ static int wm8993_probe(struct snd_soc_codec *codec)
wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff, wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff,
wm8993->pdata.lineout2_diff); wm8993->pdata.lineout2_diff);
/* If the line outputs are differential then we aren't presenting
* VMID as an output and can disable it.
*/
if (wm8993->pdata.lineout1_diff && wm8993->pdata.lineout2_diff)
codec->dapm.idle_bias_off = 1;
return 0; return 0;
} }
......
...@@ -3396,10 +3396,18 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) ...@@ -3396,10 +3396,18 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
pm_runtime_enable(codec->dev); pm_runtime_enable(codec->dev);
pm_runtime_resume(codec->dev); pm_runtime_resume(codec->dev);
/* By default use idle_bias_off, will override for WM8994 */
codec->dapm.idle_bias_off = 1;
/* Set revision-specific configuration */ /* Set revision-specific configuration */
wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION); wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION);
switch (control->type) { switch (control->type) {
case WM8994: case WM8994:
/* Single ended line outputs should have VMID on. */
if (!wm8994->pdata->lineout1_diff ||
!wm8994->pdata->lineout2_diff)
codec->dapm.idle_bias_off = 0;
switch (wm8994->revision) { switch (wm8994->revision) {
case 2: case 2:
case 3: case 3:
......
...@@ -952,12 +952,6 @@ int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *codec, ...@@ -952,12 +952,6 @@ int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *codec,
WM8993_LINEOUT2_MODE, WM8993_LINEOUT2_MODE,
WM8993_LINEOUT2_MODE); WM8993_LINEOUT2_MODE);
/* If the line outputs are differential then we aren't presenting
* VMID as an output and can disable it.
*/
if (lineout1_diff && lineout2_diff)
codec->dapm.idle_bias_off = 1;
if (lineout1fb) if (lineout1fb)
snd_soc_update_bits(codec, WM8993_ADDITIONAL_CONTROL, snd_soc_update_bits(codec, WM8993_ADDITIONAL_CONTROL,
WM8993_LINEOUT1_FB, WM8993_LINEOUT1_FB); WM8993_LINEOUT1_FB, WM8993_LINEOUT1_FB);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册