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: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
Родитель
5aa44b132e
Коммит
f959dee9c7
|
@ -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)
|
||||||
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,
|
||||||
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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче