[alsa-devel] [RFC PATCH] Inverted internal mic

Takashi Iwai tiwai at suse.de
Sat Jun 23 10:39:33 CEST 2012


At Fri, 22 Jun 2012 19:33:06 +0200,
David Henningsson wrote:
> 
> [1  <text/plain; ISO-8859-1 (7bit)>]
> On 06/22/2012 05:37 PM, Takashi Iwai wrote:
> > At Fri, 22 Jun 2012 17:27:51 +0200,
> > David Henningsson wrote:
> >>
> >> On 06/22/2012 02:46 PM, Takashi Iwai wrote:
> >>>    /*
> >>> + * Inverted digital-mic handling
> >>> + *
> >>> + * First off, it's a bit tricky.  The "Inverted Internal Mic Capture Switch"
> >>> + * gives the additional mute only to the right channel of the digital mic
> >>> + * capture stream.  This is a workaround for avoiding the almost silence
> >>> + * by summing the stereo stereo stream from some (known to be ForteMedia)
> >>
> >> Stereo stereo? It's "stereo" in stereo! :-)
> >
> > Yeah, quad channels.  Fixed now.
> >
> >>> + * digital mic unit.
> >>> + *
> >>> + * The logic is to call alc_inv_dmic_sync() after each action (possibly)
> >>> + * modifying ADC amp.  When the mute flag is set, it mutes the R-channel
> >>> + * without caching so that the cache can still keep the original value.
> >>> + * The cached value is then restored when the flag is set off or any other
> >>> + * than d-mic is used as the current input source.
> >>
> >> Ok, I get it now.
> >>
> >> There is a slight drawback with this (IMO a bit hacky) patch, and that
> >> is that you can get a short signal spike on the right channel when you
> >> turn "Capture Switch" on while "Inverted Capture" is off. Hopefully it
> >> is not a practical problem.
> >
> > Right, I fully admit it's hacky :)
> >
> > A good thing by this is, however, that it doesn't touch other parts
> > too intrusively but just wraps over it.
> >
> >> Thanks for looking at this long-standing problem :-)
> >
> > I'm going to commit it once after hearing the test with a real machine
> > from Eliot.
> 
> Hi,
> 
> I'm adding the machines I know of in the patch attached (please commit 
> together with your patch).
> 
> For users running Ubuntu 12.04 (I think Eliot does), I have also made a 
> dkms package for easy testing of these two patches, and I also asked 
> existing bug reporters to test it.
> 
> https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/1002978/+attachment/3200653/+files/alsa-hda-dkms_0.1_all.deb
> 
> Happy weekend!
> 
> -- 
> David Henningsson, Canonical Ltd.
> https://launchpad.net/~diwic
> [2 0001-ALSA-hda-Add-inverted-mic-quirks-for-Asus-U41SV-Acer.patch <text/x-patch (7bit)>]
> >From d4e041e6d5077b061eb99954e9d71a5ad5f8f4de Mon Sep 17 00:00:00 2001
> From: David Henningsson <david.henningsson at canonical.com>
> Date: Fri, 22 Jun 2012 19:12:10 +0200
> Subject: [PATCH] ALSA: hda - Add inverted mic quirks for Asus U41SV, Acer
>  1810TZ and AOD260
> 
> These machines have inverted phase on right channel for their
> internal mics.

These are all ALC269, and we have already a workaround using the
hardware COEF verb.  Could you check whether it works or not?
There are variants for alc269, alc269vb and alc271.  One of them
might match.

The patch below adds model strings for these fixups for convenience.


Takashi

---
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 41475ae..ed40c91 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -6031,6 +6031,9 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
 static const struct alc_model_fixup alc269_fixup_models[] = {
 	{.id = ALC269_FIXUP_AMIC, .name = "laptop-amic"},
 	{.id = ALC269_FIXUP_DMIC, .name = "laptop-dmic"},
+	{.id = ALC269_FIXUP_STEREO_DMIC, .name = "alc269-dmic"},
+	{.id = ALC269VB_FIXUP_DMIC, .name = "alc269vb-dmic"},
+	{.id = ALC271_FIXUP_DMIC, .name = "alc271-dmic"},
 	{}
 };
 


More information about the Alsa-devel mailing list