diff options
Diffstat (limited to 'sound/soc')
-rw-r--r-- | sound/soc/codecs/wm8993.c | 6 | ||||
-rw-r--r-- | sound/soc/codecs/wm8994.c | 8 | ||||
-rw-r--r-- | sound/soc/codecs/wm_hubs.c | 6 |
3 files changed, 14 insertions, 6 deletions
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c index 474dc72b4d8d..db51007a6a43 100644 --- a/sound/soc/codecs/wm8993.c +++ b/sound/soc/codecs/wm8993.c | |||
@@ -1622,6 +1622,12 @@ static int wm8993_probe(struct snd_soc_codec *codec) | |||
1622 | wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff, | 1622 | wm_hubs_add_analogue_routes(codec, wm8993->pdata.lineout1_diff, |
1623 | wm8993->pdata.lineout2_diff); | 1623 | wm8993->pdata.lineout2_diff); |
1624 | 1624 | ||
1625 | /* If the line outputs are differential then we aren't presenting | ||
1626 | * VMID as an output and can disable it. | ||
1627 | */ | ||
1628 | if (wm8993->pdata.lineout1_diff && wm8993->pdata.lineout2_diff) | ||
1629 | codec->dapm.idle_bias_off = 1; | ||
1630 | |||
1625 | return 0; | 1631 | return 0; |
1626 | 1632 | ||
1627 | } | 1633 | } |
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 11ca19b72d7d..c26291844e5d 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c | |||
@@ -3396,10 +3396,18 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec) | |||
3396 | pm_runtime_enable(codec->dev); | 3396 | pm_runtime_enable(codec->dev); |
3397 | pm_runtime_resume(codec->dev); | 3397 | pm_runtime_resume(codec->dev); |
3398 | 3398 | ||
3399 | /* By default use idle_bias_off, will override for WM8994 */ | ||
3400 | codec->dapm.idle_bias_off = 1; | ||
3401 | |||
3399 | /* Set revision-specific configuration */ | 3402 | /* Set revision-specific configuration */ |
3400 | wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION); | 3403 | wm8994->revision = snd_soc_read(codec, WM8994_CHIP_REVISION); |
3401 | switch (control->type) { | 3404 | switch (control->type) { |
3402 | case WM8994: | 3405 | case WM8994: |
3406 | /* Single ended line outputs should have VMID on. */ | ||
3407 | if (!wm8994->pdata->lineout1_diff || | ||
3408 | !wm8994->pdata->lineout2_diff) | ||
3409 | codec->dapm.idle_bias_off = 0; | ||
3410 | |||
3403 | switch (wm8994->revision) { | 3411 | switch (wm8994->revision) { |
3404 | case 2: | 3412 | case 2: |
3405 | case 3: | 3413 | case 3: |
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c index 2a61094075f8..ec7d49033d4c 100644 --- a/sound/soc/codecs/wm_hubs.c +++ b/sound/soc/codecs/wm_hubs.c | |||
@@ -952,12 +952,6 @@ int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *codec, | |||
952 | WM8993_LINEOUT2_MODE, | 952 | WM8993_LINEOUT2_MODE, |
953 | WM8993_LINEOUT2_MODE); | 953 | WM8993_LINEOUT2_MODE); |
954 | 954 | ||
955 | /* If the line outputs are differential then we aren't presenting | ||
956 | * VMID as an output and can disable it. | ||
957 | */ | ||
958 | if (lineout1_diff && lineout2_diff) | ||
959 | codec->dapm.idle_bias_off = 1; | ||
960 | |||
961 | if (lineout1fb) | 955 | if (lineout1fb) |
962 | snd_soc_update_bits(codec, WM8993_ADDITIONAL_CONTROL, | 956 | snd_soc_update_bits(codec, WM8993_ADDITIONAL_CONTROL, |
963 | WM8993_LINEOUT1_FB, WM8993_LINEOUT1_FB); | 957 | WM8993_LINEOUT1_FB, WM8993_LINEOUT1_FB); |