At Tue, 24 Apr 2007 00:12:46 +1000, Ben DiDonc wrote:
Here are the two codec files: codec#3-working-14rc1 was obtained after loading snd-hda-intel with probe_mask=8 and model=auto the other was obtained after loading the module without special parameters
Thanks. Let's cut out bugs step by step.
The probing problem with the latest driver might be fixed by the patch below. Could you try it and load without probe_mask option?
Also, what output did you test actually? Is the output from the built-in speaker (if any), the output from HP-jack or both?
Takashi
diff -r aed6a15c9398 pci/hda/hda_intel.c --- a/pci/hda/hda_intel.c Mon Apr 23 11:54:41 2007 +0200 +++ b/pci/hda/hda_intel.c Mon Apr 23 16:18:35 2007 +0200 @@ -979,7 +979,7 @@ static int __devinit azx_codec_create(st static int __devinit azx_codec_create(struct azx *chip, const char *model) { struct hda_bus_template bus_temp; - int c, codecs, err; + int c, codecs, audio_codecs, err;
memset(&bus_temp, 0, sizeof(bus_temp)); bus_temp.private_data = chip; @@ -991,16 +991,19 @@ static int __devinit azx_codec_create(st if ((err = snd_hda_bus_new(chip->card, &bus_temp, &chip->bus)) < 0) return err;
- codecs = 0; + codecs = audio_codecs = 0; for (c = 0; c < AZX_MAX_CODECS; c++) { if ((chip->codec_mask & (1 << c)) & probe_mask) { - err = snd_hda_codec_new(chip->bus, c, NULL); + struct hda_codec *codec; + err = snd_hda_codec_new(chip->bus, c, &codec); if (err < 0) continue; codecs++; + if (codec->afg) + audio_codecs++; } } - if (!codecs) { + if (!audio_codecs) { /* probe additional slots if no codec is found */ for (; c < azx_max_codecs[chip->driver_type]; c++) { if ((chip->codec_mask & (1 << c)) & probe_mask) {