[alsa-devel] [Fwd: [Alsa-user] Intel Poulsbo(SCH) chipset does not recognize Adi 1986 codec under linux]]

Kan-I Jyo cecilhsujp at gmail.com
Fri Aug 1 05:30:54 CEST 2008


Dear Takhashi,

After having some discussions with the hardware vender and reviewing
some technical specifiction documents on Intel's website, this issue
has now been fixed by a rework of the hardware.

I would like to say thank you for all your kind support on this issue.

2008/7/4 Takashi Iwai <tiwai at suse.de>:
> At Thu, 3 Jul 2008 14:42:16 +0900,
> Kan-I Jyo wrote:
>>
>> Dear Takashi,
>>
>> Thank you for your reply.
>>
>> 2008/7/1 Takashi Iwai <tiwai at suse.de>:
>>
>> > If you know the slot number of the codec beforehand, you can modify to
>> > force to set chip->codec_mask in azx_reset().  Then the driver will
>> > continue to probe the codec.
>>
>> By changing the "chip->codec_mask", amazingly the codec chip is now recognized.
>>
>> <hda_intel.c.diff>
>> --- hda_intel.c.orig  2008-07-02 13:27:14.699908463 +0900
>> +++ hda_intel.c       2008-07-02 13:27:48.303899618 +0900
>> @@ -750,7 +750,8 @@ static int azx_reset(struct azx *chip)
>>
>>       /* detect codecs */
>>       if (!chip->codec_mask) {
>> -             chip->codec_mask = azx_readw(chip, STATESTS);
>> +             /* chip->codec_mask = azx_readw(chip, STATESTS); */
>> +             chip->codec_mask = 1;
>>               snd_printdd("codec_mask = 0x%x\n", chip->codec_mask);
>>       }
>>
>> <ends here>
>>
>> I do not consider this as a good way to solve this issue, this is
>> quite a progress to me. Thank you for your advise, Takashi.
>>
>> Regardless of being recognized and been configurable by alsamixer,
>> there is no sound output from the speaker. I have tried all the model
>> option listed in Documentation/sound/alsa/ALSA-Configuration.txt for
>> AD1986A and none provides a sound output.
>>
>> By switching to different models, it results some similar log output
>> in both dmesg and /var/log/messages have some info like this:
>>
>> <dmesg>
>>
>> --snip--
>> ALSA /root/alsa-driver-1.0.17rc3/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:601:
>> hda_intel: azx_get_response timeout, switching to polling mode: last
>> cmd=0x000f0000
>> ALSA /root/alsa-driver-1.0.17rc3/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:608:
>> hda_intel: azx_get_response timeout, switching to single_cmd mode:
>> last cmd=0x000f0000
>
> If this happens, usually it means that the device access is pretty
> ragged.  Does /proc/asound/card0/codec#* show the correct values?
>
>> ALSA /root/alsa-driver-1.0.17rc3/pci/hda/hda_codec.c:2334: hda_codec:
>> model '6stack' is selected
>> ALSA /root/alsa-driver-1.0.17rc3/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:1196:
>> snd_hda_codec_new() results is 0
>>
>> <ends here>
>>
>> When trying to apply the "position_fix" module option to values other
>> than the default "0", I got following ouput from dmesg.
>>
>> <dmesg>
>>
>> --snip--
>> ALSA /root/alsa-driver-1.0.17rc3/acore/../alsa-kernel/core/pcm_lib.c:1540:
>> playback write error (DMA or IRQ trouble?)
>
> This error is fatal, and implies that the IRQ isn't triggered
> properly.  Doesn't this happen if you set position_fix=0?  Still
> weird...
>
>>
>> <ends here>
>>
>> And in /var/log/messages, I have following messages complaining that
>> the position buffer is invalid.
>>
>> </var/log/messages>
>>
>> --snip--
>> Jan  2 18:34:03 localhost kernel: hda-intel: Invalid position buffer,
>> using LPIB read method instead.
>> Jan  2 18:34:03 localhost kernel: hda-intel: IRQ timing workaround is
>> activated for card #0. Suggest a bigger bdl_pos_adj.
>
> On Intel devices, we choose the 1 sample position fix while 32 samples
> for other controller chips.  This might be a wrong assumption, but I'd
> like to check all other cases first.
>
> And, this basically is no fatal error.  This may lead to higher CPU
> load (for busy wait) but the playback should still work.
>
>
> Takashi
>



-- 
Sincerely,

Jyo


More information about the Alsa-devel mailing list