Commit e5e14681 authored by Lydia Wang's avatar Lydia Wang Committed by Takashi Iwai

ALSA: hda - Fix the silent front with independent-HP for VIA codecs

Unmute DAC on front speaker path when Independent HP is enabled.

When to enable Independent HP, the front speaker won't output any sound
for VT1708, VT1708B, VT1708S and VT1702.
I find the via_independent_hp_put() routine will mute DAC 0 path in Mixer 0.
For these codecs, when using Independent HP, there could have two
independent streams, one is from DAC0-->Mixer0-->Front Pin, the other is
from DAC3-->GainSW3-->Side Pin.
So I added a check for DAC-->Mixer path in activate_output_path().

If current path is DAC-->Mixer, no need to mute DAC index in Mixer.
In fact, to change connection of Headphone pin or Mux connected with HP
is enough.
Signed-off-by: default avatarLydia Wang <lydiawang@viatech.com.cn>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 350434ee
...@@ -451,6 +451,9 @@ static void activate_output_path(struct hda_codec *codec, struct nid_path *path, ...@@ -451,6 +451,9 @@ static void activate_output_path(struct hda_codec *codec, struct nid_path *path,
if (enable && path->multi[i]) if (enable && path->multi[i])
snd_hda_codec_write(codec, dst, 0, snd_hda_codec_write(codec, dst, 0,
AC_VERB_SET_CONNECT_SEL, idx); AC_VERB_SET_CONNECT_SEL, idx);
if (get_wcaps_type(get_wcaps(codec, src)) == AC_WID_AUD_OUT &&
get_wcaps_type(get_wcaps(codec, dst)) == AC_WID_AUD_MIX)
continue;
if (have_mute(codec, dst, HDA_INPUT)) { if (have_mute(codec, dst, HDA_INPUT)) {
int val = enable ? AMP_IN_UNMUTE(idx) : int val = enable ? AMP_IN_UNMUTE(idx) :
AMP_IN_MUTE(idx); AMP_IN_MUTE(idx);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment