All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Julian Wollrath <jwollrath@web.de>
Cc: alsa-devel@alsa-project.org, Clemens Ladisch <clemens@ladisch.de>
Subject: Re: Grey noise with HDA Intel PCH
Date: Thu, 14 Aug 2014 17:48:55 +0200	[thread overview]
Message-ID: <s5hppg3xeag.wl-tiwai@suse.de> (raw)
In-Reply-To: <20140814172658.75bd122f@saldaea>

At Thu, 14 Aug 2014 17:26:58 +0200,
Julian Wollrath wrote:
> 
> Am Thu, 14 Aug 2014 17:11:32 +0200
> schrieb Takashi Iwai <tiwai@suse.de>:
> 
> > At Thu, 14 Aug 2014 17:04:59 +0200,
> > Julian Wollrath wrote:
> > > 
> > > Am Thu, 14 Aug 2014 16:47:46 +0200
> > > schrieb Takashi Iwai <tiwai@suse.de>:
> > > 
> > > > At Thu, 14 Aug 2014 16:39:14 +0200,
> > > > Julian Wollrath wrote:
> > > > > 
> > > > > Am Thu, 14 Aug 2014 16:09:51 +0200
> > > > > schrieb Takashi Iwai <tiwai@suse.de>:
> > > > > 
> > > > > > At Thu, 14 Aug 2014 16:07:37 +0200,
> > > > > > Julian Wollrath wrote:
> > > > > > > 
> > > > > > > > > > > Simple mixer control 'Mic',0
> > > > > > > > > > >   Front Left: Playback 0 [0%] [-34.50dB] [on]
> > > > > > > > > > >   Front Right: Playback 0 [0%] [-34.50dB] [on]
> > > > > > > > > > 
> > > > > > > > > > This plays any noise from the mic input.
> > > > > > > > > Turning it off makes no difference since capture is
> > > > > > > > > turned off anyway:
> > > > > > > > 
> > > > > > > > This is a loopback mixer element, it has nothing to do
> > > > > > > > with capture stream.
> > > > > > > > 
> > > > > > > > The likely culprit of the static noises is the signal
> > > > > > > > from the analog loopback.  In some cases, you can disable
> > > > > > > > the whole loopback via "Loopback Mixing" mixer element on
> > > > > > > > the fly.  In some cases, you'd need to disable each mixer
> > > > > > > > input (e.g. "Mic Playback Switch"). In some cases (e.g.
> > > > > > > > on some Sony and Dell laptops), you'd need to disable the
> > > > > > > > complete analog loopback at the initialization.
> > > > > > > > 
> > > > > > > > The last one can be done via the early patching or sysfs
> > > > > > > > reconfiguration, pass "mixer_nid = 0" hint.  See
> > > > > > > > HD-Audio.txt for a brief instruction.
> > > > > > > Sadly, that did not help.
> > > > > > 
> > > > > > Give alsa-info.sh output after your change to verify whether
> > > > > > you did correctly.
> > > > > Here it is, cheers:
> > > > 
> > > > Thanks.  The setup looks OK, the path is:
> > > >   DAC (0x02) -> mixer (0x0c) -> mixer (0x14)
> > > > and the mixer mutes the loopback path (index 1).
> > > > 
> > > > Is it the state where you still hear the static noise?
> > > Yes, the alsa-info.sh script was executed, while hearing the static
> > > noise.
> > 
> > OK.  And if you mute "Speaker" or "Headphone", the noise is gone, too,
> > right?
> No, if I mute "Speaker" (the internal laptop speaker) it is not gone. It
> is only gone, if I mute "Master" or have a headphone plugged in and
> mute "Headphone" or "Master".

Interesting.  The "Speaker" mute changes "Speaker Playback Switch",
and as you can see in alsa-info.sh output, this toggles the mute of
the speaker pin NID 0x14, i.e. the endpoint.  If "Master" influences,
it means to mute *both* Headphone and Speaker mutes would work.
Could you check this?

> More fascinating, it is not present, if the speaker is not muted and I
> disable powersaving via "echo '0' >
> '/sys/module/snd_hda_intel/parameters/power_save'" but even then, it is
> still present on the headphone.

Hm.  Is the noise audible when you playback a PCM stream, too?
For example, you can play a silent stream.

> > > > Also, what if you use the module option for snd-hda-intel
> > > > model=nofixup or model=generic?
> > > That did not change anything either. Passing the "mixer_nid = 0"
> > > hint also did not get rid of the static noise, when loading
> > > snd-hda-intel with model=nofixup resp. model=generic.
> > 
> > Did you reboot with setting the option in /etc/modprobe.d/*?
> > Reloading the module might not work for such a problem.
> No, I just unloaded every sound-related module and than loaded the
> module via "modprobe snd-hda-intel model=..." again.

Then always test with reboot.  The problem is about the
vendor-specific setups, and it's often sticky unless the cold boot.
At best, do the cold boot.  The warm boot doesn't cure always.

> > In either way, there should be some difference in alsa-info.sh output,
> > e.g. more (or less) mixer items with the model option.
> The difference is their, all the "Dock ..." entries were missing, when
> loading with the model="..." option.

Yes, and you should also see the difference in the kernel messages.

Another thing to check is to swap the DAC assignment.  There was a
similar problem on some Sony laptops, and we had to swap the DAC
assignment since the hardware seems to have some implicit assumption
of the DAC.  A test patch is below.


Takashi

---
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 6b38ec3c6e57..10c47a0e6c70 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -3280,6 +3280,22 @@ static void alc269_fixup_pincfg_no_hp_to_lineout(struct hda_codec *codec,
 		spec->parse_flags = HDA_PINCFG_NO_HP_FIXUP;
 }
 
+static void alc269_fixup_thinkpad_dac_bind(struct hda_codec *codec,
+					   const struct hda_fixup *fix,
+					   int action)
+{
+	struct alc_spec *spec = codec->spec;
+	static hda_nid_t preferred_pairs[] = {
+		0x15, 0x02,
+		0x1b, 0x02,
+		0x14, 0x03,
+		0,
+	};
+
+	if (action == HDA_FIXUP_ACT_PRE_PROBE)
+		spec->gen.preferred_dacs = preferred_pairs;
+}
+
 static void alc269_fixup_hweq(struct hda_codec *codec,
 			       const struct hda_fixup *fix, int action)
 {
@@ -4358,6 +4374,7 @@ enum {
 	ALC269_FIXUP_HP_LINE1_MIC1_LED,
 	ALC269_FIXUP_INV_DMIC,
 	ALC269_FIXUP_LENOVO_DOCK,
+	ALC269_FIXUP_THINKPAD_DAC_BIND,
 	ALC269_FIXUP_NO_SHUTUP,
 	ALC286_FIXUP_SONY_MIC_NO_PRESENCE,
 	ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
@@ -4576,6 +4593,12 @@ static const struct hda_fixup alc269_fixups[] = {
 		.chained = true,
 		.chain_id = ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT
 	},
+	[ALC269_FIXUP_THINKPAD_DAC_BIND] = {
+		.type = HDA_FIXUP_FUNC,
+		.v.func = alc269_fixup_thinkpad_dac_bind,
+		.chained = true,
+		.chain_id = ALC269_FIXUP_LENOVO_DOCK,
+	},
 	[ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT] = {
 		.type = HDA_FIXUP_FUNC,
 		.v.func = alc269_fixup_pincfg_no_hp_to_lineout,
@@ -5044,7 +5067,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 	SND_PCI_QUIRK(0x17aa, 0x21ca, "Thinkpad L412", ALC269_FIXUP_SKU_IGNORE),
 	SND_PCI_QUIRK(0x17aa, 0x21e9, "Thinkpad Edge 15", ALC269_FIXUP_SKU_IGNORE),
 	SND_PCI_QUIRK(0x17aa, 0x21f6, "Thinkpad T530", ALC269_FIXUP_LENOVO_DOCK),
-	SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_LENOVO_DOCK),
+	SND_PCI_QUIRK(0x17aa, 0x21fa, "Thinkpad X230", ALC269_FIXUP_THINKPAD_DAC_BIND),
 	SND_PCI_QUIRK(0x17aa, 0x21f3, "Thinkpad T430", ALC269_FIXUP_LENOVO_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x21fb, "Thinkpad T430s", ALC269_FIXUP_LENOVO_DOCK),
 	SND_PCI_QUIRK(0x17aa, 0x2203, "Thinkpad X230 Tablet", ALC269_FIXUP_LENOVO_DOCK),

  parent reply	other threads:[~2014-08-14 15:48 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-14  9:40 Grey noise with HDA Intel PCH Julian Wollrath
2014-08-14 10:20 ` Clemens Ladisch
2014-08-14 10:46   ` Julian Wollrath
2014-08-14 12:17     ` Takashi Iwai
2014-08-14 14:07       ` Julian Wollrath
2014-08-14 14:09         ` Takashi Iwai
2014-08-14 14:39           ` Julian Wollrath
2014-08-14 14:47             ` Takashi Iwai
2014-08-14 15:04               ` Julian Wollrath
2014-08-14 15:11                 ` Takashi Iwai
2014-08-14 15:26                   ` Julian Wollrath
2014-08-14 15:31                     ` Julian Wollrath
2014-08-14 15:48                     ` Takashi Iwai [this message]
2014-08-14 16:29                       ` Julian Wollrath
2014-08-15  6:02                         ` Takashi Iwai
2014-08-22 16:18                           ` Julian Wollrath
2014-08-23 18:40                             ` Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5hppg3xeag.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=clemens@ladisch.de \
    --cc=jwollrath@web.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.