At Sun, 13 Jul 2008 08:45:55 +0200, Hans-Frieder Vogt wrote: > > Just a few more things to add (maybe it gets clearer): > On a GeForce 8200 board (MCP78S), using the pcm example program from alsa-lib-1.0.17rc2/test, > kernel driver version 1.0.17rc3: > (ignoring my general sound distortion problem which I will address again in another post) > > bdl_pos_adj=0 > both devices "default" and "plughw:0,0" work, i.e. give continuous sound > > bdl_pos_adj=1 > bdl_pos_adj=2 > bdl_pos_adj=8 > no sound, pcm seems to gets stuck (example program does not return) > > bdl_pos_adj=16 > bdl_pos_adj=32 > bdl_pos_adj=64 > bdl_pos_adj=128 > bdl_pos_adj=256 > bdl_pos_adj=512 > bdl_pos_adj=1024 > bdl_pos_adj=2048 > default device: works, i.e. sound > plughw:0,0: no sound, pcm gets stuck > > bdl_pos_adj=4096 > bdl_pos_adj=8192 > ALSA /home/haef/Treiber/alsa-driver-1.0.17rc3/pci/hda/../../alsa-kernel/pci/hda/hda_intel.c:1056: Too big adjustment 4096 > default device: works, i.e. sound > plughw:0,0: just one beep (approx. 0.5s of sound), then pcm gets stuck > > Any ideas? Thanks, that's really good to know. Does this happen with aplay, too? Now you don't need to play so many bdl_pos_adj values any more. Checking 1 and 32 should suffice. Could you check /proc/asound/card0/pcm0p/sub0/* at non-working time with bdl_pos_adj=32? Also, try the patch below. If my guess is right, the problem is unaligned period size. Takashi --- diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 16715a6..ef9f072 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1047,9 +1047,13 @@ static int azx_setup_periods(struct azx *chip, pos_adj = bdl_pos_adj[chip->dev_index]; if (pos_adj > 0) { struct snd_pcm_runtime *runtime = substream->runtime; + int pos_align = pos_adj; pos_adj = (pos_adj * runtime->rate + 47999) / 48000; if (!pos_adj) - pos_adj = 1; + pos_adj = pos_align; + else + pos_adj = ((pos_adj + pos_align - 1) / pos_align) * + pos_align; pos_adj = frames_to_bytes(runtime, pos_adj); if (pos_adj >= period_bytes) { snd_printk(KERN_WARNING "Too big adjustment %d\n", _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel