At Wed, 10 Jun 2015 14:33:42 +0200, Takashi Iwai wrote:
At Wed, 10 Jun 2015 14:45:51 +0300, Mihai Donțu wrote:
On Wed, 10 Jun 2015 12:50:22 +0200 Takashi Iwai wrote:
At Wed, 10 Jun 2015 13:41:35 +0300, Mihai Donțu wrote:
On Wed, 10 Jun 2015 12:22:53 +0200 Takashi Iwai wrote:
At Wed, 10 Jun 2015 13:17:55 +0300, Mihai Donțu wrote:
On Wed, 20 May 2015 07:01:12 +0200 Takashi Iwai wrote: > From: Takashi Iwai tiwai@suse.de > Subject: [PATCH] ALSA: hda - Disable widget power-saving for ALC292 & co > > We've got reports that ALC3226 (a Dell variant of ALC292) gives click > noises at transition from D3 to D0 when the widget power-saving is > enabled. Further debugging session showed that avoiding it isn't > trivial, unfortunately, since paths are basically activated > dynamically while the pins have been already enabled. > > This patch disables the widget power-saving for such codecs. > > Reported-by: Jonathan McDowell noodles@earth.li > Signed-off-by: Takashi Iwai tiwai@suse.de > --- > sound/pci/hda/patch_realtek.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/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) > > spec = codec->spec; > spec->gen.shared_mic_vref_pin = 0x18; > - codec->power_save_node = 1; > + if (codec->core.vendor_id != 0x10ec0292) > + codec->power_save_node = 1; > > snd_hda_pick_fixup(codec, alc269_fixup_models, > alc269_fixup_tbl, alc269_fixups);
I'm on 4.1-rc7 which appears to contain this patch, however, I still get the audio artifacts (crackles) when I boot my laptop (Latitude E7440):
[ 1.058839] snd_hda_codec_realtek hdaudioC1D0: autoconfig for ALC3226: line_outs=1 (0x16/0x0/0x0/0x0/0x0) type:line [ 1.058843] snd_hda_codec_realtek hdaudioC1D0: speaker_outs=1 (0x14/0x0/0x0/0x0/0x0) [ 1.058846] snd_hda_codec_realtek hdaudioC1D0: hp_outs=1 (0x15/0x0/0x0/0x0/0x0) [ 1.058849] snd_hda_codec_realtek hdaudioC1D0: mono: mono_out=0x0 [ 1.058851] snd_hda_codec_realtek hdaudioC1D0: inputs: [ 1.058855] snd_hda_codec_realtek hdaudioC1D0: Dock Mic=0x19 [ 1.058859] snd_hda_codec_realtek hdaudioC1D0: Headset Mic=0x1a [ 1.058862] snd_hda_codec_realtek hdaudioC1D0: Internal Mic=0x12
4.0.4 was fine.
Does it happen only once at boot (i.e. at power up), or happens 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. the order of verb execution, might cause this kind of problem.
Only at power up. I've also suspend-resumed twice and can confirm it's OK.
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 notice it before because I wasn't looking for it.
Thanks. Do you get the same click noise when reloading snd-hda-intel driver? Also, does it happen when booting in runlevel 3?
Last but not least, a patch like below has any effect?
Takashi
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.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; }
- if (power_state == AC_PWRST_D0)
return state;msleep(100);
}
Reloading snd-hda-intel does not trigger the noise, but it helps. I've noticed that the clicks appear when loading/reloading pulseaudio.
$ pulseaudio -k
will spawn a new child in background (probably asked by kmix) and immediately I hear the noise. Reloading the driver makes the problem go away.
Hm. It's a bit inconsistent, but still this can be only at the full power up sequence.
telinit 3 does nothing for me (Gentoo seems to have things wired differently). Manually reloading alsasound (/etc/init.d/alsasound) did not trigger the problem either.
However! Your patch seems to work. Cold boot, pulseaudio restart and nothing. Not a peep. :-)
OK, could you try to reduce the sleep value from 100 to 10? Does it still work?
... and check whether the patch below works instead. This is a better place if it really fixes. The former patch is in the common path every driver uses while this is codec-specific.
thanks,
Takashi
--- diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.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 *codec)
spec = codec->spec; spec->gen.shared_mic_vref_pin = 0x18; - if (codec->core.vendor_id != 0x10ec0292) + if (codec->core.vendor_id == 0x10ec0292) + msleep(100); /* for avoiding click noise at power up */ + else codec->power_save_node = 1;
snd_hda_pick_fixup(codec, alc269_fixup_models,