[alsa-devel] pci/hda/patch_via.c - broken between 2.6.36 and 2.6.37 (bisected)

David Henningsson david.henningsson at canonical.com
Mon Feb 21 09:35:25 CET 2011


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 at 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


More information about the Alsa-devel mailing list