I have seen that alsa-driver-0.9.0rc1 cs4281.c driver supports only 2 periods.
There exists an unofficial patch for alsa-driver-0.5.12a done by [EMAIL PROTECTED] I have seen that some parts of it are included in 0.9.0rc1, some are obsolete, but the limit of only 2 periods is not fixed in 0.9.0rc1 (playback). Especially snd_cs4281_start_new_dma(cs4281_t *chip, cs4281_dma_t *dma) and changes to the interrupt handler are not in 0.9.0rc1 (and I believe also not in CVS). I am trying to backport it now, but it seems some interfaces have changed. For exaple what the "pointer" function should return? I do not understand the following code in alsa-kernel/core/pcm_lib.c: new_hw_ptr = runtime->hw_ptr_base + pos; hw_ptr_interrupt = runtime->hw_ptr_interrupt + runtime->period_size; delta = hw_ptr_interrupt - new_hw_ptr; if (delta > 0) { if (delta < runtime->buffer_size / 2) { snd_printd("Unexpected hw_pointer value (stream = %i, delta: -%ld, max jitter = %ld): wrong interrupt acknowledge?\n", substream->stream, (long) delta, runtime->buffer_size / 2); return 0; } runtime->hw_ptr_base += runtime->buffer_size; if (runtime->hw_ptr_base == runtime->boundary) runtime->hw_ptr_base = 0; new_hw_ptr = runtime->hw_ptr_base + pos; } runtime->status->hw_ptr = new_hw_ptr; runtime->hw_ptr_interrupt = new_hw_ptr - (runtime->hw_ptr_base + pos) % runtime->period_size; Why is runtime->buffer_size the whole buffer or the period size? What is in bytes, what in frames? Is there any function/field giving size of a single frame in bytes? Best regards, -- Tomasz Motylewski _______________________________________________________________ Don't miss the 2002 Sprint PCS Application Developer's Conference August 25-28 in Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?source=osdntextlink _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel