aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLydia Wang <lydiawang@viatech.com.cn>2011-06-30 22:55:07 -0400
committerTakashi Iwai <tiwai@suse.de>2011-07-01 02:33:06 -0400
commite5e14681404ec27a422d635284bf564dabde3f81 (patch)
tree83f3be512a7745805051ae70cecf36cd6f9bb897
parent350434ee53f39adb5e73320be4c98010b87d3dbf (diff)
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: Lydia Wang <lydiawang@viatech.com.cn> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_via.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index 5ef14dd7a568..bbbc4f4cbf1a 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -451,6 +451,9 @@ static void activate_output_path(struct hda_codec *codec, struct nid_path *path,
451 if (enable && path->multi[i]) 451 if (enable && path->multi[i])
452 snd_hda_codec_write(codec, dst, 0, 452 snd_hda_codec_write(codec, dst, 0,
453 AC_VERB_SET_CONNECT_SEL, idx); 453 AC_VERB_SET_CONNECT_SEL, idx);
454 if (get_wcaps_type(get_wcaps(codec, src)) == AC_WID_AUD_OUT &&
455 get_wcaps_type(get_wcaps(codec, dst)) == AC_WID_AUD_MIX)
456 continue;
454 if (have_mute(codec, dst, HDA_INPUT)) { 457 if (have_mute(codec, dst, HDA_INPUT)) {
455 int val = enable ? AMP_IN_UNMUTE(idx) : 458 int val = enable ? AMP_IN_UNMUTE(idx) :
456 AMP_IN_MUTE(idx); 459 AMP_IN_MUTE(idx);