Linux DMA¶
DMA Controller/Engine¶
source code¶
include/linux/dmaengine.h
drivers/dma/dmaengine.c
include/linux/amba/pl330.h
drivers/dma/pl330.c
document¶
Documentation/dmaengine/client.txt
Documentation/dmaengine/provider.txt
详解 ARM 的 AMBA 设备中的 DMA 设备 PL08X 的 Linux 驱动: http://www.crifan.com/files/doc/docbook/dma_pl08x_analysis/release/htmls/index.html
DMA Mapping¶
source code¶
include/linux/dma-mapping.h
arch/arm/mm/dma-mapping.c: implement 4 type of dma_map_ops
more: DMA Mapping
document¶
(Laurent, 2014) [ELC2014] Mastering the DMA and IOMMU API
Documentation/DMA-API-HOWTO.txt
( 2011) [lwn] ARM, DMA, and memory management
(Marek, Kyungmin, 2011, Samsung) [ELC Europe] ARM DMA-Mapping Framework Redesign and IOMMU integration
Three different implementations merged together (
arch/arm/mm/dma-mapping.c
)linear non-coherent (most systems)
linear coherent (noMMU and Intel ixp23xx)
‘bounced’ for systems with restricted or limited/broken DMA engines
( 2014) ARM Dma-mapping Explained