diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-02-21 20:06:22 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-02-21 20:06:22 -0500 |
commit | 97a229f90731894f46b85c20bcc1842f4a63cb78 (patch) | |
tree | 4c3e123eb1aab97b1d6c2e494b348b935414b84a /include/linux | |
parent | ff58d005cd10fcd372787cceac547e11cf706ff6 (diff) | |
parent | 1ad651154b0dfccde5a83fafbe81cff19791f359 (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.h | 2 | ||||
-rw-r--r-- | include/linux/dma/dw.h | 2 | ||||
-rw-r--r-- | include/linux/dmaengine.h | 11 | ||||
-rw-r--r-- | include/linux/platform_data/dma-dw.h | 2 |
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 | */ |
32 | struct dw_dma_chip { | 33 | struct 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 | ||
897 | static 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 | |||
897 | static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_sg( | 908 | static 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; |