From patchwork Thu Aug 14 15:48:55 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takashi Iwai X-Patchwork-Id: 4724581 X-Patchwork-Delegate: tiwai@suse.de Return-Path: X-Original-To: patchwork-alsa-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 2387FC0338 for ; Thu, 14 Aug 2014 15:49:21 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 1D193201D3 for ; Thu, 14 Aug 2014 15:49:20 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.kernel.org (Postfix) with ESMTP id AAC0220160 for ; Thu, 14 Aug 2014 15:49:17 +0000 (UTC) Received: by alsa0.perex.cz (Postfix, from userid 1000) id 5C5562656CE; Thu, 14 Aug 2014 17:49:16 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,NO_DNS_FOR_FROM, UNPARSEABLE_RELAY autolearn=no version=3.3.1 Received: from alsa0.perex.cz (localhost [IPv6:::1]) by alsa0.perex.cz (Postfix) with ESMTP id E68D0265353; Thu, 14 Aug 2014 17:49:04 +0200 (CEST) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 30DE726567D; Thu, 14 Aug 2014 17:49:04 +0200 (CEST) Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id 168C2261600 for ; Thu, 14 Aug 2014 17:48:56 +0200 (CEST) Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 4C3D8ADA3; Thu, 14 Aug 2014 15:48:55 +0000 (UTC) Date: Thu, 14 Aug 2014 17:48:55 +0200 Message-ID: From: Takashi Iwai To: Julian Wollrath In-Reply-To: <20140814172658.75bd122f@saldaea> References: <20140814114003.7b0019f3@saldaea> <53EC8D5B.5020709@ladisch.de> <20140814124616.65991d7e@saldaea> <20140814160737.0e8fc283@saldaea> <20140814163914.08e9a851@saldaea> <20140814170459.31428e0b@saldaea> <20140814172658.75bd122f@saldaea> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/24.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Cc: alsa-devel@alsa-project.org, Clemens Ladisch Subject: Re: [alsa-devel] Grey noise with HDA Intel PCH X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP At Thu, 14 Aug 2014 17:26:58 +0200, Julian Wollrath wrote: > > Am Thu, 14 Aug 2014 17:11:32 +0200 > schrieb Takashi Iwai : > > > At Thu, 14 Aug 2014 17:04:59 +0200, > > Julian Wollrath wrote: > > > > > > Am Thu, 14 Aug 2014 16:47:46 +0200 > > > schrieb Takashi Iwai : > > > > > > > At Thu, 14 Aug 2014 16:39:14 +0200, > > > > Julian Wollrath wrote: > > > > > > > > > > Am Thu, 14 Aug 2014 16:09:51 +0200 > > > > > schrieb Takashi Iwai : > > > > > > > > > > > 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),