Loading drivers/dma/dma-jz4740.c +18 −3 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ struct jz4740_dma_desc { struct jz4740_dmaengine_chan { struct virt_dma_chan vchan; unsigned int id; struct dma_slave_config config; dma_addr_t fifo_addr; unsigned int transfer_shift; Loading Loading @@ -203,8 +204,9 @@ static enum jz4740_dma_transfer_size jz4740_dma_maxburst(u32 maxburst) return JZ4740_DMA_TRANSFER_SIZE_32BYTE; } static int jz4740_dma_slave_config(struct dma_chan *c, struct dma_slave_config *config) static int jz4740_dma_slave_config_write(struct dma_chan *c, struct dma_slave_config *config, enum dma_transfer_direction direction) { struct jz4740_dmaengine_chan *chan = to_jz4740_dma_chan(c); struct jz4740_dma_dev *dmadev = jz4740_dma_chan_get_dev(chan); Loading @@ -214,7 +216,7 @@ static int jz4740_dma_slave_config(struct dma_chan *c, enum jz4740_dma_flags flags; uint32_t cmd; switch (config->direction) { switch (direction) { case DMA_MEM_TO_DEV: flags = JZ4740_DMA_SRC_AUTOINC; transfer_size = jz4740_dma_maxburst(config->dst_maxburst); Loading Loading @@ -265,6 +267,15 @@ static int jz4740_dma_slave_config(struct dma_chan *c, return 0; } static int jz4740_dma_slave_config(struct dma_chan *c, struct dma_slave_config *config) { struct jz4740_dmaengine_chan *chan = to_jz4740_dma_chan(c); memcpy(&chan->config, config, sizeof(*config)); return 0; } static int jz4740_dma_terminate_all(struct dma_chan *c) { struct jz4740_dmaengine_chan *chan = to_jz4740_dma_chan(c); Loading Loading @@ -407,6 +418,8 @@ static struct dma_async_tx_descriptor *jz4740_dma_prep_slave_sg( desc->direction = direction; desc->cyclic = false; jz4740_dma_slave_config_write(c, &chan->config, direction); return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags); } Loading Loading @@ -438,6 +451,8 @@ static struct dma_async_tx_descriptor *jz4740_dma_prep_dma_cyclic( desc->direction = direction; desc->cyclic = true; jz4740_dma_slave_config_write(c, &chan->config, direction); return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags); } Loading Loading
drivers/dma/dma-jz4740.c +18 −3 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ struct jz4740_dma_desc { struct jz4740_dmaengine_chan { struct virt_dma_chan vchan; unsigned int id; struct dma_slave_config config; dma_addr_t fifo_addr; unsigned int transfer_shift; Loading Loading @@ -203,8 +204,9 @@ static enum jz4740_dma_transfer_size jz4740_dma_maxburst(u32 maxburst) return JZ4740_DMA_TRANSFER_SIZE_32BYTE; } static int jz4740_dma_slave_config(struct dma_chan *c, struct dma_slave_config *config) static int jz4740_dma_slave_config_write(struct dma_chan *c, struct dma_slave_config *config, enum dma_transfer_direction direction) { struct jz4740_dmaengine_chan *chan = to_jz4740_dma_chan(c); struct jz4740_dma_dev *dmadev = jz4740_dma_chan_get_dev(chan); Loading @@ -214,7 +216,7 @@ static int jz4740_dma_slave_config(struct dma_chan *c, enum jz4740_dma_flags flags; uint32_t cmd; switch (config->direction) { switch (direction) { case DMA_MEM_TO_DEV: flags = JZ4740_DMA_SRC_AUTOINC; transfer_size = jz4740_dma_maxburst(config->dst_maxburst); Loading Loading @@ -265,6 +267,15 @@ static int jz4740_dma_slave_config(struct dma_chan *c, return 0; } static int jz4740_dma_slave_config(struct dma_chan *c, struct dma_slave_config *config) { struct jz4740_dmaengine_chan *chan = to_jz4740_dma_chan(c); memcpy(&chan->config, config, sizeof(*config)); return 0; } static int jz4740_dma_terminate_all(struct dma_chan *c) { struct jz4740_dmaengine_chan *chan = to_jz4740_dma_chan(c); Loading Loading @@ -407,6 +418,8 @@ static struct dma_async_tx_descriptor *jz4740_dma_prep_slave_sg( desc->direction = direction; desc->cyclic = false; jz4740_dma_slave_config_write(c, &chan->config, direction); return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags); } Loading Loading @@ -438,6 +451,8 @@ static struct dma_async_tx_descriptor *jz4740_dma_prep_dma_cyclic( desc->direction = direction; desc->cyclic = true; jz4740_dma_slave_config_write(c, &chan->config, direction); return vchan_tx_prep(&chan->vchan, &desc->vdesc, flags); } Loading