[alsa-devel] [PATCH] AD1986A 6-channel bugs

zhejiang zhe.jiang at intel.com
Thu Oct 25 09:05:40 CEST 2007


Hi,

I have a ICH8M + AD1986A machine.

In 6 channel modes, if adjust the volumes when playing 2-channel or
4-channel music, codec will be muted and all widget's Amp-Out vals will
be reset. If you play 2-channel files in 6 channel modes,there is noise
in the jacks.

By doing experiments, I found that the 6-channel bug was caused by
sharing channels.

If play 2-channel audio file,the rest channels will share channels with
the first 2-channel. 

The HDA spec doesn’t define the exact behavior under such circumstances.

Majority of the codec chips support sharing channel, but seem that
AD1986A doesn’t support.

I wrote a patch and tested it in my hardware,now it works well.

diff -Nur a/alsa-driver-1.0.15/alsa-kernel/pci/hda/hda_codec.c
b/alsa-driver-1.0.15/alsa-kernel/pci/hda/hda_codec.c
--- a/alsa-driver-1.0.15/alsa-kernel/pci/hda/hda_codec.c	2007-10-25
10:03:29.000000000 -0400
+++ b/alsa-driver-1.0.15/alsa-kernel/pci/hda/hda_codec.c	2007-10-25
10:02:46.000000000 -0400
@@ -2506,7 +2506,8 @@
 		if (chs >= (i + 1) * 2) /* independent out */
 			snd_hda_codec_setup_stream(codec, nids[i], stream_tag,
 						   i * 2, format);
-		else /* copy front */
+		else if (codec->vendor_id != 0x11d41986)
+			/* copy front if it is NOT AD1986A*/
 			snd_hda_codec_setup_stream(codec, nids[i], stream_tag,
 						   0, format);
 	}


In alsa bugzilla and maillist, I found a lot of issues about AD1986A
6-channel .Anybody know the detail about AD1986A codec chip and give any
comments?

Here is a old description of the issue.

>
> Hi,
>
> I have a ICH8M + AD1986A machine and run alsa-driver-1.0.15rc.
>
> I found that :
> In 6 channel mode,if adjust the front or pcm volume when playing
music,
> all channel will be muted,but if adjust the volume alone(don't play
> music at the same time),every thing is ok.
> I use printk to display the verb in the azx_send_cmd(),
> when adjusting the volume in either case, there are just two verb
> (0x300) sent to the nid(0x1b) [correct action].
> But in the first case, the dac widget amp-out vals are all affected.
>
>
> Some other interesting thing,
> If i adjust the Sur or CLFE volume when playing music, the printk show
> that correct verb is sent, but the codec status don't change.
> If I adjust them alone,every thing is ok.


More information about the Alsa-devel mailing list