aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-02-21 20:06:22 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-02-21 20:06:22 -0500
commit97a229f90731894f46b85c20bcc1842f4a63cb78 (patch)
tree4c3e123eb1aab97b1d6c2e494b348b935414b84a /include/linux
parentff58d005cd10fcd372787cceac547e11cf706ff6 (diff)
parent1ad651154b0dfccde5a83fafbe81cff19791f359 (diff)
Merge tag 'dmaengine-4.11-rc1' of git://git.infradead.org/users/vkoul/slave-dma
Pull dmaengine updates from Vinod Koul: "This time we fairly boring and bit small update. - Support for Intel iDMA 32-bit hardware - deprecate broken support for channel switching in async_tx - bunch of updates on stm32-dma - Cyclic support for zx dma and making in generic zx dma driver - Small updates to bunch of other drivers" * tag 'dmaengine-4.11-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (29 commits) async_tx: deprecate broken support for channel switching dmaengine: rcar-dmac: Widen DMA mask to 40 bits dmaengine: sun6i: allow build on ARM64 platforms (sun50i) dmaengine: Provide a wrapper for memcpy operations dmaengine: zx: fix build warning dmaengine: dw: we do support Merrifield SoC in PCI mode dmaengine: dw: add support of iDMA 32-bit hardware dmaengine: dw: introduce register mappings for iDMA 32-bit dmaengine: dw: introduce block2bytes() and bytes2block() dmaengine: dw: extract dwc_chan_pause() for future use dmaengine: dw: replace convert_burst() with one liner dmaengine: dw: register IRQ and DMA pool with instance ID dmaengine: dw: Fix data corruption in large device to memory transfers dmaengine: ste_dma40: indicate granularity on channels dmaengine: ste_dma40: indicate directions on channels dmaengine: stm32-dma: Add error messages if xlate fails dmaengine: dw: pci: remove LPE Audio DMA ID dmaengine: stm32-dma: Add max_burst support dmaengine: stm32-dma: Add synchronization support dmaengine: stm32-dma: Fix residue computation issue in cyclic mode ...
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/async_tx.h2
-rw-r--r--include/linux/dma/dw.h2
-rw-r--r--include/linux/dmaengine.h11
-rw-r--r--include/linux/platform_data/dma-dw.h2
4 files changed, 16 insertions, 1 deletions
diff --git a/include/linux/async_tx.h b/include/linux/async_tx.h
index 388574ea38ed..28e3cf1465ab 100644
--- a/include/linux/async_tx.h
+++ b/include/linux/async_tx.h
@@ -87,7 +87,7 @@ struct async_submit_ctl {
87 void *scribble; 87 void *scribble;
88}; 88};
89 89
90#ifdef CONFIG_DMA_ENGINE 90#if defined(CONFIG_DMA_ENGINE) && !defined(CONFIG_ASYNC_TX_CHANNEL_SWITCH)
91#define async_tx_issue_pending_all dma_issue_pending_all 91#define async_tx_issue_pending_all dma_issue_pending_all
92 92
93/** 93/**
diff --git a/include/linux/dma/dw.h b/include/linux/dma/dw.h
index ccfd0c3777df..b63b25814d77 100644
--- a/include/linux/dma/dw.h
+++ b/include/linux/dma/dw.h
@@ -23,6 +23,7 @@ struct dw_dma;
23/** 23/**
24 * struct dw_dma_chip - representation of DesignWare DMA controller hardware 24 * struct dw_dma_chip - representation of DesignWare DMA controller hardware
25 * @dev: struct device of the DMA controller 25 * @dev: struct device of the DMA controller
26 * @id: instance ID
26 * @irq: irq line 27 * @irq: irq line
27 * @regs: memory mapped I/O space 28 * @regs: memory mapped I/O space
28 * @clk: hclk clock 29 * @clk: hclk clock
@@ -31,6 +32,7 @@ struct dw_dma;
31 */ 32 */
32struct dw_dma_chip { 33struct dw_dma_chip {
33 struct device *dev; 34 struct device *dev;
35 int id;
34 int irq; 36 int irq;
35 void __iomem *regs; 37 void __iomem *regs;
36 struct clk *clk; 38 struct clk *clk;
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
index feee6ec6a13b..533680860865 100644
--- a/include/linux/dmaengine.h
+++ b/include/linux/dmaengine.h
@@ -894,6 +894,17 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memset(
894 len, flags); 894 len, flags);
895} 895}
896 896
897static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memcpy(
898 struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
899 size_t len, unsigned long flags)
900{
901 if (!chan || !chan->device || !chan->device->device_prep_dma_memcpy)
902 return NULL;
903
904 return chan->device->device_prep_dma_memcpy(chan, dest, src,
905 len, flags);
906}
907
897static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_sg( 908static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_sg(
898 struct dma_chan *chan, 909 struct dma_chan *chan,
899 struct scatterlist *dst_sg, unsigned int dst_nents, 910 struct scatterlist *dst_sg, unsigned int dst_nents,
diff --git a/include/linux/platform_data/dma-dw.h b/include/linux/platform_data/dma-dw.h
index e69e415d0d98..896cb71a382c 100644
--- a/include/linux/platform_data/dma-dw.h
+++ b/include/linux/platform_data/dma-dw.h
@@ -41,6 +41,7 @@ struct dw_dma_slave {
41 * @is_private: The device channels should be marked as private and not for 41 * @is_private: The device channels should be marked as private and not for
42 * by the general purpose DMA channel allocator. 42 * by the general purpose DMA channel allocator.
43 * @is_memcpy: The device channels do support memory-to-memory transfers. 43 * @is_memcpy: The device channels do support memory-to-memory transfers.
44 * @is_idma32: The type of the DMA controller is iDMA32
44 * @chan_allocation_order: Allocate channels starting from 0 or 7 45 * @chan_allocation_order: Allocate channels starting from 0 or 7
45 * @chan_priority: Set channel priority increasing from 0 to 7 or 7 to 0. 46 * @chan_priority: Set channel priority increasing from 0 to 7 or 7 to 0.
46 * @block_size: Maximum block size supported by the controller 47 * @block_size: Maximum block size supported by the controller
@@ -53,6 +54,7 @@ struct dw_dma_platform_data {
53 unsigned int nr_channels; 54 unsigned int nr_channels;
54 bool is_private; 55 bool is_private;
55 bool is_memcpy; 56 bool is_memcpy;
57 bool is_idma32;
56#define CHAN_ALLOCATION_ASCENDING 0 /* zero to seven */ 58#define CHAN_ALLOCATION_ASCENDING 0 /* zero to seven */
57#define CHAN_ALLOCATION_DESCENDING 1 /* seven to zero */ 59#define CHAN_ALLOCATION_DESCENDING 1 /* seven to zero */
58 unsigned char chan_allocation_order; 60 unsigned char chan_allocation_order;