[PATCH v2 2/2] dmaengine: Add support for multiple descriptors for imx-dma.
From: javier Martin <hidden>
Date: 2012-03-01 10:28:21
Also in:
lkml
Hi Sascha, On 1 March 2012 11:19, Sascha Hauer [off-list ref] wrote:
On Tue, Feb 28, 2012 at 05:08:18PM +0100, Javier Martin wrote:quoted
dmaengine specifies the possibility that several descriptors can be queued for transfer. It also indicates that tasklets must be used for DMA callbacks. Signed-off-by: Javier Martin <redacted>Have you tested this patch with audio?
Yes, I have a test battery which tests audio, mmc, runs dmatest module and a custom mem2mem video device I'm developing.
quoted
+static int imxdma_xfer_desc(struct imxdma_desc *d) +{ + ? ? struct imxdma_channel *imxdmac = to_imxdma_chan(d->desc.chan); + ? ? int ret; + + ? ? /* Configure and enable */ + ? ? switch (d->type) { + ? ? case IMXDMA_DESC_MEMCPY: + ? ? ? ? ? ? ret = imx_dma_config_channel(imxdmac->imxdma_channel, + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? d->config_port, d->config_mem, 0, 0); + ? ? ? ? ? ? if (ret < 0) + ? ? ? ? ? ? ? ? ? ? return ret; + ? ? ? ? ? ? ret = imx_dma_setup_single(imxdmac->imxdma_channel, d->src, + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?d->len, d->dest, d->dmamode); + ? ? ? ? ? ? if (ret < 0) + ? ? ? ? ? ? ? ? ? ? return ret; + ? ? ? ? ? ? break; + ? ? case IMXDMA_DESC_CYCLIC: + ? ? ? ? ? ? ret = imx_dma_setup_progression_handler(imxdmac->imxdma_channel, + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? imxdma_progression); + ? ? ? ? ? ? if (ret < 0) + ? ? ? ? ? ? ? ? ? ? return ret;You fall through here. Is this intended? If yes, a comment would be good here.
Yes it is. cyclic is the same as slave_sg with the add-on of the progression handler and a specific configuration of the sglist which is done in 'imxdma_prep_dma_cyclic'. Do you want me to send a new version with a comment on the matter? -- Javier Martin Vista Silicon S.L. CDTUC - FASE C - Oficina S-345 Avda de los Castros s/n 39005- Santander. Cantabria. Spain +34 942 25 32 60 www.vista-silicon.com