[alsa-devel] [HDA Intel/STAC92xx] Alsa 1.0.14: error in stac92xx_auto_fill_dac_nid

Takashi Iwai tiwai at suse.de
Mon Jul 2 16:17:12 CEST 2007


At Mon, 02 Jul 2007 16:11:21 +0200,
I wrote:
> 
> At Sat, 30 Jun 2007 15:26:16 +0200,
> Jan de Mooij wrote:
> > 
> > I recompiled alsa-driver with --with-debug=full, and I attached the
> > files you asked for. In the dmesg file, alsa output starts on line
> > 453.
> > 
> > Thanks for your help. Please let me know if you need more information.
> 
> The output from kernel looks good.  So I wonder where the value 0x15
> came from at all.  Could you trace it, e.g. by adding printk's
> appropriately in stac92xx_auto_fill_dac_nids()?

After a further code-looking, I found a problematic part.
Could you try the patch below?


Takashi

diff -r 054dc7195722 pci/hda/patch_sigmatel.c
--- a/pci/hda/patch_sigmatel.c	Mon Jul 02 16:03:12 2007 +0200
+++ b/pci/hda/patch_sigmatel.c	Mon Jul 02 16:15:39 2007 +0200
@@ -1228,7 +1228,7 @@ static int is_in_dac_nids(struct sigmate
  * and 9202/925x. For those, dac_nids[] must be hard-coded.
  */
 static int stac92xx_auto_fill_dac_nids(struct hda_codec *codec,
-				       const struct auto_pin_cfg *cfg)
+				       struct auto_pin_cfg *cfg)
 {
 	struct sigmatel_spec *spec = codec->spec;
 	int i, j, conn_len = 0; 
@@ -1253,6 +1253,13 @@ static int stac92xx_auto_fill_dac_nids(s
 		}
 
 		if (j == conn_len) {
+			if (spec->multiout.num_dacs > 0) {
+				/* we have already working output pins,
+				 * so let's drop the broken ones again
+				 */
+				cfg->line_outs = spec->multiout.num_dacs;
+				break;
+			}
 			/* error out, no available DAC found */
 			snd_printk(KERN_ERR
 				   "%s: No available DAC for pin 0x%x\n",


More information about the Alsa-devel mailing list