[alsa-devel] Fwd: No sound with ATI SB450

Ben DiDonc ben.didonc at gmail.com
Tue Apr 24 02:15:30 CEST 2007


Takashi,
I applied your patch (to alsa-driver-hg-20070421) and modprobe'd
snd_hda_intel without probe_mask, but with model=auto. It worked and
detected the ALC861 codec straight away, just like it did with
probe_mask=8. I max'ed all playback and capture volumes , ran arecord
| aplay ,which worked fine. The laptop I have (toshiba A100) only has
builtin speakers and a headphone jack for output (and a mic jack for
input). There are no other jacks. I tried both the speakers and
headphones, both worked (the speakers are muted when the headphone is
connected).
Next I modprobe'd again snd_hda_intel without any parameters this
time, and it worked fine too. the codec was detected and both playback
and capture worked fine.

On 4/24/07, Takashi Iwai <tiwai at suse.de> wrote:
> 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) {
>


More information about the Alsa-devel mailing list