All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: ALC882 on Abit AW9D-MAX
       [not found]       ` <s5hd521hnlw.wl%tiwai@suse.de>
@ 2007-04-20 10:49         ` Dan Aloni
  2007-04-20 11:00           ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Aloni @ 2007-04-20 10:49 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

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

-- 
Dan Aloni
XIV LTD, http://www.xivstorage.com
da-x (at) monatomic.org, dan (at) xiv.co.il

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ALC882 on Abit AW9D-MAX
  2007-04-20 10:49         ` ALC882 on Abit AW9D-MAX Dan Aloni
@ 2007-04-20 11:00           ` Takashi Iwai
  2007-04-20 11:13             ` Dan Aloni
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2007-04-20 11:00 UTC (permalink / raw)
  To: Dan Aloni; +Cc: alsa-devel

At Fri, 20 Apr 2007 13:49:47 +0300,
Dan Aloni wrote:
> 
> 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?

Sounds so.  Could you attach the content of /proc/asound/card0/codec#*
file to re-check?

thanks,

Takashi

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ALC882 on Abit AW9D-MAX
  2007-04-20 11:00           ` Takashi Iwai
@ 2007-04-20 11:13             ` Dan Aloni
  2007-04-20 14:28               ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Aloni @ 2007-04-20 11:13 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Fri, Apr 20, 2007 at 01:00:03PM +0200, Takashi Iwai wrote:
> At Fri, 20 Apr 2007 13:49:47 +0300,
> Dan Aloni wrote:
[...]
> > 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?
> 
> Sounds so.  Could you attach the content of /proc/asound/card0/codec#*
> file to re-check?

Okay. I got the following output *with* my fix applied:

Codec: Realtek ALC882
Address: 0
Vendor Id: 0x10ec0882
Subsystem Id: 0x147ba501
Revision Id: 0x100101
Default PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Default Amp-In caps: N/A
Default Amp-Out caps: N/A
Node 0x02 [Audio Output] wcaps 0x11: Stereo
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Node 0x03 [Audio Output] wcaps 0x11: Stereo
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Node 0x04 [Audio Output] wcaps 0x11: Stereo
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Node 0x05 [Audio Output] wcaps 0x11: Stereo
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Node 0x06 [Audio Output] wcaps 0x211: Stereo Digital
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0x1e]: 16 20 24 32
    formats [0x1]: PCM
Node 0x07 [Audio Input] wcaps 0x10011b: Stereo Amp-In
  Amp-In caps: ofs=0x08, nsteps=0x1f, stepsize=0x05, mute=1
  Amp-In vals:  [0x00 0x00]
  PCM:
    rates [0x160]: 44100 48000 96000
    bits [0x6]: 16 20
    formats [0x1]: PCM
  Connection: 1
     0x24
Node 0x08 [Audio Input] wcaps 0x10011b: Stereo Amp-In
  Amp-In caps: ofs=0x08, nsteps=0x1f, stepsize=0x05, mute=1
  Amp-In vals:  [0x00 0x00]
  PCM:
    rates [0x160]: 44100 48000 96000
    bits [0x6]: 16 20
    formats [0x1]: PCM
  Connection: 1
     0x23
Node 0x09 [Audio Input] wcaps 0x10011b: Stereo Amp-In
  Amp-In caps: ofs=0x08, nsteps=0x1f, stepsize=0x05, mute=1
  Amp-In vals:  [0x00 0x00]
  PCM:
    rates [0x160]: 44100 48000 96000
    bits [0x6]: 16 20
    formats [0x1]: PCM
  Connection: 1
     0x22
Node 0x0a [Audio Input] wcaps 0x100391: Stereo Digital
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0x1e]: 16 20 24 32
    formats [0x1]: PCM
  Connection: 1
     0x1f
Node 0x0b [Audio Mixer] wcaps 0x20010b: Stereo Amp-In
  Amp-In caps: ofs=0x17, nsteps=0x1f, stepsize=0x05, mute=1
  Amp-In vals:  [0x80 0x80] [0x18 0x18] [0x18 0x18] [0x00 0x00] [0x19 0x19] [0x97 0x97] [0x97 0x97] [0x97 0x97] [0x97 0x97] [0x97 0x97]
  Connection: 10
     0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17
Node 0x0c [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
  Amp-Out vals:  [0x17 0x17]
  Connection: 2
     0x02 0x0b
Node 0x0d [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
  Amp-Out vals:  [0x18 0x18]
  Connection: 2
     0x03 0x0b
Node 0x0e [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
  Amp-Out vals:  [0x18 0x18]
  Connection: 2
     0x04 0x0b
Node 0x0f [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
  Amp-Out vals:  [0x17 0x17]
  Connection: 2
     0x05 0x0b
Node 0x10 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x11 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x12 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x13 [Vendor Defined Widget] wcaps 0xf00000: Mono
Node 0x14 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x083f: IN OUT HP Detect
  Pin Default 0x01014010: [Jack] Line Out at Ext Rear
    Conn = 1/8, Color = Green
  Pin-ctls: 0x40: OUT
  Connection: 5
     0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x15 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x083f: IN OUT HP Detect
  Pin Default 0x01018012: [Jack] Line Out at Ext Rear
    Conn = 1/8, Color = Purple
  Pin-ctls: 0x40: OUT
  Connection: 5
     0x0c 0x0d* 0x0e 0x0f 0x26
Node 0x16 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x083f: IN OUT HP Detect
  Pin Default 0x01011011: [Jack] Line Out at Ext Rear
    Conn = 1/8, Color = Black
  Pin-ctls: 0x40: OUT
  Connection: 5
     0x0c 0x0d 0x0e* 0x0f 0x26
Node 0x17 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x00 0x00]
  Pincap 0x083f: IN OUT HP Detect
  Pin Default 0x01016014: [Jack] Line Out at Ext Rear
    Conn = 1/8, Color = Orange
  Pin-ctls: 0x40: OUT
  Connection: 5
     0x0c 0x0d 0x0e 0x0f* 0x26
Node 0x18 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x08173f: IN OUT HP Detect
  Pin Default 0x01a19830: [Jack] Mic at Ext Rear
    Conn = 1/8, Color = Pink
  Pin-ctls: 0x24: IN
  Connection: 5
     0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x19 [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x08173f: IN OUT HP Detect
  Pin Default 0x02a1983f: [Jack] Mic at Ext Front
    Conn = 1/8, Color = Pink
  Pin-ctls: 0x24: IN
  Connection: 5
     0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x1a [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x08173f: IN OUT HP Detect
  Pin Default 0x01813031: [Jack] Line In at Ext Rear
    Conn = 1/8, Color = Blue
  Pin-ctls: 0x20: IN
  Connection: 5
     0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x1b [Pin Complex] wcaps 0x40018f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x27, mute=0
  Amp-In vals:  [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x08173f: IN OUT HP Detect
  Pin Default 0x02214c1f: [Jack] HP Out at Ext Front
    Conn = 1/8, Color = Green
  Pin-ctls: 0xc0: OUT HP
  Connection: 5
     0x0c* 0x0d 0x0e 0x0f 0x26
Node 0x1c [Pin Complex] wcaps 0x400001: Stereo
  Pincap 0x0820: IN
  Pin Default 0x99330132: [Fixed] CD at Int ATAPI
    Conn = ATAPI, Color = Unknown
  Pin-ctls: 0x00:
Node 0x1d [Pin Complex] wcaps 0x400000: Mono
  Pincap 0x0820: IN
  Pin Default 0x99830133: [Fixed] Line In at Int ATAPI
    Conn = ATAPI, Color = Unknown
  Pin-ctls: 0x00:
Node 0x1e [Pin Complex] wcaps 0x400300: Mono Digital
  Pincap 0x0810: OUT
  Pin Default 0x01451120: [Jack] SPDIF Out at Ext Rear
    Conn = Optical, Color = Black
  Pin-ctls: 0x00:
  Connection: 1
     0x06
Node 0x1f [Pin Complex] wcaps 0x400200: Mono Digital
  Pincap 0x0820: IN
  Pin Default 0x01c53140: [Jack] SPDIF In at Ext Rear
    Conn = Optical, Color = Blue
  Pin-ctls: 0x00:
Node 0x20 [Vendor Defined Widget] wcaps 0xf00040: Mono
Node 0x21 [Volume Knob Widget] wcaps 0x600080: Mono
Node 0x22 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x00 0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
  Amp-Out caps: N/A
  Amp-Out vals:  [0x00 0x00]
  Connection: 11
     0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b
Node 0x23 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x00 0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
  Amp-Out caps: N/A
  Amp-Out vals:  [0x00 0x00]
  Connection: 11
     0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b
Node 0x24 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x80 0x80] [0x80 0x80] [0x00 0x00] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80] [0x80 0x80]
  Amp-Out caps: N/A
  Amp-Out vals:  [0x00 0x00]
  Connection: 11
     0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x14 0x15 0x16 0x17 0x0b
Node 0x25 [Audio Output] wcaps 0x11: Stereo
  PCM:
    rates [0x560]: 44100 48000 96000 192000
    bits [0xe]: 16 20 24
    formats [0x1]: PCM
Node 0x26 [Audio Mixer] wcaps 0x20010f: Stereo Amp-In Amp-Out
  Amp-In caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-In vals:  [0x00 0x00] [0x00 0x00]
  Amp-Out caps: ofs=0x1f, nsteps=0x1f, stepsize=0x05, mute=0
  Amp-Out vals:  [0x1f 0x1f]
  Connection: 2
     0x25 0x0b


-- 
Dan Aloni
XIV LTD, http://www.xivstorage.com
da-x (at) monatomic.org, dan (at) xiv.co.il

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ALC882 on Abit AW9D-MAX
  2007-04-20 11:13             ` Dan Aloni
@ 2007-04-20 14:28               ` Takashi Iwai
  2007-07-09 21:20                 ` Dan Aloni
  0 siblings, 1 reply; 6+ messages in thread
From: Takashi Iwai @ 2007-04-20 14:28 UTC (permalink / raw)
  To: Dan Aloni; +Cc: alsa-devel

At Fri, 20 Apr 2007 14:13:18 +0300,
Dan Aloni wrote:
> 
> On Fri, Apr 20, 2007 at 01:00:03PM +0200, Takashi Iwai wrote:
> > At Fri, 20 Apr 2007 13:49:47 +0300,
> > Dan Aloni wrote:
> [...]
> > > 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?
> > 
> > Sounds so.  Could you attach the content of /proc/asound/card0/codec#*
> > file to re-check?
> 
> Okay. I got the following output *with* my fix applied:

Thanks.  Apparently the default pin config values are wrong, so it's a
BIOS bug.

I reread the pin-configuration spec and my last patch is correct.  The
configuration of 7.1 outputs is Front/CLFE/Rear/Side.  So, I committed
a patch to HG tree.

Now about your fix.  I think the best way is to override the pin
default configuration.  The patch below is the fix on the top of the
latest ALSA HG tree.  Use hg.alsa-project.org since
hg-mirror.alsa-project.org seems (again) out of sync right now.

I have a plan (even high position of my TODO list :) to move the
HD-audio configuration parser to user-space so that this kind of hack
/ fix would be more easily done.


Takashi

diff -r 67cb6a84c18a pci/hda/patch_realtek.c
--- a/pci/hda/patch_realtek.c	Fri Apr 20 16:11:43 2007 +0200
+++ b/pci/hda/patch_realtek.c	Fri Apr 20 16:16:25 2007 +0200
@@ -679,6 +679,38 @@ static void alc_subsystem_id(struct hda_
 		snd_hda_codec_write(codec, 0x1a, 0, AC_VERB_SET_PROC_COEF,
 				    (tmp == 5 ? 0x3040 : 0x3050));
 		break;
+	}
+}
+
+/*
+ * Fix-up pin default configurations
+ */
+
+struct alc_pincfg {
+	hda_nid_t nid;
+	u32 val;
+};
+
+static void alc_fix_pincfg(struct hda_codec *codec,
+			   const struct snd_pci_quirk *quirk,
+			   const struct alc_pincfg **pinfix)
+{
+	const struct alc_pincfg *cfg;
+
+	quirk = snd_pci_quirk_lookup(codec->bus->pci, quirk);
+	if (!quirk)
+		return;
+
+	cfg = pinfix[quirk->value];
+	for (; cfg->nid; cfg++) {
+		int i;
+		u32 val = cfg->val;
+		for (i = 0; i < 4; i++) {
+			snd_hda_codec_write(codec, cfg->nid, 0,
+				    AC_VERB_SET_CONFIG_DEFAULT_BYTES_0 + i,
+				    val & 0xff);
+			val >>= 8;
+		}
 	}
 }
 
@@ -5133,6 +5165,29 @@ static struct alc_config_preset alc882_p
 
 
 /*
+ * Pin config fixes
+ */
+enum { 
+	PINFIX_ABIT_AW9D_MAX
+};
+
+static struct alc_pincfg alc882_abit_aw9d_pinfix[] = {
+	{ 0x15, 0x01080104 }, /* side */
+	{ 0x16, 0x01011012 }, /* rear */
+	{ 0x17, 0x01016011 }, /* clfe */
+	{ }
+};
+
+static const struct alc_pincfg *alc882_pin_fixes[] = {
+	[PINFIX_ABIT_AW9D_MAX] = alc882_abit_aw9d_pinfix,
+};
+
+static struct snd_pci_quirk alc882_pinfix_tbl[] = {
+	SND_PCI_QUIRK(0x147b, 0x107a, "Abit AW9D-MAX", PINFIX_ABIT_AW9D_MAX),
+	{}
+};
+
+/*
  * BIOS auto configuration
  */
 static void alc882_auto_set_output_and_unmute(struct hda_codec *codec,
@@ -5253,6 +5308,8 @@ static int patch_alc882(struct hda_codec
 			board_config = ALC882_AUTO;
 		}
 	}
+
+	alc_fix_pincfg(codec, alc882_pinfix_tbl, alc882_pin_fixes);
 
 	if (board_config == ALC882_AUTO) {
 		/* automatic parse from the BIOS config */

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ALC882 on Abit AW9D-MAX
  2007-04-20 14:28               ` Takashi Iwai
@ 2007-07-09 21:20                 ` Dan Aloni
  2007-07-10  9:32                   ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Dan Aloni @ 2007-07-09 21:20 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

On Fri, Apr 20, 2007 at 04:28:09PM +0200, Takashi Iwai wrote:
> At Fri, 20 Apr 2007 14:13:18 +0300,
> Dan Aloni wrote:
> > 
> > On Fri, Apr 20, 2007 at 01:00:03PM +0200, Takashi Iwai wrote:
> > > At Fri, 20 Apr 2007 13:49:47 +0300,
> > > Dan Aloni wrote:
> > [...]
> > > > 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?
> > > 
> > > Sounds so.  Could you attach the content of /proc/asound/card0/codec#*
> > > file to re-check?
> > 
> > Okay. I got the following output *with* my fix applied:
> 
> Thanks.  Apparently the default pin config values are wrong, so it's a
> BIOS bug.
> 
> I reread the pin-configuration spec and my last patch is correct.  The
> configuration of 7.1 outputs is Front/CLFE/Rear/Side.  So, I committed
> a patch to HG tree.
> 
> Now about your fix.  I think the best way is to override the pin
> default configuration.  The patch below is the fix on the top of the
> latest ALSA HG tree.  Use hg.alsa-project.org since
> hg-mirror.alsa-project.org seems (again) out of sync right now.

The patch works great with 2.6.22.

Thanks.

-- 
Dan Aloni
XIV LTD, http://www.xivstorage.com
da-x (at) monatomic.org, dan (at) xiv.co.il

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: ALC882 on Abit AW9D-MAX
  2007-07-09 21:20                 ` Dan Aloni
@ 2007-07-10  9:32                   ` Takashi Iwai
  0 siblings, 0 replies; 6+ messages in thread
From: Takashi Iwai @ 2007-07-10  9:32 UTC (permalink / raw)
  To: Dan Aloni; +Cc: alsa-devel

At Tue, 10 Jul 2007 00:20:54 +0300,
Dan Aloni wrote:
> 
> On Fri, Apr 20, 2007 at 04:28:09PM +0200, Takashi Iwai wrote:
> > At Fri, 20 Apr 2007 14:13:18 +0300,
> > Dan Aloni wrote:
> > > 
> > > On Fri, Apr 20, 2007 at 01:00:03PM +0200, Takashi Iwai wrote:
> > > > At Fri, 20 Apr 2007 13:49:47 +0300,
> > > > Dan Aloni wrote:
> > > [...]
> > > > > 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?
> > > > 
> > > > Sounds so.  Could you attach the content of /proc/asound/card0/codec#*
> > > > file to re-check?
> > > 
> > > Okay. I got the following output *with* my fix applied:
> > 
> > Thanks.  Apparently the default pin config values are wrong, so it's a
> > BIOS bug.
> > 
> > I reread the pin-configuration spec and my last patch is correct.  The
> > configuration of 7.1 outputs is Front/CLFE/Rear/Side.  So, I committed
> > a patch to HG tree.
> > 
> > Now about your fix.  I think the best way is to override the pin
> > default configuration.  The patch below is the fix on the top of the
> > latest ALSA HG tree.  Use hg.alsa-project.org since
> > hg-mirror.alsa-project.org seems (again) out of sync right now.
> 
> The patch works great with 2.6.22.

Thanks for confirmation.  It's merged to ALSA HG tree now.


Takashi

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-07-10  9:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20070412100959.GA8944@localdomain>
     [not found] ` <s5hmz1dwz2u.wl%tiwai@suse.de>
     [not found]   ` <20070412211141.GA8625@localdomain>
     [not found]     ` <s5hy7kwvakg.wl%tiwai@suse.de>
     [not found]       ` <s5hd521hnlw.wl%tiwai@suse.de>
2007-04-20 10:49         ` ALC882 on Abit AW9D-MAX Dan Aloni
2007-04-20 11:00           ` Takashi Iwai
2007-04-20 11:13             ` Dan Aloni
2007-04-20 14:28               ` Takashi Iwai
2007-07-09 21:20                 ` Dan Aloni
2007-07-10  9:32                   ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.