From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: Audio crackles with 4.1-rc1 Date: Wed, 10 Jun 2015 18:27:23 +0200 Message-ID: References: <20150429112859.GY10148@earth.li> <20150430150131.GA10148@earth.li> <20150502150513.GF10148@earth.li> <20150519161911.GD28070@earth.li> <20150519215310.GF28070@earth.li> <20150610131755.0b906783@mdontu-l.dsd.bitdefender.biz> <20150610134135.327e2bdc@mdontu-l.dsd.bitdefender.biz> <20150610144551.4578ee99@mdontu-l.dsd.bitdefender.biz> <20150610192202.0e987fd0@mdontu-l.dsd.bitdefender.biz> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <20150610192202.0e987fd0@mdontu-l.dsd.bitdefender.biz> Sender: linux-kernel-owner@vger.kernel.org To: Mihai =?UTF-8?B?RG9uyJt1?= Cc: Jonathan McDowell , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org List-Id: alsa-devel@alsa-project.org At Wed, 10 Jun 2015 19:22:02 +0300, Mihai Don=C8=9Bu wrote: >=20 > On Wed, 10 Jun 2015 14:50:30 +0200 Takashi Iwai wrote: > > At Wed, 10 Jun 2015 14:33:42 +0200, Takashi Iwai wrote: > > > At Wed, 10 Jun 2015 14:45:51 +0300, Mihai Don=C8=9Bu wrote: > > > > On Wed, 10 Jun 2015 12:50:22 +0200 Takashi Iwai wrote: > > > > > At Wed, 10 Jun 2015 13:41:35 +0300, Mihai Don=C8=9Bu wrote: > > > > > > On Wed, 10 Jun 2015 12:22:53 +0200 Takashi Iwai wrote: > > > > > > > At Wed, 10 Jun 2015 13:17:55 +0300, Mihai Don=C8=9Bu wrot= e: > > > > > > > > On Wed, 20 May 2015 07:01:12 +0200 Takashi Iwai wrote: > > > > > > > > > From: Takashi Iwai > > > > > > > > > Subject: [PATCH] ALSA: hda - Disable widget power-sav= ing for ALC292 & co > > > > > > > > >=20 > > > > > > > > > We've got reports that ALC3226 (a Dell variant of ALC= 292) gives click > > > > > > > > > noises at transition from D3 to D0 when the widget po= wer-saving is > > > > > > > > > enabled. Further debugging session showed that avoid= ing it isn't > > > > > > > > > trivial, unfortunately, since paths are basically act= ivated > > > > > > > > > dynamically while the pins have been already enabled. > > > > > > > > >=20 > > > > > > > > > This patch disables the widget power-saving for such = codecs. > > > > > > > > >=20 > > > > > > > > > Reported-by: Jonathan McDowell > > > > > > > > > Signed-off-by: Takashi Iwai > > > > > > > > > --- > > > > > > > > > sound/pci/hda/patch_realtek.c | 3 ++- > > > > > > > > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > > > > > >=20 > > > > > > > > > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pc= i/hda/patch_realtek.c > > > > > > > > > index 2e246fe495f6..31f8f13be907 100644 > > > > > > > > > --- a/sound/pci/hda/patch_realtek.c > > > > > > > > > +++ b/sound/pci/hda/patch_realtek.c > > > > > > > > > @@ -5623,7 +5623,8 @@ static int patch_alc269(struct = hda_codec *codec) > > > > > > > > > =20 > > > > > > > > > spec =3D codec->spec; > > > > > > > > > spec->gen.shared_mic_vref_pin =3D 0x18; > > > > > > > > > - codec->power_save_node =3D 1; > > > > > > > > > + if (codec->core.vendor_id !=3D 0x10ec0292) > > > > > > > > > + codec->power_save_node =3D 1; > > > > > > > > > =20 > > > > > > > > > snd_hda_pick_fixup(codec, alc269_fixup_models, > > > > > > > > > alc269_fixup_tbl, alc269_fixups); > > > > > > > >=20 > > > > > > > > I'm on 4.1-rc7 which appears to contain this patch, how= ever, I still > > > > > > > > get the audio artifacts (crackles) when I boot my lapto= p (Latitude > > > > > > > > E7440): > > > > > > > >=20 > > > > > > > > [ 1.058839] snd_hda_codec_realtek hdaudioC1D0: autoc= onfig for ALC3226: line_outs=3D1 (0x16/0x0/0x0/0x0/0x0) type:line > > > > > > > > [ 1.058843] snd_hda_codec_realtek hdaudioC1D0: sp= eaker_outs=3D1 (0x14/0x0/0x0/0x0/0x0) > > > > > > > > [ 1.058846] snd_hda_codec_realtek hdaudioC1D0: hp= _outs=3D1 (0x15/0x0/0x0/0x0/0x0) > > > > > > > > [ 1.058849] snd_hda_codec_realtek hdaudioC1D0: mo= no: mono_out=3D0x0 > > > > > > > > [ 1.058851] snd_hda_codec_realtek hdaudioC1D0: in= puts: > > > > > > > > [ 1.058855] snd_hda_codec_realtek hdaudioC1D0: = Dock Mic=3D0x19 > > > > > > > > [ 1.058859] snd_hda_codec_realtek hdaudioC1D0: = Headset Mic=3D0x1a > > > > > > > > [ 1.058862] snd_hda_codec_realtek hdaudioC1D0: = Internal Mic=3D0x12 > > > > > > > >=20 > > > > > > > > 4.0.4 was fine. > > > > > > >=20 > > > > > > > Does it happen only once at boot (i.e. at power up), or h= appens always > > > > > > > at runtime PM? If it's a once-off boot thing, the patch = shouldn't > > > > > > > have much effect. Something else, very subtle thing, e.g= =2E the order > > > > > > > of verb execution, might cause this kind of problem. > > > > > >=20 > > > > > > Only at power up. I've also suspend-resumed twice and can c= onfirm it's > > > > > > OK. > > > > > >=20 > > > > > > There's a _very_ brief click at suspend (when the power is = cut), but it > > > > > > looks like a plain circuitry thing. I probably didn't notic= e it before > > > > > > because I wasn't looking for it. > > > > >=20 > > > > > Thanks. Do you get the same click noise when reloading snd-h= da-intel > > > > > driver? Also, does it happen when booting in runlevel 3? > > > > >=20 > > > > > Last but not least, a patch like below has any effect? > > > > >=20 > > > > >=20 > > > > > Takashi > > > > >=20 > > > > > --- > > > > > diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_co= dec.c > > > > > --- a/sound/pci/hda/hda_codec.c > > > > > +++ b/sound/pci/hda/hda_codec.c > > > > > @@ -3077,6 +3077,8 @@ static unsigned int hda_set_power_state= (struct hda_codec *codec, > > > > > break; > > > > > } > > > > > =20 > > > > > + if (power_state =3D=3D AC_PWRST_D0) > > > > > + msleep(100); > > > > > return state; > > > > > } > > > > > =20 > > > >=20 > > > > Reloading snd-hda-intel does not trigger the noise, but it help= s. I've > > > > noticed that the clicks appear when loading/reloading pulseaudi= o. > > > >=20 > > > > $ pulseaudio -k > > > >=20 > > > > will spawn a new child in background (probably asked by kmix) a= nd > > > > immediately I hear the noise. Reloading the driver makes the pr= oblem go > > > > away. > > >=20 > > > Hm. It's a bit inconsistent, but still this can be only at the fu= ll > > > power up sequence. > > >=20 > > > > telinit 3 does nothing for me (Gentoo seems to have things wire= d > > > > differently). Manually reloading alsasound (/etc/init.d/alsasou= nd) did > > > > not trigger the problem either. > > > >=20 > > > > However! Your patch seems to work. Cold boot, pulseaudio restar= t and > > > > nothing. Not a peep. :-) > > >=20 > > > OK, could you try to reduce the sleep value from 100 to 10? > > > Does it still work? > >=20 > > ... and check whether the patch below works instead. This is a bet= ter > > place if it really fixes. The former patch is in the common path > > every driver uses while this is codec-specific. > >=20 > > --- > > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_re= altek.c > > index 0320cb523d9e..957412548ba1 100644 > > --- a/sound/pci/hda/patch_realtek.c > > +++ b/sound/pci/hda/patch_realtek.c > > @@ -5637,7 +5637,9 @@ static int patch_alc269(struct hda_codec *cod= ec) > > =20 > > spec =3D codec->spec; > > spec->gen.shared_mic_vref_pin =3D 0x18; > > - if (codec->core.vendor_id !=3D 0x10ec0292) > > + if (codec->core.vendor_id =3D=3D 0x10ec0292) > > + msleep(100); /* for avoiding click noise at power up */ > > + else > > codec->power_save_node =3D 1; > > =20 > > snd_hda_pick_fixup(codec, alc269_fixup_models, >=20 > The initial patch but with msleep(10), works OK. This new one, howeve= r, > does not (with 100ms or 10ms). Hmm, could you make sure that the sleep is actually called, e.g. by adding a debug print or such? I blindly assumed that your codec is as same as Joanathan's (vendor id 0x10ec0292). You can check /proc/asound/card*/codec#* files, too. Takashi