On Mon, Aug 22, 2011 at 5:33 PM, Boojin Kim <boojin.kim@xxxxxxxxxxx> wrote: >> >> > +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. > It's required because Cyclic operation is passed from CYCLIC_PREP to > CYCLIC_TRIGGER. I don't see why you need to differentiate between PREP and TRIGGER in cyclic mode. I think, you should simply have 'bool cyclic' instead of enum. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html