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>
此提交包含在:
@@ -1301,6 +1301,9 @@ static int s3c24xx_dma_probe(struct platform_device *pdev)
|
||||
s3cdma->slave.device_prep_dma_cyclic = s3c24xx_dma_prep_dma_cyclic;
|
||||
s3cdma->slave.device_config = s3c24xx_dma_set_runtime_config;
|
||||
s3cdma->slave.device_terminate_all = s3c24xx_dma_terminate_all;
|
||||
s3cdma->slave.filter.map = pdata->slave_map;
|
||||
s3cdma->slave.filter.mapcnt = pdata->slavecnt;
|
||||
s3cdma->slave.filter.fn = s3c24xx_dma_filter;
|
||||
|
||||
/* Register as many memcpy channels as there are physical channels */
|
||||
ret = s3c24xx_dma_init_virtual_channels(s3cdma, &s3cdma->memcpy,
|
||||
|
新增問題並參考
封鎖使用者