[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