diff options
| author | Sam Van Den Berge <sam.van.den.berge@telenet.be> | 2016-09-22 14:51:15 -0400 |
|---|---|---|
| committer | Vinod Koul <vinod.koul@intel.com> | 2016-09-26 13:43:04 -0400 |
| commit | 34681d84a0f7cc22ded1413dc79eef8a2f23d9c3 (patch) | |
| tree | 2813bf63617076fafc4e988d1b85a427986a8d85 /include/linux/platform_data | |
| parent | 360af35b08da9def3be8b67398f4e0f90c292e37 (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.h | 6 |
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 | ||
| 33 | struct 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 | */ |
| 39 | struct s3c24xx_dma_platdata { | 43 | struct 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 | ||
| 45 | struct dma_chan; | 51 | struct dma_chan; |
