[PATCH v6 04/15] DMA: PL330: Add DMA_CYCLIC capability
Jassi Brar
jassisinghbrar at gmail.com
Mon Aug 22 06:09:37 EDT 2011
On Fri, Aug 19, 2011 at 2:24 PM, Boojin Kim <boojin.kim at samsung.com> wrote:
> @@ -324,6 +362,9 @@ static void pl330_free_chan_resources(struct dma_chan *chan)
> pl330_release_channel(pch->pl330_chid);
> pch->pl330_chid = NULL;
>
> + if (pch->cyclic)
> + list_splice_tail_init(&pch->work_list, &pch->dmac->desc_pool);
'cyclic' member is 'enum cyclic_mode', please observe the rule and compare
it only against the enum values.
> +static struct dma_async_tx_descriptor *pl330_prep_dma_cyclic(
> + struct dma_chan *chan, dma_addr_t dma_addr, size_t len,
> + size_t period_len, enum dma_data_direction direction)
> +{
> + struct dma_pl330_desc *desc;
> + struct dma_pl330_chan *pch = to_pchan(chan);
> + dma_addr_t dst;
> + dma_addr_t src;
> +
> + desc = pl330_get_desc(pch);
> + if (!desc) {
> + dev_err(pch->dmac->pif.dev, "%s:%d Unable to fetch desc\n",
> + __func__, __LINE__);
> + return NULL;
> + }
> +
> + switch (direction) {
> + case DMA_TO_DEVICE:
> + desc->rqcfg.src_inc = 1;
> + desc->rqcfg.dst_inc = 0;
> + src = dma_addr;
> + dst = pch->fifo_addr;
> + break;
> + case DMA_FROM_DEVICE:
> + desc->rqcfg.src_inc = 0;
> + desc->rqcfg.dst_inc = 1;
> + src = pch->fifo_addr;
> + dst = dma_addr;
> + break;
> + default:
> + dev_err(pch->dmac->pif.dev, "%s:%d Invalid dma direction\n",
> + __func__, __LINE__);
> + return NULL;
> + }
> +
> + desc->rqcfg.brst_size = pch->burst_sz;
> + desc->rqcfg.brst_len = 1;
> +
> + if (!pch->cyclic)
> + pch->cyclic = CYCLIC_PREP;
The need for check here seems suspicious.
Is it really needed? If not, please remove it.
More information about the linux-arm-kernel
mailing list