On 03/13/2014 12:28 PM, Lars-Peter Clausen wrote: >> +int edma_pcm_platform_register(struct device *dev) >> +{ >> + if (dev->of_node) >> + return snd_dmaengine_pcm_register(dev, >> + &edma_dmaengine_pcm_config, >> + SND_DMAENGINE_PCM_FLAG_NO_RESIDUE); > > Since the edma dmaengine driver implements the slave cap API there is no need > to manually specify SND_DMAENGINE_PCM_FLAG_NO_RESIDUE manually. But since the > edma driver sets the granularity to DMA_RESIDUE_GRANULARITY_DESCRIPTOR in this > case the generic dmaengine will not set SND_DMAENGINE_PCM_FLAG_NO_RESIDUE > automatically since it assumes that the dmaengine driver is capable of > properly reporting the DMA position. Hrm, I see. For eDMA I think we can support DMA_RESIDUE_GRANULARITY_SEGMENT granularity. Since according to the documentation the _SEGMENT means that the DMA position will be updated per periods, which is basically the same thing what we are doing at the moment when the granularity is DMA_RESIDUE_GRANULARITY_DESCRIPTOR. >From ALSA point of view at least they are the same: neither of them can report exact position, the DMA pointer jumps from period to period. IMHO in the generic dmaengine PCM we should set the SNDRV_PCM_INFO_BATCH for both cases. -- Péter -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html