[alsa-devel] pci/hda/patch_via.c - broken between 2.6.36 and 2.6.37 (bisected)
Raymond Yau
superquad.vortex2 at gmail.com
Mon Feb 21 09:26:37 CET 2011
2011/2/21 Mark Goldstein <goldstein.mark at gmail.com>
> On Mon, Feb 21, 2011 at 5:01 AM, Raymond Yau
> <superquad.vortex2 at gmail.com> wrote:
> > 2011/2/20 Mark Goldstein <goldstein.mark at gmail.com>
> >
> >>
> >> 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).
> >>
> >
> > This may fix your vt1708s smart51 since only rear mic and line in are
> > retasked
> >
> >
> > static int is_smart51_pins(struct via_spec *spec, hda_nid_t pin)
> > {
> > const struct auto_pin_cfg *cfg = &spec->autocfg;
> > int i;
> > if (cfg->line_outs != 1)
> > return 0;
> > for (i = 0; i < cfg->num_inputs; i++) {
> > if (pin == cfg->inputs[i].pin) {
> > switch(cfg->inputs[i].type){
> > case AUTO_PIN_LINE_IN:
> > return 1;
> > case AUTO_PIN_MIC:
> > if (
> > strncmp(hda_get_autocfg_input_label(spec->codec,cfg,i),"Rear Mic",8) == 0
> )
> > return 1;
> > else
> > return 0;
> > default:
> > return 0;
> > }
> > }
> > }
> > return 0;
> > }
> >
> >
> http://git.alsa-project.org/?p=alsa-kernel.git;a=commit;h=1564b2878f5cf160f60af99d4dbca1dd7809ee8a
> >
> > Smart 5.1 is for 3-jacks model, to reuse input pins as outputs.
> > While off, they act as "line out" / "line in" / "mic in".
> > While on, they acts as "line out" / "back left/right" / "center/lfe".
>
> Hi Raymond,
> I've always had spart5.1 disabled and still Front Mic PIN has been
> configured as High Impedance and did not work until I changed the code
> as I described.
>
> What I see in this function (is_smart51_pins) is that pin type is
> checked the same way I tried, that is cfg->inputs[i].type is compared
> to AUTO_PIN_MIC and not "i" itself as in the code of
> via_auto_init_analog_input.
>
> So should the via_auto_init_analog_input be fixed? What do you think?
>
> BTW for some reason I can't see the link included in your mail, I'm
> getting: 403 Forbidden - No such project
>
> Thank you & regards,
> --
> Mark Goldstein
>
author Lydia Wang <lydiawang at viatech.com.cn>
Sat, 10 Oct 2009 11:07:52 +0000 (19:07 +0800)
committer Takashi Iwai <tiwai at suse.de>
Sun, 11 Oct 2009 15:56:53 +0000 (17:56 +0200)
commit 1564b2878f5cf160f60af99d4dbca1dd7809ee8a
tree 2224b34919c247b6bfacce32a81a0953036fc0c4
parent cdc1784d49258198df600fbc1d37c07d7eee5ed6
http://git.alsa-project.org/?p=alsa-kernel.git;a=commitdiff;h=1564b2878f5cf160f60af99d4dbca1dd7809ee8a;hp=cdc1784d49258198df600fbc1d37c07d7eee5ed6
in the patch , just only front mic
+ if (i == AUTO_PIN_FRONT_MIC) {
+ if (spec->codec_type == VT1708S) {
+ /* input = index 1 (AOW3) */
+ snd_hda_codec_write(
+ codec, nid, 0,
+ AC_VERB_SET_CONNECT_SEL, 1);
+ snd_hda_codec_amp_stereo(
+ codec, nid, HDA_OUTPUT,
+ 0, HDA_AMP_MUTE, HDA_AMP_UNMUTE);
+ }
+ }
but now become any mic
1406 if (cfg->inputs[i].type == AUTO_PIN_MIC) {
1407 if (spec->codec_type == VT1708S
1408 || spec->codec_type == VT1716S) {
1409 /* input = index 1 (AOW3) */
1410 snd_hda_codec_write(
1411 codec, nid, 0,
1412 AC_VERB_SET_CONNECT_SEL, 1);
1413 snd_hda_codec_amp_stereo(
1414 codec, nid, HDA_OUTPUT,
1415 0, HDA_AMP_MUTE,
HDA_AMP_UNMUTE);
1416 }
1417 }
1418 }
More information about the Alsa-devel
mailing list