On Wed, Apr 18, 2007 at 02:29:47PM +0200, Takashi Iwai wrote:
At Fri, 13 Apr 2007 12:21:51 +0200, I wrote:
At Fri, 13 Apr 2007 00:11:41 +0300, Dan Aloni wrote:
[...]
Okay, so based on the 2.6.21-rc6 codebase:
position_fix=1 fixed the clicks.
Concerning the speakers - I have found that if I swap the orange and black - it works.
I had a similar bug report once and it was also an 8-channel device. Could you try the patch below?
Dan, did you try it?
I just reverted my own changes and tried your patch - it didn't fix the problem.
_From what I figured, for my card (where cfg->line_outs == 4) the code from below should be like this:
case 4: if ([Abit-AW9D-MAX ALC822 quirk]) { nid = cfg->line_out_pins[2]; cfg->line_out_pins[2] = cfg->line_out_pins[3]; cfg->line_out_pins[3] = nid; } else { nid = cfg->line_out_pins[1]; cfg->line_out_pins[1] = cfg->line_out_pins[3]; cfg->line_out_pins[3] = cfg->line_out_pins[2]; cfg->line_out_pins[2] = nid; } break;
Explanation:
case 4 originally does {1<=3,3<=2,2<=1}, my working fix effectively adds {1<=2,2<=1}, which means we need to do {1<=1,3<=2,2<=3}, or just {3<=2,2<=3}.
Right?
diff -r 3f196675e724 pci/hda/hda_codec.c --- a/pci/hda/hda_codec.c Fri Aug 04 19:08:03 2006 +0200 +++ b/pci/hda/hda_codec.c Mon Aug 07 14:55:42 2006 +0200 @@ -2122,16 +2122,19 @@ int snd_hda_parse_pin_def_config(struct */ switch (cfg->line_outs) { case 3:
- case 4: nid = cfg->line_out_pins[1]; cfg->line_out_pins[1] = cfg->line_out_pins[2]; cfg->line_out_pins[2] = nid; break;
+#if 0 /* seems wrong */ case 4: nid = cfg->line_out_pins[1]; cfg->line_out_pins[1] = cfg->line_out_pins[3]; cfg->line_out_pins[3] = cfg->line_out_pins[2]; cfg->line_out_pins[2] = nid; break; +#endif }