At Tue, 14 Jan 2014 14:07:36 +0800, Hui Wang wrote: > > On some AIO (All In One) models with the codec alc668 > (Vendor ID: 0x10ec0668) on it, when we plug a headphone into the jack, > the system will switch the output to headphone and set the speaker to > automute as well as change the speaker Pin-ctls from 0x40 to 0x00, > this will bring loud noise to the headphone. > > I tried to disable the corresponding EAPD, but it did not help to > eliminate the noise. > > According to Takashi's suggestion, we use amp operation to replace the > pinctl modification for the automute, this really eliminate the noise. > > BugLink: https://bugs.launchpad.net/bugs/1268468 > Cc: David Henningsson <david.henningsson@xxxxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Hui Wang <hui.wang@xxxxxxxxxxxxx> Applied, thanks. Takashi > --- > sound/pci/hda/patch_realtek.c | 22 +++++++++++++++++++--- > 1 file changed, 19 insertions(+), 3 deletions(-) > > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c > index d35cf3d..a1c16457 100644 > --- a/sound/pci/hda/patch_realtek.c > +++ b/sound/pci/hda/patch_realtek.c > @@ -3580,6 +3580,15 @@ static void alc_fixup_headset_mode_alc255(struct hda_codec *codec, > alc_fixup_headset_mode(codec, fix, action); > } > > +static void alc_fixup_auto_mute_via_amp(struct hda_codec *codec, > + const struct hda_fixup *fix, int action) > +{ > + if (action == HDA_FIXUP_ACT_PRE_PROBE) { > + struct alc_spec *spec = codec->spec; > + spec->gen.auto_mute_via_amp = 1; > + } > +} > + > static void alc_fixup_headset_mode_alc668(struct hda_codec *codec, > const struct hda_fixup *fix, int action) > { > @@ -4839,6 +4848,7 @@ enum { > ALC662_FIXUP_BASS_CHMAP, > ALC662_FIXUP_BASS_1A, > ALC662_FIXUP_BASS_1A_CHMAP, > + ALC668_FIXUP_AUTO_MUTE, > }; > > static const struct hda_fixup alc662_fixups[] = { > @@ -4999,6 +5009,12 @@ static const struct hda_fixup alc662_fixups[] = { > .type = HDA_FIXUP_FUNC, > .v.func = alc_fixup_inv_dmic_0x12, > }, > + [ALC668_FIXUP_AUTO_MUTE] = { > + .type = HDA_FIXUP_FUNC, > + .v.func = alc_fixup_auto_mute_via_amp, > + .chained = true, > + .chain_id = ALC668_FIXUP_DELL_MIC_NO_PRESENCE > + }, > [ALC668_FIXUP_DELL_MIC_NO_PRESENCE] = { > .type = HDA_FIXUP_PINS, > .v.pins = (const struct hda_pintbl[]) { > @@ -5044,11 +5060,11 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = { > SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), > SND_PCI_QUIRK(0x1028, 0x05d8, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), > SND_PCI_QUIRK(0x1028, 0x05db, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), > - SND_PCI_QUIRK(0x1028, 0x0623, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), > - SND_PCI_QUIRK(0x1028, 0x0624, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), > + SND_PCI_QUIRK(0x1028, 0x0623, "Dell", ALC668_FIXUP_AUTO_MUTE), > + SND_PCI_QUIRK(0x1028, 0x0624, "Dell", ALC668_FIXUP_AUTO_MUTE), > SND_PCI_QUIRK(0x1028, 0x0625, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), > SND_PCI_QUIRK(0x1028, 0x0626, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), > - SND_PCI_QUIRK(0x1028, 0x0628, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), > + SND_PCI_QUIRK(0x1028, 0x0628, "Dell", ALC668_FIXUP_AUTO_MUTE), > SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800), > SND_PCI_QUIRK(0x1043, 0x11cd, "Asus N550", ALC662_FIXUP_BASS_1A_CHMAP), > SND_PCI_QUIRK(0x1043, 0x1477, "ASUS N56VZ", ALC662_FIXUP_BASS_CHMAP), > -- > 1.8.1.2 > -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html