Using DMA

Scott Wood scottwood at freescale.com
Fri Nov 7 05:29:38 EST 2008


Bruce_Leonard at selinc.com wrote:
> In the Cafe driver, Linux Device Drivers 3rd Edition, and DMA-mapping.txt 
> everyone talks about how to allocate buffers using 
> dma/pci_alloc_coherent(), but no one talks about how to actually use it. 
> I'm pretty sure (even in my ignorance) that just allocating a DMA coherent 
> buffer and then copying in and out of it does NOT actually engage the 
> underlying hardware and perform a DMA transfer.

Generally, you program the device itself to peform the transfer.  I'm 
assuming that your custom NAND controller can't do DMA by itself, though.

> With some digging I've found the Freescale Elo/Elo Plus DMA driver which 
> supports my processor.  What I'm not clear on is how to actually make use 
> of it.  How do I tie my NAND driver to the Freescale DMA driver and 
> actually get the hardware to work?  Any pointers are greatly appreciated.

Tell the DMA controller where to move data from, and where to move it to.

-Scott


More information about the Linuxppc-embedded mailing list