Messages in this thread | | | Date | Thu, 13 Mar 2014 14:38:37 +0100 | From | Lars-Peter Clausen <> | Subject | Re: [alsa-devel] [PATCH 14/18] ASoC: davinci: Add edma dmaengine platform driver |
| |
On 03/13/2014 02:03 PM, Peter Ujfalusi wrote: > 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. >
Ups, sorry mixed up DMA_RESIDUE_GRANULARITY_SEGMENT and DMA_RESIDUE_GRANULARITY_DESCRIPTOR. You can just remove the SND_DMAENGINE_PCM_FLAG_NO_RESIDUE when registering the dmaengine PCM driver and everything will still work as expected.
| |