]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.25/patches.drivers/alsa-post-ga-alc888-hp-3stack-auto-mute
Reenabled linux-xen and xen-image build
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.drivers / alsa-post-ga-alc888-hp-3stack-auto-mute
CommitLineData
00e5a55c
BS
1From 8718b700ccbcc3c6016d38a75e005293c3660f1c Mon Sep 17 00:00:00 2001
2From: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
3Date: Wed, 4 Mar 2009 14:22:51 -0300
4Subject: ALSA: hda - Add headphone automute support for 3stack-hp model (ALC888)
5Patch-mainline:
6References: bnc#482796
7
8Mute speaker outputs on headphone insertion for machines that use
93stack-hp model.
10
11Signed-off-by: Herton Ronaldo Krzesinski <herton@mandriva.com.br>
12Signed-off-by: Takashi Iwai <tiwai@suse.de>
13
14---
15 sound/pci/hda/patch_realtek.c | 38 +++++++++++++++++++++++++++++++++-----
16 1 file changed, 33 insertions(+), 5 deletions(-)
17
18--- a/sound/pci/hda/patch_realtek.c
19+++ b/sound/pci/hda/patch_realtek.c
20@@ -7853,16 +7853,42 @@ static struct hda_verb alc888_lenovo_sky
21 { } /* end */
22 };
23
24+static struct hda_verb alc888_6st_dell_verbs[] = {
25+ {0x1b, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
26+ { }
27+};
28+
29+static void alc888_3st_hp_front_automute(struct hda_codec *codec)
30+{
31+ unsigned int present, bits;
32+
33+ present = snd_hda_codec_read(codec, 0x1b, 0,
34+ AC_VERB_GET_PIN_SENSE, 0) & 0x80000000;
35+ bits = present ? HDA_AMP_MUTE : 0;
36+ snd_hda_codec_amp_stereo(codec, 0x14, HDA_OUTPUT, 0,
37+ HDA_AMP_MUTE, bits);
38+ snd_hda_codec_amp_stereo(codec, 0x16, HDA_OUTPUT, 0,
39+ HDA_AMP_MUTE, bits);
40+ snd_hda_codec_amp_stereo(codec, 0x18, HDA_OUTPUT, 0,
41+ HDA_AMP_MUTE, bits);
42+}
43+
44+static void alc888_3st_hp_unsol_event(struct hda_codec *codec,
45+ unsigned int res)
46+{
47+ switch (res >> 26) {
48+ case ALC880_HP_EVENT:
49+ alc888_3st_hp_front_automute(codec);
50+ break;
51+ }
52+}
53+
54 static struct hda_verb alc888_3st_hp_verbs[] = {
55 {0x14, AC_VERB_SET_CONNECT_SEL, 0x00}, /* Front: output 0 (0x0c) */
56 {0x16, AC_VERB_SET_CONNECT_SEL, 0x01}, /* Rear : output 1 (0x0d) */
57 {0x18, AC_VERB_SET_CONNECT_SEL, 0x02}, /* CLFE : output 2 (0x0e) */
58- { }
59-};
60-
61-static struct hda_verb alc888_6st_dell_verbs[] = {
62 {0x1b, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
63- { }
64+ { } /* end */
65 };
66
67 /*
68@@ -8715,6 +8741,8 @@ static struct alc_config_preset alc883_p
69 .channel_mode = alc888_3st_hp_modes,
70 .need_dac_fix = 1,
71 .input_mux = &alc883_capture_source,
72+ .unsol_event = alc888_3st_hp_unsol_event,
73+ .init_hook = alc888_3st_hp_front_automute,
74 },
75 [ALC888_6ST_DELL] = {
76 .mixers = { alc883_base_mixer, alc883_chmode_mixer },