[alsa-devel] Audio crackles with 4.1-rc1

Takashi Iwai tiwai at suse.de
Fri Jun 12 12:09:55 CEST 2015


At Fri, 12 Jun 2015 12:45:23 +0300,
Mihai Donțu wrote:
> 
> On Fri, 12 Jun 2015 09:00:06 +0200 Takashi Iwai wrote:
> > At Fri, 12 Jun 2015 01:23:18 +0300, Mihai Donțu wrote:
> > > No, 4.0.5 and all previous kernels (>= 3.12) are OK. I have attached a
> > > small tarball with the two files produced by alsa-info.sh.
> > 
> > Both are taken in different states (one is headphone plugged and
> > another unplugged?).  At best, take the snapshot in the same situation
> > for comparison.
> > 
> > In anyway, below is another shot in dark.  The white noise is possibly
> > the ill side effect of analog loopback.  But it's strange that this
> > didn't happen on 4.0.x.  And, it combines another black magic that
> > worked for another Dell model.  Let's see.
> > 
> > 
> > Takashi
> > 
> > ---
> > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
> > index 9d3e0fcb4326..cf46f6012ba4 100644
> > --- a/sound/pci/hda/patch_realtek.c
> > +++ b/sound/pci/hda/patch_realtek.c
> > @@ -4522,6 +4522,8 @@ enum {
> >  	ALC288_FIXUP_DELL1_MIC_NO_PRESENCE,
> >  	ALC288_FIXUP_DELL_XPS_13_GPIO6,
> >  	ALC298_FIXUP_DELL1_MIC_NO_PRESENCE,
> > +	ALC292_FIXUP_DELL_E74,
> > +	ALC292_FIXUP_DISABLE_AAMIX,
> >  };
> >  
> >  static const struct hda_fixup alc269_fixups[] = {
> > @@ -5054,6 +5056,16 @@ static const struct hda_fixup alc269_fixups[] = {
> >  		.chained = true,
> >  		.chain_id = ALC269_FIXUP_HEADSET_MODE
> >  	},
> > +	[ALC292_FIXUP_DISABLE_AAMIX] = {
> > +		.type = HDA_FIXUP_FUNC,
> > +		.v.func = alc_fixup_disable_aamix,
> > +	},
> > +	[ALC292_FIXUP_DELL_E74] = {
> > +		.type = HDA_FIXUP_FUNC,
> > +		.v.func = alc_fixup_dell_xps13,
> > +		.chained = true,
> > +		.chain_id = ALC292_FIXUP_DISABLE_AAMIX
> > +	},
> >  };
> >  
> >  static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> > @@ -5066,6 +5078,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
> >  	SND_PCI_QUIRK(0x1025, 0x0775, "Acer Aspire E1-572", ALC271_FIXUP_HP_GATE_MIC_JACK_E1_572),
> >  	SND_PCI_QUIRK(0x1025, 0x079b, "Acer Aspire V5-573G", ALC282_FIXUP_ASPIRE_V5_PINS),
> >  	SND_PCI_QUIRK(0x1028, 0x0470, "Dell M101z", ALC269_FIXUP_DELL_M101Z),
> > +	SND_PCI_QUIRK(0x1028, 0x05cb, "Dell Latitude E7440", ALC292_FIXUP_DELL_E74),
> >  	SND_PCI_QUIRK(0x1028, 0x05da, "Dell Vostro 5460", ALC290_FIXUP_SUBWOOFER),
> >  	SND_PCI_QUIRK(0x1028, 0x05f4, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
> >  	SND_PCI_QUIRK(0x1028, 0x05f5, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
> 
> Nice shot! It appears to work. :-) No clicks, no static.

Good to hear!

> I had to apply it by hand over 4.1-rc7, because the first two arrays
> look different in both it and -master. Anyway, I will play with it some
> more today see if anything else is broken.

While we are at it: could you try to enable codec->power_save_node in
patch_alc269() (while keeping the new patch)?

--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -5671,8 +5671,7 @@ static int patch_alc269(struct hda_codec *codec)
 
 	spec = codec->spec;
 	spec->gen.shared_mic_vref_pin = 0x18;
-	if (codec->core.vendor_id != 0x10ec0292)
-		codec->power_save_node = 1;
+	codec->power_save_node = 1;
 
 #ifdef CONFIG_PM
 	codec->patch_ops.suspend = alc269_suspend;


This was the workaround for Jonathan's machine, but maybe the new
workaround is good enough.  After changing this, try to enable the
power save by writing like

	echo 1 > /sys/module/snd_hda_intel/parameters/power_save

and start/stop playing something.


thanks,

Takashi


More information about the Alsa-devel mailing list