On 09-04-19, 13:34, Sascha Hauer wrote: > The mxs dma driver insists on having the DMA_PREP_INTERRUPT flag set > on all but the first transfer. There's no need to let the user set this > flag, the driver can do it internally whenever it needs it. Drop > handling of this flag from the driver. After changing patch title to dmaengine: mxs: .... Acked-by: Vinod Koul <vkoul@xxxxxxxxxx> > Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > --- > drivers/dma/mxs-dma.c | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c > index 22cc7f68ef6e..ce92a3626ea4 100644 > --- a/drivers/dma/mxs-dma.c > +++ b/drivers/dma/mxs-dma.c > @@ -477,16 +477,16 @@ static void mxs_dma_free_chan_resources(struct dma_chan *chan) > * ...... > * ->device_prep_slave_sg(0); > * ...... > - * ->device_prep_slave_sg(DMA_PREP_INTERRUPT | DMA_CTRL_ACK); > + * ->device_prep_slave_sg(DMA_CTRL_ACK); > * ...... > * [3] If there are more than two DMA commands in the DMA chain, the code > * should be: > * ...... > * ->device_prep_slave_sg(0); // First > * ...... > - * ->device_prep_slave_sg(DMA_PREP_INTERRUPT [| DMA_CTRL_ACK]); > + * ->device_prep_slave_sg(DMA_CTRL_ACK]); > * ...... > - * ->device_prep_slave_sg(DMA_PREP_INTERRUPT | DMA_CTRL_ACK); // Last > + * ->device_prep_slave_sg(DMA_CTRL_ACK); // Last > * ...... > */ > static struct dma_async_tx_descriptor *mxs_dma_prep_slave_sg( > @@ -500,13 +500,12 @@ static struct dma_async_tx_descriptor *mxs_dma_prep_slave_sg( > struct scatterlist *sg; > u32 i, j; > u32 *pio; > - bool append = flags & DMA_PREP_INTERRUPT; > - int idx = append ? mxs_chan->desc_count : 0; > + int idx = 0; > > - if (mxs_chan->status == DMA_IN_PROGRESS && !append) > - return NULL; > + if (mxs_chan->status == DMA_IN_PROGRESS) > + idx = mxs_chan->desc_count; > > - if (sg_len + (append ? idx : 0) > NUM_CCW) { > + if (sg_len + idx > NUM_CCW) { > dev_err(mxs_dma->dma_device.dev, > "maximum number of sg exceeded: %d > %d\n", > sg_len, NUM_CCW); > @@ -520,7 +519,7 @@ static struct dma_async_tx_descriptor *mxs_dma_prep_slave_sg( > * If the sg is prepared with append flag set, the sg > * will be appended to the last prepared sg. > */ > - if (append) { > + if (idx) { > BUG_ON(idx < 1); > ccw = &mxs_chan->ccw[idx - 1]; > ccw->next = mxs_chan->ccw_phys + sizeof(*ccw) * idx; > -- > 2.20.1 -- ~Vinod ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/