At Tue, 20 May 2014 18:58:26 +0200, Gabriele Mazzotta wrote:
On Tuesday 20 May 2014 18:06:53, Takashi Iwai tiwai@suse.de wrote:
At Tue, 20 May 2014 17:59:30 +0200, Gabriele Mazzotta wrote:
On Thursday 15 May 2014 21:56:23, Gabriele Mazzotta gabriele.mzt@gmail.com wrote:
On Wednesday 14 May 2014 16:31:13, Gabriele Mazzotta
gabriele.mzt@gmail.com wrote:
I'm sorry, I was wrong. This patch does not help. I'm still trying to understand what temporarily fixed the problem, I was quite sure this patch
did
it, but all of the sudden the noise came back. I'm still trying to find the real cause, but I doubt I'll succeed.
Regards, Gabriele
I have to correct myself again, the first patch I submitted is working, I'm sorry. However, it seems that disabling the AA-loopback path is not necessary, muting the input 0x0b in node 0x0c (as it was suggested here: https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1252733/comments/...) is enough to get rid of the white noise.
This reminds me of a similar problem reported on Sony VAIO. https://bugzilla.novell.com/show_bug.cgi?id=873704
The codec is different, it's ALC275, though.
What is the proper way to fix this problem?
Just to be sure: does the mic input itself work correctly?
Unfortunately, I cannot test it.
Maybe the easiest fix would be disabling the aamix, indeed. But you shouldn't apply it generically to ALC668. I'm sure that it's pretty specific to machines, not codec chips. So, create a fixup function that matches with your machine instead.
Yes, you are probably right. All I know is that this bug affect the XPS13, XPS12 and XPS15.
Is the following patch OK?
ALSA: hda - White noise fix for XPS13 9333
Disable the AA-loopback path to get rid of the constant white noise that can be heard when headphones are used.
Signed-off-by: Gabriele Mazzotta gabriele.mzt@gmail.com
Looks good, so applied now. Thanks.
Takashi
sound/pci/hda/patch_realtek.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 49e884f..a2c4374 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c @@ -3894,6 +3894,16 @@ static void alc_fixup_no_shutup(struct hda_codec *codec, } }
+static void alc_fixup_disable_aamix(struct hda_codec *codec,
const struct hda_fixup *fix, int action)
+{
if (action == HDA_FIXUP_ACT_PRE_PROBE) {
struct alc_spec *spec = codec->spec;
/* Disable AA-loopback as it causes white noise */
spec->gen.mixer_nid = 0;
}
+}
static void alc_fixup_headset_mode_alc668(struct hda_codec *codec, const struct hda_fixup *fix, int action) { @@ -5313,6 +5323,7 @@ enum { ALC662_FIXUP_BASS_1A, ALC662_FIXUP_BASS_CHMAP, ALC668_FIXUP_AUTO_MUTE,
ALC668_FIXUP_DELL_DISABLE_AAMIX,
};
static const struct hda_fixup alc662_fixups[] = { @@ -5479,6 +5490,12 @@ static const struct hda_fixup alc662_fixups[] = { .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_inv_dmic_0x12, },
[ALC668_FIXUP_DELL_DISABLE_AAMIX] = {
.type = HDA_FIXUP_FUNC,
.v.func = alc_fixup_disable_aamix,
.chained = true,
.chain_id = ALC668_FIXUP_DELL_MIC_NO_PRESENCE
}, [ALC668_FIXUP_AUTO_MUTE] = { .type = HDA_FIXUP_FUNC, .v.func = alc_fixup_auto_mute_via_amp,
@@ -5539,7 +5556,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = { SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE), SND_PCI_QUIRK(0x1028, 0x05d8, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE), SND_PCI_QUIRK(0x1028, 0x05db, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE),
SND_PCI_QUIRK(0x1028, 0x060a, "Dell XPS 13", ALC668_FIXUP_DELL_MIC_NO_PRESENCE),
SND_PCI_QUIRK(0x1028, 0x060a, "Dell XPS 13", ALC668_FIXUP_DELL_DISABLE_AAMIX), SND_PCI_QUIRK(0x1028, 0x0623, "Dell", ALC668_FIXUP_AUTO_MUTE), SND_PCI_QUIRK(0x1028, 0x0624, "Dell", ALC668_FIXUP_AUTO_MUTE), SND_PCI_QUIRK(0x1028, 0x0625, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE),
-- 2.0.0.rc2