aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorLydia Wang <lydiawang@viatech.com.cn>2011-03-22 04:22:37 -0400
committerTakashi Iwai <tiwai@suse.de>2011-03-22 07:42:56 -0400
commitce0e5a9e81fbb153ee15ca60246c6722f07fc546 (patch)
tree566192ff4a0280010e23c767f3d753db43c357aa /sound
parentbff5fbf50bd498c217994bd2d41a53ac3141185a (diff)
ALSA: hda - VIA: Fix independent headphone no sound issue
Modify via_independent_hp_put() function to support VT1718S and VT1812 codecs, and fix independent headphone no sound issue. Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn> Cc: <stable@kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_via.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index 5bc9bd983e86..2f605e593957 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -1191,8 +1191,16 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
1191 /* Get Independent Mode index of headphone pin widget */ 1191 /* Get Independent Mode index of headphone pin widget */
1192 spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel 1192 spec->hp_independent_mode = spec->hp_independent_mode_index == pinsel
1193 ? 1 : 0; 1193 ? 1 : 0;
1194 snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_CONNECT_SEL, pinsel); 1194 if (spec->codec_type == VT1718S)
1195 snd_hda_codec_write(codec, nid, 0,
1196 AC_VERB_SET_CONNECT_SEL, pinsel ? 2 : 0);
1197 else
1198 snd_hda_codec_write(codec, nid, 0,
1199 AC_VERB_SET_CONNECT_SEL, pinsel);
1195 1200
1201 if (spec->codec_type == VT1812)
1202 snd_hda_codec_write(codec, 0x35, 0,
1203 AC_VERB_SET_CONNECT_SEL, pinsel);
1196 if (spec->multiout.hp_nid && spec->multiout.hp_nid 1204 if (spec->multiout.hp_nid && spec->multiout.hp_nid
1197 != spec->multiout.dac_nids[HDA_FRONT]) 1205 != spec->multiout.dac_nids[HDA_FRONT])
1198 snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid, 1206 snd_hda_codec_setup_stream(codec, spec->multiout.hp_nid,
@@ -1211,6 +1219,8 @@ static int via_independent_hp_put(struct snd_kcontrol *kcontrol,
1211 activate_ctl(codec, "Headphone Playback Switch", 1219 activate_ctl(codec, "Headphone Playback Switch",
1212 spec->hp_independent_mode); 1220 spec->hp_independent_mode);
1213 } 1221 }
1222 /* update jack power state */
1223 set_jack_power_state(codec);
1214 return 0; 1224 return 0;
1215} 1225}
1216 1226