[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 00:39:38 CET 2011
2011/2/20 Wolfgang Scheicher <wolfgang.scheicher at gmail.com>
> On Sunday 20 February 2011 14:27:52 you wrote:
> > 2011/2/20 Wolfgang Scheicher <wolfgang.scheicher at gmail.com>
> >
> >> After the mentioned Kernel upgrade quite a view things went wrong on my
> >> hardware ( http://www.asrock.com/mb/overview.asp?Model=890GM%20Pro3 ):
> >>
> >> * Microphone doesn't work anymore. neither the front mic nor the rear
> >> one. Tried all thinkable settings.
> >>
> >> * Increasing Microphone levels leads to some strange internal feedback.
> >> That
> >> means, at some point when the feedback starts, it just starts, but i
> have
> >> no
> >> clue what audio source did actually trigger it.
> >>
> >> * Touching the mixer channel "Smart 5.1" in alsamixer makes alsamicer
> >> crash.
> >
> > Refer to the user manual , the motherboard has 5 audio jacks in rear
> panel,
> >
> > 7.1 need retasking of Line in (blue jacks) as side
> >
> > Audio Output Channels Front Speaker Rear Speaker Central / Bass Line In
> > (No. 9) (No. 6) (No. 5) (No. 8)
> > 2 V -- -- --
> > 4 V V -- --
> > 6 V V V --
> > 8 V V V V
>
> Forgive me, but i don't understand.
> I hope this doesn't mean i have to solder on my Mainboard if i intend to
> use a
> newer kernel.
>
> If there is something i can do, please explain in more detail.
>
> --
> Worf
>
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".
If the driver use "Smart5.1 switch" for those 5-jacks model, you will need
to modify the function is_smart51_pins()
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 == 4)
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 (cfg->line_outs == 3 || cfg->line_outs == 1);
case AUTO_PIN_MIC:
if (
strncmp(hda_get_autocfg_input_label(spec->codec,cfg,i),"Rear Mic",8)
== 0 )
return (cfg->line_outs == 1);
}
}
}
return 0;
}
More information about the Alsa-devel
mailing list