Subject: Re: Using DMA

From: Scott Wood <[email-masked]>
Date: Thu, 06 Nov 2008 12:29:38 -0600

[email-masked] 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