<p></p>
<p>><br>
><br>
> > > anyway, above patch might have fixed the issue and I was able to do some<br>
> > > measurements on a beagleboard (ARMv7, OMAP3, TPS65950 PMIC audio),<br>
> > > Linux kernel 3.7 and PA shortly before the srbchannel patches...<br>
> ><br>
> > Even the driver use SNDRV_PCM_INFO_NO_PERIOD_WAKEUP which is necessary but<br>
> > no sufficient<br>
> ><br>
> > For timer schedulling, the driver need to report dma residue<br>
> > and it look like some omap cannot report DMA residue granularity<br>
> ><br>
> > Can your hardware report dma residue granularity?<br>
> ><br>
> > <a href="https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/soc/omap/omap-pcm.c">https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/soc/omap/omap-pcm.c</a><br>
> ><br>
> > static snd_pcm_uframes_t omap_pcm_pointer(struct snd_pcm_substream<br>
> > *substream)<br>
> > {<br>
> > snd_pcm_uframes_t offset;<br>
> ><br>
> > if (pcm_omap1510())<br>
><br>
> this is true for ancient OMAP1 only, OMAP3 uses snd_dmaengine_pcm_pointer()<br><br></p>
<p>@DMA_RESIDUE_GRANULARITY_BURST: Residue is updated after each transferred burst. This is typically only supported if the hardware has a progress register of some sort (E.g. a register with the current read/write address or a register with the amount of bursts/beats/bytes that have been transferred or still need to be transferred).</p>
<p>What is the dma brust size in this platform? </p>
<p>Do this mean that the period size of your omap3 is multiple of dma brust size? </p>
<p>Do this imply those starttheshold,  hwbuf_unused,... need to be multiple of dma brust size? </p>
<p>Do the dynamic latency range are just only finite points instead of continuous? <br>
</p>