diff options
| author | Lydia Wang <lydiawang@viatech.com.cn> | 2011-03-22 04:22:37 -0400 |
|---|---|---|
| committer | Takashi Iwai <tiwai@suse.de> | 2011-03-22 07:42:56 -0400 |
| commit | ce0e5a9e81fbb153ee15ca60246c6722f07fc546 (patch) | |
| tree | 566192ff4a0280010e23c767f3d753db43c357aa /sound | |
| parent | bff5fbf50bd498c217994bd2d41a53ac3141185a (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.c | 12 |
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 | ||
