At Mon, 21 Feb 2011 10:29:50 +0100, David Henningsson wrote:
On 2011-02-21 09:43, Mark Goldstein wrote:
On Mon, Feb 21, 2011 at 10:35 AM, David Henningsson david.henningsson@canonical.com wrote:
On 2011-02-20 12:06, Mark Goldstein wrote:
I think the Mic part might be the same problem I had. I found out that the following code:
static void via_auto_init_analog_input(struct hda_codec *codec) { struct via_spec *spec = codec->spec; const struct auto_pin_cfg *cfg =&spec->autocfg; unsigned int ctl; int i;
for (i = 0; i< cfg->num_inputs; i++) { hda_nid_t nid = cfg->inputs[i].pin; if (spec->smart51_enabled&& is_smart51_pins(spec, nid)) ctl = PIN_OUT; else if (i == AUTO_PIN_MIC) ^^^^^^^^^^^^^^^^^^^^^^^^^ ctl = PIN_VREF50; else ctl = PIN_IN; snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_PIN_WIDGET_CONTROL, ctl); }
}
configures correctly only the first MIC (in my case it was Rear MIC). Front Mic pin was configured as HiZ. Changing the underlined condition to
else if (cfg->input[i].type == AUTO_PIN_MIC)
resolved the issue for me. (In alsa driver 1.0.23 this code was different, it checked that i<= FRONT_MIC index).
I'm also just the user of alsa driver, so can't decide whether this is the proper fix. Maybe someone of knowledgeable developers could check it.
It looks like the proper fix to me. If you like the fame and fortune ;-) of having a commits in the kernel, I encourage you to submit a patch. Remember to have proper "Cc: stable@kernel.org" and "Signed-off-by" lines in the the patch header, and to cc Takashi on the resulting email.
If not, I'll be happy to do it for you. It seems like an important fix to me.
-- David Henningsson, Canonical Ltd. http://launchpad.net/~diwic
David,
I've never dealt with submitting patches, so probably it'll be better (and definitely faster) if you could do it.
Thank you,
Ok, here comes the patch!
Applied it now. Thanks!
Takashi
-- David Henningsson, Canonical Ltd. http://launchpad.net/~diwic [2 0001-ALSA-HDA-Fix-mic-initialization-in-VIA-auto-parser.patch <text/x-patch (7bit)>]
From a28dd20815b47134bc342a6ec9b9da6e80f59837 Mon Sep 17 00:00:00 2001
From: David Henningsson david.henningsson@canonical.com Date: Mon, 21 Feb 2011 10:23:18 +0100 Subject: [PATCH] ALSA: HDA: Fix mic initialization in VIA auto parser
This typo caused some microphone inputs not to be correctly initialized on VIA codecs.
Reported-By: Mark Goldstein goldstein.mark@gmail.com Cc: stable@kernel.org Signed-off-by: David Henningsson david.henningsson@canonical.com
sound/pci/hda/patch_via.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index a76c326..63b0054 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c @@ -567,7 +567,7 @@ static void via_auto_init_analog_input(struct hda_codec *codec) hda_nid_t nid = cfg->inputs[i].pin; if (spec->smart51_enabled && is_smart51_pins(spec, nid)) ctl = PIN_OUT;
else if (i == AUTO_PIN_MIC)
else ctl = PIN_IN;else if (cfg->inputs[i].type == AUTO_PIN_MIC) ctl = PIN_VREF50;
-- 1.7.1