We have some strange behavior in our audio application using the ALC 888 hardware in ubuntu 10.10 with the hda-intel driver . Basically the main problem seems to be a buffer or memory management issue. Once a playback is stopped the very last sample is repeated forever, independently from sampling rate or sound file format. This sample leads to a constant DC voltage after the DA converters.
We already tried the following steps:
1.) we changed a line in hda_intel.c to reset the fifo
--- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1797,7 +1797,7 @@ static int azx_pcm_hw_free(struct snd_pcm_substream *substream) /* reset BDL address */ azx_sd_writel(azx_dev, SD_BDLPL, 0); azx_sd_writel(azx_dev, SD_BDLPU, 0); - azx_sd_writel(azx_dev, SD_CTL, 0); + azx_stream_reset(chip, azx_dev); azx_dev->bufsize = 0; azx_dev->period_bytes = 0; azx_dev->format_val = 0;
2.) we set 2 parameters in the .config file before kernel compiling
CONFIG_SND_HDA_POWER_SAVE=y CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
Both solutions didn´t work for us - still same problem. Has anyone another idea how to solve this?
Would be great if we could fix this.
Frank