aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2009-06-04 18:47:26 -0400
committerTakashi Iwai <tiwai@suse.de>2009-06-05 06:12:26 -0400
commit3e1647c5b54a91a7182e121cfe569e6f0bf167ec (patch)
tree326dafba8e0978357ac6a55eeb468c9d79fe2a53
parent65f759831179bb8922f2a91a989487161d476a94 (diff)
ALSA: support Sony Vaio TT
with BIOS probing only we offer a non functional headphone swith and volume slider. Signed-off-by: Guido Günther <agx@sigxcpu.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--Documentation/sound/alsa/HD-Audio-Models.txt1
-rw-r--r--sound/pci/hda/patch_realtek.c45
2 files changed, 46 insertions, 0 deletions
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt
index 29c6125a838a..54b08053d029 100644
--- a/Documentation/sound/alsa/HD-Audio-Models.txt
+++ b/Documentation/sound/alsa/HD-Audio-Models.txt
@@ -159,6 +159,7 @@ ALC883/888
159 3stack-6ch-intel Intel DG33* boards 159 3stack-6ch-intel Intel DG33* boards
160 asus-p5q ASUS P5Q-EM boards 160 asus-p5q ASUS P5Q-EM boards
161 mb31 MacBook 3,1 161 mb31 MacBook 3,1
162 sony-vaio-tt Sony VAIO TT
162 auto auto-config reading BIOS (default) 163 auto auto-config reading BIOS (default)
163 164
164ALC861/660 165ALC861/660
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 8699b7fb45b9..1ab1b92fdc1c 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -243,6 +243,7 @@ enum {
243 ALC888_ASUS_EEE1601, 243 ALC888_ASUS_EEE1601,
244 ALC889A_MB31, 244 ALC889A_MB31,
245 ALC1200_ASUS_P5Q, 245 ALC1200_ASUS_P5Q,
246 ALC883_SONY_VAIO_TT,
246 ALC883_AUTO, 247 ALC883_AUTO,
247 ALC883_MODEL_LAST, 248 ALC883_MODEL_LAST,
248}; 249};
@@ -8134,6 +8135,16 @@ static struct snd_kcontrol_new alc889A_mb31_mixer[] = {
8134 { } /* end */ 8135 { } /* end */
8135}; 8136};
8136 8137
8138static struct snd_kcontrol_new alc883_vaiott_mixer[] = {
8139 HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT),
8140 HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT),
8141 HDA_CODEC_MUTE("Headphone Playback Switch", 0x15, 0x0, HDA_OUTPUT),
8142 HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x1, HDA_INPUT),
8143 HDA_CODEC_VOLUME("Mic Boost", 0x19, 0, HDA_INPUT),
8144 HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x1, HDA_INPUT),
8145 { } /* end */
8146};
8147
8137static struct hda_bind_ctls alc883_bind_cap_vol = { 8148static struct hda_bind_ctls alc883_bind_cap_vol = {
8138 .ops = &snd_hda_bind_vol, 8149 .ops = &snd_hda_bind_vol,
8139 .values = { 8150 .values = {
@@ -8410,6 +8421,17 @@ static struct hda_verb alc888_6st_dell_verbs[] = {
8410 { } 8421 { }
8411}; 8422};
8412 8423
8424static struct hda_verb alc883_vaiott_verbs[] = {
8425 /* HP */
8426 {0x15, AC_VERB_SET_CONNECT_SEL, 0x00},
8427 {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP},
8428
8429 /* enable unsolicited event */
8430 {0x15, AC_VERB_SET_UNSOLICITED_ENABLE, ALC880_HP_EVENT | AC_USRSP_EN},
8431
8432 { } /* end */
8433};
8434
8413static void alc888_3st_hp_init_hook(struct hda_codec *codec) 8435static void alc888_3st_hp_init_hook(struct hda_codec *codec)
8414{ 8436{
8415 struct alc_spec *spec = codec->spec; 8437 struct alc_spec *spec = codec->spec;
@@ -8669,6 +8691,16 @@ static void alc888_lenovo_sky_init_hook(struct hda_codec *codec)
8669 alc_automute_amp(codec); 8691 alc_automute_amp(codec);
8670} 8692}
8671 8693
8694static void alc883_vaiott_init_hook(struct hda_codec *codec)
8695{
8696 struct alc_spec *spec = codec->spec;
8697
8698 spec->autocfg.hp_pins[0] = 0x15;
8699 spec->autocfg.speaker_pins[0] = 0x14;
8700 spec->autocfg.speaker_pins[1] = 0x17;
8701 alc_automute_amp(codec);
8702}
8703
8672/* 8704/*
8673 * generic initialization of ADC, input mixers and output mixers 8705 * generic initialization of ADC, input mixers and output mixers
8674 */ 8706 */
@@ -8884,6 +8916,7 @@ static const char *alc883_models[ALC883_MODEL_LAST] = {
8884 [ALC883_3ST_6ch_INTEL] = "3stack-6ch-intel", 8916 [ALC883_3ST_6ch_INTEL] = "3stack-6ch-intel",
8885 [ALC1200_ASUS_P5Q] = "asus-p5q", 8917 [ALC1200_ASUS_P5Q] = "asus-p5q",
8886 [ALC889A_MB31] = "mb31", 8918 [ALC889A_MB31] = "mb31",
8919 [ALC883_SONY_VAIO_TT] = "sony-vaio-tt",
8887 [ALC883_AUTO] = "auto", 8920 [ALC883_AUTO] = "auto",
8888}; 8921};
8889 8922
@@ -8978,6 +9011,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
8978 SND_PCI_QUIRK(0x8086, 0x2503, "82801H", ALC883_MITAC), 9011 SND_PCI_QUIRK(0x8086, 0x2503, "82801H", ALC883_MITAC),
8979 SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC883_3ST_6ch_INTEL), 9012 SND_PCI_QUIRK(0x8086, 0x0022, "DX58SO", ALC883_3ST_6ch_INTEL),
8980 SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch), 9013 SND_PCI_QUIRK(0x8086, 0xd601, "D102GGC", ALC883_3ST_6ch),
9014 SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC883_SONY_VAIO_TT),
8981 {} 9015 {}
8982}; 9016};
8983 9017
@@ -9373,6 +9407,17 @@ static struct alc_config_preset alc883_presets[] = {
9373 .unsol_event = alc889A_mb31_unsol_event, 9407 .unsol_event = alc889A_mb31_unsol_event,
9374 .init_hook = alc889A_mb31_automute, 9408 .init_hook = alc889A_mb31_automute,
9375 }, 9409 },
9410 [ALC883_SONY_VAIO_TT] = {
9411 .mixers = { alc883_vaiott_mixer },
9412 .init_verbs = { alc883_init_verbs, alc883_vaiott_verbs },
9413 .num_dacs = ARRAY_SIZE(alc883_dac_nids),
9414 .dac_nids = alc883_dac_nids,
9415 .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes),
9416 .channel_mode = alc883_3ST_2ch_modes,
9417 .input_mux = &alc883_capture_source,
9418 .unsol_event = alc_automute_amp_unsol_event,
9419 .init_hook = alc883_vaiott_init_hook,
9420 },
9376}; 9421};
9377 9422
9378 9423