aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/platform_data
diff options
context:
space:
mode:
authorSam Van Den Berge <sam.van.den.berge@telenet.be>2016-09-22 14:51:15 -0400
committerVinod Koul <vinod.koul@intel.com>2016-09-26 13:43:04 -0400
commit34681d84a0f7cc22ded1413dc79eef8a2f23d9c3 (patch)
tree2813bf63617076fafc4e988d1b85a427986a8d85 /include/linux/platform_data
parent360af35b08da9def3be8b67398f4e0f90c292e37 (diff)
dmaengine: s3c24xx: Add dma_slave_map for s3c2440 devices
This patch updates the s3c24xx dma driver to be able to pass a dma_slave_map array via the platform data. This is needed to be able to use the new, simpler dmaengine API [1]. I used the virtual DMA channels as a parameter for the dma_filter function. By doing that, I could reuse the existing filter function in drivers/dma/s3c24xx-dma.c. I have tested this on my mini2440 board with the audio driver. According to my observations, dma_request_slave_channel in the function dmaengine_pcm_new in the file sound/soc/soc-generic-dmaengine-pcm.c now returns a valid DMA channel whereas before no DMA channel was returned at that point. Entries for DMACH_XD0, DMACH_XD1 and DMACH_TIMER are missing because I don't realy know which driver to use for these. [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2015-December/393635.html Signed-off-by: Sam Van Den Berge <sam.van.den.berge@telenet.be> Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'include/linux/platform_data')
-rw-r--r--include/linux/platform_data/dma-s3c24xx.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/platform_data/dma-s3c24xx.h b/include/linux/platform_data/dma-s3c24xx.h
index 89ba1b0c90e4..4f9aba405e96 100644
--- a/include/linux/platform_data/dma-s3c24xx.h
+++ b/include/linux/platform_data/dma-s3c24xx.h
@@ -30,16 +30,22 @@ struct s3c24xx_dma_channel {
30 u16 chansel; 30 u16 chansel;
31}; 31};
32 32
33struct dma_slave_map;
34
33/** 35/**
34 * struct s3c24xx_dma_platdata - platform specific settings 36 * struct s3c24xx_dma_platdata - platform specific settings
35 * @num_phy_channels: number of physical channels 37 * @num_phy_channels: number of physical channels
36 * @channels: array of virtual channel descriptions 38 * @channels: array of virtual channel descriptions
37 * @num_channels: number of virtual channels 39 * @num_channels: number of virtual channels
40 * @slave_map: dma slave map matching table
41 * @slavecnt: number of elements in slave_map
38 */ 42 */
39struct s3c24xx_dma_platdata { 43struct s3c24xx_dma_platdata {
40 int num_phy_channels; 44 int num_phy_channels;
41 struct s3c24xx_dma_channel *channels; 45 struct s3c24xx_dma_channel *channels;
42 int num_channels; 46 int num_channels;
47 const struct dma_slave_map *slave_map;
48 int slavecnt;
43}; 49};
44 50
45struct dma_chan; 51struct dma_chan;