diff options
author | Takashi Iwai <tiwai@suse.de> | 2012-02-13 05:56:25 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-02-13 06:07:40 -0500 |
commit | e652f4c861fb7f1f59ff0828db0d85578471932d (patch) | |
tree | 7337ba2be67e0a5dec04643b48411afca288d37d /sound/pci/hda/patch_realtek.c | |
parent | 71b1e9e43d5199f57c109e20c0f4dffc5c048130 (diff) |
ALSA: hda - Suppress auto-mute feature on some machines with ALC861
A few machines with ALC861 & co are reported not to work properly with
the auto-mute feature in software. The auto-mute feature is implemented
in the hardware level, and the jack-detection never works with them.
Also, rename the fixup index as ALC861_FIXUP_* to follow the standard.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 4a2a49fd92a..c6305984816 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -5563,8 +5563,10 @@ static const struct hda_amp_list alc861_loopbacks[] = { | |||
5563 | 5563 | ||
5564 | /* Pin config fixes */ | 5564 | /* Pin config fixes */ |
5565 | enum { | 5565 | enum { |
5566 | PINFIX_FSC_AMILO_PI1505, | 5566 | ALC861_FIXUP_FSC_AMILO_PI1505, |
5567 | PINFIX_ASUS_A6RP, | 5567 | ALC861_FIXUP_AMP_VREF_0F, |
5568 | ALC861_FIXUP_NO_JACK_DETECT, | ||
5569 | ALC861_FIXUP_ASUS_A6RP, | ||
5568 | }; | 5570 | }; |
5569 | 5571 | ||
5570 | /* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */ | 5572 | /* On some laptops, VREF of pin 0x0f is abused for controlling the main amp */ |
@@ -5586,8 +5588,16 @@ static void alc861_fixup_asus_amp_vref_0f(struct hda_codec *codec, | |||
5586 | spec->keep_vref_in_automute = 1; | 5588 | spec->keep_vref_in_automute = 1; |
5587 | } | 5589 | } |
5588 | 5590 | ||
5591 | /* suppress the jack-detection */ | ||
5592 | static void alc_fixup_no_jack_detect(struct hda_codec *codec, | ||
5593 | const struct alc_fixup *fix, int action) | ||
5594 | { | ||
5595 | if (action == ALC_FIXUP_ACT_PRE_PROBE) | ||
5596 | codec->no_jack_detect = 1; | ||
5597 | } | ||
5598 | |||
5589 | static const struct alc_fixup alc861_fixups[] = { | 5599 | static const struct alc_fixup alc861_fixups[] = { |
5590 | [PINFIX_FSC_AMILO_PI1505] = { | 5600 | [ALC861_FIXUP_FSC_AMILO_PI1505] = { |
5591 | .type = ALC_FIXUP_PINS, | 5601 | .type = ALC_FIXUP_PINS, |
5592 | .v.pins = (const struct alc_pincfg[]) { | 5602 | .v.pins = (const struct alc_pincfg[]) { |
5593 | { 0x0b, 0x0221101f }, /* HP */ | 5603 | { 0x0b, 0x0221101f }, /* HP */ |
@@ -5595,17 +5605,29 @@ static const struct alc_fixup alc861_fixups[] = { | |||
5595 | { } | 5605 | { } |
5596 | } | 5606 | } |
5597 | }, | 5607 | }, |
5598 | [PINFIX_ASUS_A6RP] = { | 5608 | [ALC861_FIXUP_AMP_VREF_0F] = { |
5599 | .type = ALC_FIXUP_FUNC, | 5609 | .type = ALC_FIXUP_FUNC, |
5600 | .v.func = alc861_fixup_asus_amp_vref_0f, | 5610 | .v.func = alc861_fixup_asus_amp_vref_0f, |
5601 | }, | 5611 | }, |
5612 | [ALC861_FIXUP_NO_JACK_DETECT] = { | ||
5613 | .type = ALC_FIXUP_FUNC, | ||
5614 | .v.func = alc_fixup_no_jack_detect, | ||
5615 | }, | ||
5616 | [ALC861_FIXUP_ASUS_A6RP] = { | ||
5617 | .type = ALC_FIXUP_FUNC, | ||
5618 | .v.func = alc861_fixup_asus_amp_vref_0f, | ||
5619 | .chained = true, | ||
5620 | .chain_id = ALC861_FIXUP_NO_JACK_DETECT, | ||
5621 | } | ||
5602 | }; | 5622 | }; |
5603 | 5623 | ||
5604 | static const struct snd_pci_quirk alc861_fixup_tbl[] = { | 5624 | static const struct snd_pci_quirk alc861_fixup_tbl[] = { |
5605 | SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", PINFIX_ASUS_A6RP), | 5625 | SND_PCI_QUIRK(0x1043, 0x1393, "ASUS A6Rp", ALC861_FIXUP_ASUS_A6RP), |
5606 | SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", PINFIX_ASUS_A6RP), | 5626 | SND_PCI_QUIRK_VENDOR(0x1043, "ASUS laptop", ALC861_FIXUP_AMP_VREF_0F), |
5607 | SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", PINFIX_ASUS_A6RP), | 5627 | SND_PCI_QUIRK(0x1462, 0x7254, "HP DX2200", ALC861_FIXUP_NO_JACK_DETECT), |
5608 | SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", PINFIX_FSC_AMILO_PI1505), | 5628 | SND_PCI_QUIRK(0x1584, 0x2b01, "Haier W18", ALC861_FIXUP_AMP_VREF_0F), |
5629 | SND_PCI_QUIRK(0x1584, 0x0000, "Uniwill ECS M31EI", ALC861_FIXUP_AMP_VREF_0F), | ||
5630 | SND_PCI_QUIRK(0x1734, 0x10c7, "FSC Amilo Pi1505", ALC861_FIXUP_FSC_AMILO_PI1505), | ||
5609 | {} | 5631 | {} |
5610 | }; | 5632 | }; |
5611 | 5633 | ||