Re: [alsa-devel] Fwd: No sound with ATI SB450
At Mon, 23 Apr 2007 22:45:00 +1000, Ben DiDonc wrote:
Tobin, Takashi, Thank you very much for your help. Takashi's last suggestion did it and I finally got a working ATI SB450 sound card with Ubtuntu Feisty (kernel 2.6.20 and alsa-driver-hg20070421). I did a (last) alsa-info.sh in case it helps others, see http://pastebin.ca/454115 Here's what it took: modprobe snd_hda_intel probe_mask=8 model=auto Without probe_mask, the ALC861 is not properly detected. Without model=auto, playback doesnt work. Let me know If I can be of any help or if you want me to try something else.
As I requested, get /proc/asound/card0/codec#* files for both working and non-working states. Then we can compare what is not set up properly.
probe_mask is a bit hard to fix right now. A least, we need to know which modem codec is harmful. Please check the codec#* file again with probe_mask=1.
Takashi
Thanks again. Ben
On 4/23/07, Takashi Iwai tiwai@suse.de wrote:
At Mon, 23 Apr 2007 21:58:17 +1000, Ben DiDonc wrote:
Tobin, Takashi, upon Takashi's advice, I tried loading hda-intel (alsa-driver-hg20070421) using the probe_mask argument under 2.6.20. With probe_mask=1, the codec isnt detected and only the modem shows up (just like before). However, with probe_mask=8, the codec IS correctly detected (alsa-info.sh at http://pastebin.ca/454059 ). syslog shows: ACPI: PCI Interrupt 0000:00:14.2[A] -> GSI 16 (level, low) -> IRQ 19 ALSA .../alsa-driver-hg20070421/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:696: codec_mask = 0x9 ALSA .../alsa/alsa-driver-hg20070421/pci/hda/hda_codec.c:1819: hda_codec: model 'toshiba' is selected for config 1179:ff10 (Toshiba)
However, there is still no playback (no muted control, all volumes at 100% as shown by amixer in alsa-info.sh). Here again, capture works, I successfully captured from the mic with arecord.
Now you can try what I suggested, model=auto. And compare with codec#* files. If you have /proc/asound/card0/codec#* files on the working system, it'd be better, in addition...
Takashi
Can I draw your attention on something ? I m not sure about what i m going to say (specially the part on NIDs) but i ll try. I know Tobin already explained that this was normal, but if you have a look at the post where I loaded edgy (2 posts ago), where the playback works(2.6.17 with 1.0.12), you ll see that when I aplay something, syslog shows only a single call to hda_codec_setup_stream with NID=0x3. In all cases where playback doesnt work (1.0.14rcX under 2.6.20), running aplay makes 4 calls to hda_codec_setup_stream with NID=3, 6 ,5 and 4 in turn. Why does it try 6 5 and 4 ? Is it because 3 fails ? We know that 3 should be used as its the one that works (under 2.6.17). Now arent NIDs node IDs of codecs connected to the HDA controller ? Is it possible that 6, 5 and 4 are mistakenly detected and cannot be used for playback ? Let me know if I m way off track.
Ben
On 4/23/07, Takashi Iwai tiwai@suse.de wrote:
At Mon, 23 Apr 2007 11:05:19 +0000, Ben DiDonc wrote:
Takashi, I did try passing model=auto to all 14 release candidates,
Did you already try the HG version (or daily snapshot), right?
but without success. the codec is never detected (see my previous posts for alsa-info.sh outputs with both 2.6.20 and 2.6.17). My problem is I cant get my sound card to work with kernel 2.6.20, when it used to work with 2.6.17.
The codec mask probed is 0x09, so you can pass either probe_mask=8 or probe_mask=1 to skip the modem detection (if it matters).
Takashi
Ben
On 4/23/07, Takashi Iwai tiwai@suse.de wrote:
At Mon, 23 Apr 2007 10:50:18 +0000, Ben DiDonc wrote: > > Tobin, > Unfortunately, ACPI was on at all times. My laptop hardly ever boots > without ACPI (randomly, the SATA driver fails before it can even mount > the root partition). > I ran some more tests today: > I loaded Ubuntu Edgy from the live CD where the sound chip used to > work (kernel 2.6.17, alsa driver 1.0.12rc1). Obviously the sound works > straight away. From there , I ran the same series of test: download > and build (--with-debug=detect) the next version of alsa-driver, run a > capture from mic and try playing it back, check syslog and run > alsa-info.sh. I did this for successive versions of alsa-driver > (starting with 1.0.12) until it fails. > Here are the results: > > Alsa driver 1.0.12rc1(shipped with edgy): > capture: working, playback working, alsa-info.sh at http://pastebin.ca/453947 > > Alsa driver 1.0.12: (alsa-info.sh at http://pastebin.ca/453971 ) > syslog lines after modprobe: > ACPI: PCI Interrupt 0000:00:14.2[A] -> GSI 16 (level, low) -> IRQ 233 > ALSA alsa-driver-1.0.12/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:663: > codec_mask = 0x9 > hda_codec: Unknown model for ALC861, trying auto-probe from BIOS... > ALSA alsa-driver-1.0.12/pci/hda/hda_codec.c:2150: autoconfig: > line_outs=1 (0xb/0x0/0x0/0x0/0x0) > ALSA alsa-driver-1.0.12/pci/hda/hda_codec.c:2154: speaker_outs=0 > (0x0/0x0/0x0/0x0/0x0) > ALSA alsa-driver-1.0.12/pci/hda/hda_codec.c:2156: hp=0x0, > dig_out=0x0, din_in=0x0 > ALSA alsa-driver-1.0.12/pci/hda/hda_codec.c:2164: inputs: mic=0xd, > fmic=0x0, line=0x0, fline=0x0, cd=0x11, aux=0x0 > > capture: working > //capture starting > hda_intel.c:1124: azx_pcm_prepare: bufsize=0x10000, fragsize=0x1000, format=0x11 > hda_codec.c:628: hda_codec_setup_stream: NID=0x8, stream=0x1, > channel=0, format=0x11 > //capture stopping > hda_codec.c:628: hda_codec_setup_stream: NID=0x8, stream=0x0, > channel=0, format=0x0 > > playback: working > //starting > ALSA hda_intel.c:1124: azx_pcm_prepare: bufsize=0x10000, > fragsize=0x1000, format=0x11 > ALSA hda_codec.c:628: hda_codec_setup_stream: NID=0x3, stream=0x5, > channel=0, format=0x11 > //stopping > ALSA hda_codec.c:628: hda_codec_setup_stream: NID=0x3, stream=0x0, > channel=0, format=0x0 > > alsa-driver-1.0.13 (alsa-info.sh at http://pastebin.ca/453975 ) > modprobe snd-hda-intel: > hda_intel.c:680: codec_mask = 0x9 > hda_codec: Unknown model for ALC861, trying auto-probe from BIOS... > hda_codec.c:2164: autoconfig: line_outs=1 (0xb/0x0/0x0/0x0/0x0) > hda_codec.c:2168: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) > hda_codec.c:2172: hp_outs=0 (0x0/0x0/0x0/0x0/0x0) > hda_codec.c:2180: inputs: mic=0xd, fmic=0x0, line=0x0, fline=0x0, > cd=0x11, aux=0x0 > capture works fine, syslog output similar to 1.0.12 plus an extra > "hda-intel: Invalid position buffer, using LPIB read method instead" > in the middle of the capture. Playback works fine too, with the same > syslog entries as 1.0.12 > > > alsa-driver-1.0.14rc1 (alsa-info.sh at http://pastebin.ca/453991 ) > modprobe: > ALSA hda_intel.c:696: codec_mask = 0x9 > ALSA hda_codec.c:1768: hda_codec: model 'toshiba' is selected for > config 1179:ff10 (Toshiba) > Capture works (output similar to 1.0.12) > Playback does NOT work this time: > syslog shows a call to azx_pcm_prepare: and 4 calls to > hda_codec_setup_stream with different nids (3, 6 ,5, 4 as pointed out > my previous post) > > > alsa-driver-1.0.14rc2 (alsa-info.sh at http://pastebin.ca/453799 ) > modprobe: the codec is correctly detected > ALSA hda_intel.c:696: codec_mask = 0x9 > ALSA hda_codec.c:1764: hda_codec: model 'toshiba' is selected for > config 1179:ff10 (Toshiba) > Capture works. Playback does NOT work, same syslog entries as > 1.0.14rc1 with multiple calls to hda_codec_setup_stream > > > alsa-driver-1.0.14rc3 (alsa-info.sh at http://pastebin.ca/453785 ) > modprobe: the codec isnt detected. > ALSA hda_intel.c:696: codec_mask = 0x9 > capture and playback dont work. > > Summary: I tried alsa-driver 1.012 through to 1.0.14rc3 on ubuntu edgy > (kernel 2.6.17). 12 and 13 work fine, 14rc1 and 2 capture works but > not playback, 14rc3 doesnt detect the codec. > What next ? not sure, maybe make a diff of alsa-kernel/pci/hda-intel > between releases 13 and 14 ...
Try to pass model=auto to snd-hda-intel module, and check whether it works (make sure that you have unmuted/adjusted mixer elements before that). Then get /proc/asound/card0/codec#* files, and compare with the files without model option.
Takashi
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
On 4/23/07, Takashi Iwai tiwai@suse.de wrote:
At Mon, 23 Apr 2007 22:45:00 +1000, Ben DiDonc wrote:
Tobin, Takashi, Thank you very much for your help. Takashi's last suggestion did it and I finally got a working ATI SB450 sound card with Ubtuntu Feisty (kernel 2.6.20 and alsa-driver-hg20070421). I did a (last) alsa-info.sh in case it helps others, see http://pastebin.ca/454115 Here's what it took: modprobe snd_hda_intel probe_mask=8 model=auto Without probe_mask, the ALC861 is not properly detected. Without model=auto, playback doesnt work. Let me know If I can be of any help or if you want me to try something else.
As I requested, get /proc/asound/card0/codec#* files for both working and non-working states. Then we can compare what is not set up properly.
probe_mask is a bit hard to fix right now. A least, we need to know which modem codec is harmful. Please check the codec#* file again with probe_mask=1.
Takashi
Thanks again. Ben
On 4/23/07, Takashi Iwai tiwai@suse.de wrote:
At Mon, 23 Apr 2007 21:58:17 +1000, Ben DiDonc wrote:
Tobin, Takashi, upon Takashi's advice, I tried loading hda-intel (alsa-driver-hg20070421) using the probe_mask argument under 2.6.20. With probe_mask=1, the codec isnt detected and only the modem shows up (just like before). However, with probe_mask=8, the codec IS correctly detected (alsa-info.sh at http://pastebin.ca/454059 ). syslog shows: ACPI: PCI Interrupt 0000:00:14.2[A] -> GSI 16 (level, low) -> IRQ 19 ALSA .../alsa-driver-hg20070421/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:696: codec_mask = 0x9 ALSA .../alsa/alsa-driver-hg20070421/pci/hda/hda_codec.c:1819: hda_codec: model 'toshiba' is selected for config 1179:ff10 (Toshiba)
However, there is still no playback (no muted control, all volumes at 100% as shown by amixer in alsa-info.sh). Here again, capture works, I successfully captured from the mic with arecord.
Now you can try what I suggested, model=auto. And compare with codec#* files. If you have /proc/asound/card0/codec#* files on the working system, it'd be better, in addition...
Takashi
Can I draw your attention on something ? I m not sure about what i m going to say (specially the part on NIDs) but i ll try. I know Tobin already explained that this was normal, but if you have a look at the post where I loaded edgy (2 posts ago), where the playback works(2.6.17 with 1.0.12), you ll see that when I aplay something, syslog shows only a single call to hda_codec_setup_stream with NID=0x3. In all cases where playback doesnt work (1.0.14rcX under 2.6.20), running aplay makes 4 calls to hda_codec_setup_stream with NID=3, 6 ,5 and 4 in turn. Why does it try 6 5 and 4 ? Is it because 3 fails ? We know that 3 should be used as its the one that works (under 2.6.17). Now arent NIDs node IDs of codecs connected to the HDA controller ? Is it possible that 6, 5 and 4 are mistakenly detected and cannot be used for playback ? Let me know if I m way off track.
Ben
On 4/23/07, Takashi Iwai tiwai@suse.de wrote:
At Mon, 23 Apr 2007 11:05:19 +0000, Ben DiDonc wrote:
Takashi, I did try passing model=auto to all 14 release candidates,
Did you already try the HG version (or daily snapshot), right?
but without success. the codec is never detected (see my previous posts for alsa-info.sh outputs with both 2.6.20 and 2.6.17). My problem is I cant get my sound card to work with kernel 2.6.20, when it used to work with 2.6.17.
The codec mask probed is 0x09, so you can pass either probe_mask=8 or probe_mask=1 to skip the modem detection (if it matters).
Takashi
Ben
On 4/23/07, Takashi Iwai tiwai@suse.de wrote: > At Mon, 23 Apr 2007 10:50:18 +0000, > Ben DiDonc wrote: > > > > Tobin, > > Unfortunately, ACPI was on at all times. My laptop hardly ever boots > > without ACPI (randomly, the SATA driver fails before it can even mount > > the root partition). > > I ran some more tests today: > > I loaded Ubuntu Edgy from the live CD where the sound chip used to > > work (kernel 2.6.17, alsa driver 1.0.12rc1). Obviously the sound works > > straight away. From there , I ran the same series of test: download > > and build (--with-debug=detect) the next version of alsa-driver, run a > > capture from mic and try playing it back, check syslog and run > > alsa-info.sh. I did this for successive versions of alsa-driver > > (starting with 1.0.12) until it fails. > > Here are the results: > > > > Alsa driver 1.0.12rc1(shipped with edgy): > > capture: working, playback working, alsa-info.sh at http://pastebin.ca/453947 > > > > Alsa driver 1.0.12: (alsa-info.sh at http://pastebin.ca/453971 ) > > syslog lines after modprobe: > > ACPI: PCI Interrupt 0000:00:14.2[A] -> GSI 16 (level, low) -> IRQ 233 > > ALSA alsa-driver-1.0.12/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:663: > > codec_mask = 0x9 > > hda_codec: Unknown model for ALC861, trying auto-probe from BIOS... > > ALSA alsa-driver-1.0.12/pci/hda/hda_codec.c:2150: autoconfig: > > line_outs=1 (0xb/0x0/0x0/0x0/0x0) > > ALSA alsa-driver-1.0.12/pci/hda/hda_codec.c:2154: speaker_outs=0 > > (0x0/0x0/0x0/0x0/0x0) > > ALSA alsa-driver-1.0.12/pci/hda/hda_codec.c:2156: hp=0x0, > > dig_out=0x0, din_in=0x0 > > ALSA alsa-driver-1.0.12/pci/hda/hda_codec.c:2164: inputs: mic=0xd, > > fmic=0x0, line=0x0, fline=0x0, cd=0x11, aux=0x0 > > > > capture: working > > //capture starting > > hda_intel.c:1124: azx_pcm_prepare: bufsize=0x10000, fragsize=0x1000, format=0x11 > > hda_codec.c:628: hda_codec_setup_stream: NID=0x8, stream=0x1, > > channel=0, format=0x11 > > //capture stopping > > hda_codec.c:628: hda_codec_setup_stream: NID=0x8, stream=0x0, > > channel=0, format=0x0 > > > > playback: working > > //starting > > ALSA hda_intel.c:1124: azx_pcm_prepare: bufsize=0x10000, > > fragsize=0x1000, format=0x11 > > ALSA hda_codec.c:628: hda_codec_setup_stream: NID=0x3, stream=0x5, > > channel=0, format=0x11 > > //stopping > > ALSA hda_codec.c:628: hda_codec_setup_stream: NID=0x3, stream=0x0, > > channel=0, format=0x0 > > > > alsa-driver-1.0.13 (alsa-info.sh at http://pastebin.ca/453975 ) > > modprobe snd-hda-intel: > > hda_intel.c:680: codec_mask = 0x9 > > hda_codec: Unknown model for ALC861, trying auto-probe from BIOS... > > hda_codec.c:2164: autoconfig: line_outs=1 (0xb/0x0/0x0/0x0/0x0) > > hda_codec.c:2168: speaker_outs=0 (0x0/0x0/0x0/0x0/0x0) > > hda_codec.c:2172: hp_outs=0 (0x0/0x0/0x0/0x0/0x0) > > hda_codec.c:2180: inputs: mic=0xd, fmic=0x0, line=0x0, fline=0x0, > > cd=0x11, aux=0x0 > > capture works fine, syslog output similar to 1.0.12 plus an extra > > "hda-intel: Invalid position buffer, using LPIB read method instead" > > in the middle of the capture. Playback works fine too, with the same > > syslog entries as 1.0.12 > > > > > > alsa-driver-1.0.14rc1 (alsa-info.sh at http://pastebin.ca/453991 ) > > modprobe: > > ALSA hda_intel.c:696: codec_mask = 0x9 > > ALSA hda_codec.c:1768: hda_codec: model 'toshiba' is selected for > > config 1179:ff10 (Toshiba) > > Capture works (output similar to 1.0.12) > > Playback does NOT work this time: > > syslog shows a call to azx_pcm_prepare: and 4 calls to > > hda_codec_setup_stream with different nids (3, 6 ,5, 4 as pointed out > > my previous post) > > > > > > alsa-driver-1.0.14rc2 (alsa-info.sh at http://pastebin.ca/453799 ) > > modprobe: the codec is correctly detected > > ALSA hda_intel.c:696: codec_mask = 0x9 > > ALSA hda_codec.c:1764: hda_codec: model 'toshiba' is selected for > > config 1179:ff10 (Toshiba) > > Capture works. Playback does NOT work, same syslog entries as > > 1.0.14rc1 with multiple calls to hda_codec_setup_stream > > > > > > alsa-driver-1.0.14rc3 (alsa-info.sh at http://pastebin.ca/453785 ) > > modprobe: the codec isnt detected. > > ALSA hda_intel.c:696: codec_mask = 0x9 > > capture and playback dont work. > > > > Summary: I tried alsa-driver 1.012 through to 1.0.14rc3 on ubuntu edgy > > (kernel 2.6.17). 12 and 13 work fine, 14rc1 and 2 capture works but > > not playback, 14rc3 doesnt detect the codec. > > What next ? not sure, maybe make a diff of alsa-kernel/pci/hda-intel > > between releases 13 and 14 ... > > Try to pass model=auto to snd-hda-intel module, and check whether it > works (make sure that you have unmuted/adjusted mixer elements before > that). Then get /proc/asound/card0/codec#* files, and compare with > the files without model option. > > > Takashi >
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) {
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@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) {
At Tue, 24 Apr 2007 10:15:30 +1000, Ben DiDonc wrote:
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.
OK, then I'll apply the patch to the upstream.
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).
Interesting. It means that this has obviously a different hardware design from the pre-defined one in the current driver code.
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.
The current code has a check of headphone pin, so either with or without headphone, model=toshiba works.
Takashi
On 4/24/07, Takashi Iwai tiwai@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) {
At Tue, 24 Apr 2007 12:05:49 +0200, I wrote:
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).
Interesting. It means that this has obviously a different hardware design from the pre-defined one in the current driver code.
I did a quick hack, added a new model toshiba-a100. Hopefully this matches better with your device. Try the patch below, and don't pass model option.
Takashi
diff -r f73f5a4fa439 pci/hda/patch_realtek.c --- a/pci/hda/patch_realtek.c Tue Apr 24 12:27:36 2007 +0200 +++ b/pci/hda/patch_realtek.c Tue Apr 24 12:46:21 2007 +0200 @@ -105,6 +105,7 @@ enum { ALC861_6ST_DIG, ALC861_UNIWILL_M31, ALC861_TOSHIBA, + ALC861_TOSHIBA_A100, ALC861_ASUS, ALC861_ASUS_LAPTOP, ALC861_AUTO, @@ -8299,6 +8300,7 @@ static const char *alc861_models[ALC861_ [ALC861_6ST_DIG] = "6stack-dig", [ALC861_UNIWILL_M31] = "uniwill-m31", [ALC861_TOSHIBA] = "toshiba", + [ALC861_TOSHIBA_A100] = "toshiba-a100", [ALC861_ASUS] = "asus", [ALC861_ASUS_LAPTOP] = "asus-laptop", [ALC861_AUTO] = "auto", @@ -8311,7 +8313,7 @@ static struct snd_pci_quirk alc861_cfg_t SND_PCI_QUIRK(0x1043, 0x1393, "ASUS", ALC861_ASUS), SND_PCI_QUIRK(0x1043, 0x81e7, "ASUS", ALC660_3ST), SND_PCI_QUIRK(0x1179, 0xff00, "Toshiba", ALC861_TOSHIBA), - SND_PCI_QUIRK(0x1179, 0xff10, "Toshiba", ALC861_TOSHIBA), + SND_PCI_QUIRK(0x1179, 0xff10, "Toshiba A100", ALC861_TOSHIBA_A100), SND_PCI_QUIRK(0x1584, 0x9072, "Uniwill m31", ALC861_UNIWILL_M31), SND_PCI_QUIRK(0x1584, 0x2b01, "Uniwill X40AIx", ALC861_UNIWILL_M31), SND_PCI_QUIRK(0x1849, 0x0660, "Asrock 939SLI32", ALC660_3ST), @@ -8395,6 +8397,17 @@ static struct alc_config_preset alc861_p .input_mux = &alc861_capture_source, .unsol_event = alc861_toshiba_unsol_event, .init_hook = alc861_toshiba_automute, + }, + [ALC861_TOSHIBA_A100] = { + .mixers = { alc861_toshiba_mixer }, + .init_verbs = { alc861_base_init_verbs }, + .num_dacs = ARRAY_SIZE(alc861_dac_nids), + .dac_nids = alc861_dac_nids, + .num_channel_mode = ARRAY_SIZE(alc883_3ST_2ch_modes), + .channel_mode = alc883_3ST_2ch_modes, + .num_adc_nids = ARRAY_SIZE(alc861_adc_nids), + .adc_nids = alc861_adc_nids, + .input_mux = &alc861_capture_source, }, [ALC861_ASUS] = { .mixers = { alc861_asus_mixer },
participants (2)
-
Ben DiDonc
-
Takashi Iwai