1.3. PL08X asynchronous transfer

/*
 * The AMBA DMA API is modelled on the ISA DMA API and performs1
 * single asynchronous2 transfers between a device and memory
 * i.e. some platform fixed device address and a driver defined memory address3
        

1

此AMBA DMA驱动,基于ISA DMA的API,好像应该就是那个DMA engine的架构吧,对应的,是这两个相关文件:

\include\linux\dmaengine.h

\drivers\dma\dmaengine.c

2

主要实现了异步传输,细看内部实现,就是,你设置好所有的参数之后,就提交你的请求后,然后此dma驱动会去在合适的时候帮你实现你的dma请求。因此,不保证是立刻就去执行你的请求的,此之所以称作异步。

3

正如上面的解释,常见的应用就是,

对应某个外设有某个固定的设备地址,一般都是某个FIFO的地址,或者DATA之类的寄存器,然后你的DMA请求是,从内存某个地址传输一定数据到你这个设备的FIFO或者data寄存器,即往你设备里面写数据,或者相反,从你的设备的FIFO地址中,读取一定量数据到内存某个位置,即从你设备里面读取数据。