diff options
Diffstat (limited to 'include/linux/dmaengine.h')
| -rw-r--r-- | include/linux/dmaengine.h | 24 | 
1 files changed, 20 insertions, 4 deletions
| diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 9000f3ffce8b..842d4f7ca752 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h @@ -50,6 +50,7 @@ enum dma_status {   */  enum dma_transaction_type {  	DMA_MEMCPY, +	DMA_MEMCPY_SG,  	DMA_XOR,  	DMA_PQ,  	DMA_XOR_VAL, @@ -418,9 +419,6 @@ enum dma_slave_buswidth {   * @device_fc: Flow Controller Settings. Only valid for slave channels. Fill   * with 'true' if peripheral should be flow controller. Direction will be   * selected at Runtime. - * @slave_id: Slave requester id. Only valid for slave channels. The dma - * slave peripheral will have unique id as dma requester which need to be - * pass as slave config.   * @peripheral_config: peripheral configuration for programming peripheral   * for dmaengine transfer   * @peripheral_size: peripheral configuration buffer size @@ -448,7 +446,6 @@ struct dma_slave_config {  	u32 src_port_window_size;  	u32 dst_port_window_size;  	bool device_fc; -	unsigned int slave_id;  	void *peripheral_config;  	size_t peripheral_size;  }; @@ -891,6 +888,11 @@ struct dma_device {  	struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)(  		struct dma_chan *chan, dma_addr_t dst, dma_addr_t src,  		size_t len, unsigned long flags); +	struct dma_async_tx_descriptor *(*device_prep_dma_memcpy_sg)( +		struct dma_chan *chan, +		struct scatterlist *dst_sg, unsigned int dst_nents, +		struct scatterlist *src_sg, unsigned int src_nents, +		unsigned long flags);  	struct dma_async_tx_descriptor *(*device_prep_dma_xor)(  		struct dma_chan *chan, dma_addr_t dst, dma_addr_t *src,  		unsigned int src_cnt, size_t len, unsigned long flags); @@ -1051,6 +1053,20 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memcpy(  						    len, flags);  } +static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memcpy_sg( +		struct dma_chan *chan, +		struct scatterlist *dst_sg, unsigned int dst_nents, +		struct scatterlist *src_sg, unsigned int src_nents, +		unsigned long flags) +{ +	if (!chan || !chan->device || !chan->device->device_prep_dma_memcpy_sg) +		return NULL; + +	return chan->device->device_prep_dma_memcpy_sg(chan, dst_sg, dst_nents, +						       src_sg, src_nents, +						       flags); +} +  static inline bool dmaengine_is_metadata_mode_supported(struct dma_chan *chan,  		enum dma_desc_metadata_mode mode)  { |