diff options
-rw-r--r-- | Documentation/sound/alsa/HD-Audio-Models.txt | 1 | ||||
-rw-r--r-- | sound/pci/hda/alc880_quirks.c | 58 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 20 |
3 files changed, 20 insertions, 59 deletions
diff --git a/Documentation/sound/alsa/HD-Audio-Models.txt b/Documentation/sound/alsa/HD-Audio-Models.txt index 1af6354ec549..43f3c7113950 100644 --- a/Documentation/sound/alsa/HD-Audio-Models.txt +++ b/Documentation/sound/alsa/HD-Audio-Models.txt | |||
@@ -8,7 +8,6 @@ ALC880 | |||
8 | 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out | 8 | 5stack-digout 5-jack in back, 2-jack in front, a SPDIF out |
9 | 6stack 6-jack in back, 2-jack in front | 9 | 6stack 6-jack in back, 2-jack in front |
10 | 6stack-digout 6-jack with a SPDIF out | 10 | 6stack-digout 6-jack with a SPDIF out |
11 | z71v 3-jack (HP shared SPDIF) | ||
12 | asus 3-jack (ASUS Mobo) | 11 | asus 3-jack (ASUS Mobo) |
13 | asus-w1v ASUS W1V | 12 | asus-w1v ASUS W1V |
14 | asus-dig ASUS with SPDIF out | 13 | asus-dig ASUS with SPDIF out |
diff --git a/sound/pci/hda/alc880_quirks.c b/sound/pci/hda/alc880_quirks.c index 59899f8b056f..6caa2010a851 100644 --- a/sound/pci/hda/alc880_quirks.c +++ b/sound/pci/hda/alc880_quirks.c | |||
@@ -10,7 +10,6 @@ enum { | |||
10 | ALC880_3ST_DIG, | 10 | ALC880_3ST_DIG, |
11 | ALC880_5ST, | 11 | ALC880_5ST, |
12 | ALC880_5ST_DIG, | 12 | ALC880_5ST_DIG, |
13 | ALC880_Z71V, | ||
14 | ALC880_6ST, | 13 | ALC880_6ST, |
15 | ALC880_6ST_DIG, | 14 | ALC880_6ST_DIG, |
16 | ALC880_ASUS, | 15 | ALC880_ASUS, |
@@ -223,36 +222,11 @@ static const hda_nid_t alc880_w810_dac_nids[3] = { | |||
223 | 0x02, 0x03, 0x04 | 222 | 0x02, 0x03, 0x04 |
224 | }; | 223 | }; |
225 | 224 | ||
226 | /* | ||
227 | * Z710V model | ||
228 | * | ||
229 | * DAC: Front = 0x02 (0x0c), HP = 0x03 (0x0d) | ||
230 | * Pin assignment: Front = 0x14, HP = 0x15, Mic = 0x18, Mic2 = 0x19(?), | ||
231 | * Line = 0x1a | ||
232 | */ | ||
233 | |||
234 | static const hda_nid_t alc880_z71v_dac_nids[1] = { | ||
235 | 0x02 | ||
236 | }; | ||
237 | #define ALC880_Z71V_HP_DAC 0x03 | ||
238 | |||
239 | /* fixed 2 channels */ | 225 | /* fixed 2 channels */ |
240 | static const struct hda_channel_mode alc880_2_jack_modes[1] = { | 226 | static const struct hda_channel_mode alc880_2_jack_modes[1] = { |
241 | { 2, NULL } | 227 | { 2, NULL } |
242 | }; | 228 | }; |
243 | 229 | ||
244 | static const struct snd_kcontrol_new alc880_z71v_mixer[] = { | ||
245 | HDA_CODEC_VOLUME("Front Playback Volume", 0x0c, 0x0, HDA_OUTPUT), | ||
246 | HDA_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), | ||
247 | HDA_CODEC_VOLUME("Headphone Playback Volume", 0x0d, 0x0, HDA_OUTPUT), | ||
248 | HDA_BIND_MUTE("Headphone Playback Switch", 0x0d, 2, HDA_INPUT), | ||
249 | HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x04, HDA_INPUT), | ||
250 | HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x04, HDA_INPUT), | ||
251 | HDA_CODEC_VOLUME("Mic Playback Volume", 0x0b, 0x0, HDA_INPUT), | ||
252 | HDA_CODEC_MUTE("Mic Playback Switch", 0x0b, 0x0, HDA_INPUT), | ||
253 | { } /* end */ | ||
254 | }; | ||
255 | |||
256 | /* | 230 | /* |
257 | * ALC880 ASUS model | 231 | * ALC880 ASUS model |
258 | * | 232 | * |
@@ -441,24 +415,6 @@ static const struct hda_verb alc880_pin_5stack_init_verbs[] = { | |||
441 | }; | 415 | }; |
442 | 416 | ||
443 | /* | 417 | /* |
444 | * Z71V pin configuration: | ||
445 | * Speaker-out = 0x14, HP = 0x15, Mic = 0x18, Line-in = 0x1a, Mic2 = 0x1b (?) | ||
446 | */ | ||
447 | static const struct hda_verb alc880_pin_z71v_init_verbs[] = { | ||
448 | {0x14, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT}, | ||
449 | {0x14, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
450 | {0x15, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP}, | ||
451 | {0x15, AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE}, | ||
452 | |||
453 | {0x18, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | ||
454 | {0x1a, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
455 | {0x1b, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_VREF80}, | ||
456 | {0x1c, AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_IN}, | ||
457 | |||
458 | { } | ||
459 | }; | ||
460 | |||
461 | /* | ||
462 | * 6-stack pin configuration: | 418 | * 6-stack pin configuration: |
463 | * front = 0x14, surr = 0x15, clfe = 0x16, side = 0x17, mic = 0x18, | 419 | * front = 0x14, surr = 0x15, clfe = 0x16, side = 0x17, mic = 0x18, |
464 | * f-mic = 0x19, line = 0x1a, HP = 0x1b | 420 | * f-mic = 0x19, line = 0x1a, HP = 0x1b |
@@ -802,7 +758,6 @@ static const char * const alc880_models[ALC880_MODEL_LAST] = { | |||
802 | [ALC880_3ST_DIG] = "3stack-digout", | 758 | [ALC880_3ST_DIG] = "3stack-digout", |
803 | [ALC880_5ST] = "5stack", | 759 | [ALC880_5ST] = "5stack", |
804 | [ALC880_5ST_DIG] = "5stack-digout", | 760 | [ALC880_5ST_DIG] = "5stack-digout", |
805 | [ALC880_Z71V] = "z71v", | ||
806 | [ALC880_6ST] = "6stack", | 761 | [ALC880_6ST] = "6stack", |
807 | [ALC880_6ST_DIG] = "6stack-digout", | 762 | [ALC880_6ST_DIG] = "6stack-digout", |
808 | [ALC880_ASUS] = "asus", | 763 | [ALC880_ASUS] = "asus", |
@@ -831,7 +786,6 @@ static const struct snd_pci_quirk alc880_cfg_tbl[] = { | |||
831 | SND_PCI_QUIRK(0x1043, 0x1113, "ASUS", ALC880_ASUS_DIG), | 786 | SND_PCI_QUIRK(0x1043, 0x1113, "ASUS", ALC880_ASUS_DIG), |
832 | SND_PCI_QUIRK(0x1043, 0x1123, "ASUS", ALC880_ASUS_DIG), | 787 | SND_PCI_QUIRK(0x1043, 0x1123, "ASUS", ALC880_ASUS_DIG), |
833 | SND_PCI_QUIRK(0x1043, 0x1173, "ASUS", ALC880_ASUS_DIG), | 788 | SND_PCI_QUIRK(0x1043, 0x1173, "ASUS", ALC880_ASUS_DIG), |
834 | SND_PCI_QUIRK(0x1043, 0x1964, "ASUS Z71V", ALC880_Z71V), | ||
835 | /* SND_PCI_QUIRK(0x1043, 0x1964, "ASUS", ALC880_ASUS_DIG), */ | 789 | /* SND_PCI_QUIRK(0x1043, 0x1964, "ASUS", ALC880_ASUS_DIG), */ |
836 | SND_PCI_QUIRK(0x1043, 0x1973, "ASUS", ALC880_ASUS_DIG), | 790 | SND_PCI_QUIRK(0x1043, 0x1973, "ASUS", ALC880_ASUS_DIG), |
837 | SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS", ALC880_ASUS_DIG), | 791 | SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS", ALC880_ASUS_DIG), |
@@ -943,18 +897,6 @@ static const struct alc_config_preset alc880_presets[] = { | |||
943 | .channel_mode = alc880_sixstack_modes, | 897 | .channel_mode = alc880_sixstack_modes, |
944 | .input_mux = &alc880_6stack_capture_source, | 898 | .input_mux = &alc880_6stack_capture_source, |
945 | }, | 899 | }, |
946 | [ALC880_Z71V] = { | ||
947 | .mixers = { alc880_z71v_mixer }, | ||
948 | .init_verbs = { alc880_volume_init_verbs, | ||
949 | alc880_pin_z71v_init_verbs }, | ||
950 | .num_dacs = ARRAY_SIZE(alc880_z71v_dac_nids), | ||
951 | .dac_nids = alc880_z71v_dac_nids, | ||
952 | .dig_out_nid = ALC880_DIGOUT_NID, | ||
953 | .hp_nid = 0x03, | ||
954 | .num_channel_mode = ARRAY_SIZE(alc880_2_jack_modes), | ||
955 | .channel_mode = alc880_2_jack_modes, | ||
956 | .input_mux = &alc880_capture_source, | ||
957 | }, | ||
958 | [ALC880_ASUS] = { | 900 | [ALC880_ASUS] = { |
959 | .mixers = { alc880_asus_mixer }, | 901 | .mixers = { alc880_asus_mixer }, |
960 | .init_verbs = { alc880_volume_init_verbs, | 902 | .init_verbs = { alc880_volume_init_verbs, |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index e88c753743dc..71acd9b9a88d 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -4449,6 +4449,7 @@ enum { | |||
4449 | ALC880_FIXUP_F1734, | 4449 | ALC880_FIXUP_F1734, |
4450 | ALC880_FIXUP_UNIWILL, | 4450 | ALC880_FIXUP_UNIWILL, |
4451 | ALC880_FIXUP_UNIWILL_DIG, | 4451 | ALC880_FIXUP_UNIWILL_DIG, |
4452 | ALC880_FIXUP_Z71V, | ||
4452 | }; | 4453 | }; |
4453 | 4454 | ||
4454 | /* enable the volume-knob widget support on NID 0x21 */ | 4455 | /* enable the volume-knob widget support on NID 0x21 */ |
@@ -4579,10 +4580,29 @@ static const struct alc_fixup alc880_fixups[] = { | |||
4579 | { } | 4580 | { } |
4580 | } | 4581 | } |
4581 | }, | 4582 | }, |
4583 | [ALC880_FIXUP_Z71V] = { | ||
4584 | .type = ALC_FIXUP_PINS, | ||
4585 | .v.pins = (const struct alc_pincfg[]) { | ||
4586 | /* set up the whole pins as BIOS is utterly broken */ | ||
4587 | { 0x14, 0x99030120 }, /* speaker */ | ||
4588 | { 0x15, 0x0121411f }, /* HP */ | ||
4589 | { 0x16, 0x411111f0 }, /* N/A */ | ||
4590 | { 0x17, 0x411111f0 }, /* N/A */ | ||
4591 | { 0x18, 0x01a19950 }, /* mic-in */ | ||
4592 | { 0x19, 0x411111f0 }, /* N/A */ | ||
4593 | { 0x1a, 0x01813031 }, /* line-in */ | ||
4594 | { 0x1b, 0x411111f0 }, /* N/A */ | ||
4595 | { 0x1c, 0x411111f0 }, /* N/A */ | ||
4596 | { 0x1d, 0x411111f0 }, /* N/A */ | ||
4597 | { 0x1e, 0x0144111e }, /* SPDIF */ | ||
4598 | { } | ||
4599 | } | ||
4600 | }, | ||
4582 | }; | 4601 | }; |
4583 | 4602 | ||
4584 | static const struct snd_pci_quirk alc880_fixup_tbl[] = { | 4603 | static const struct snd_pci_quirk alc880_fixup_tbl[] = { |
4585 | SND_PCI_QUIRK(0x1019, 0x0f69, "Coeus G610P", ALC880_FIXUP_W810), | 4604 | SND_PCI_QUIRK(0x1019, 0x0f69, "Coeus G610P", ALC880_FIXUP_W810), |
4605 | SND_PCI_QUIRK(0x1043, 0x1964, "ASUS Z71V", ALC880_FIXUP_Z71V), | ||
4586 | SND_PCI_QUIRK_VENDOR(0x1558, "Clevo", ALC880_FIXUP_EAPD_COEF), | 4606 | SND_PCI_QUIRK_VENDOR(0x1558, "Clevo", ALC880_FIXUP_EAPD_COEF), |
4587 | SND_PCI_QUIRK(0x1584, 0x9050, "Uniwill", ALC880_FIXUP_UNIWILL_DIG), | 4607 | SND_PCI_QUIRK(0x1584, 0x9050, "Uniwill", ALC880_FIXUP_UNIWILL_DIG), |
4588 | SND_PCI_QUIRK(0x1584, 0x9054, "Uniwill", ALC880_FIXUP_F1734), | 4608 | SND_PCI_QUIRK(0x1584, 0x9054, "Uniwill", ALC880_FIXUP_F1734), |