MPC8349E's DMA controller like ISA controller but with more feature?

Scott Wood scottwood at freescale.com
Tue Apr 21 01:55:11 EST 2009


On Mon, Apr 20, 2009 at 07:38:13PM +0700, lhthanh wrote:
> <body bgcolor="#ffffff" text="#000000">
> <font size="+1">Hi EveryOne!<br>
> <br>
> This is first time I send a letter to everyone. If I make mistake,
> please free to correct me. :)<br>

Please post in plaintext, not HTML.

> MPC8349's DMA controller like ISA controller but with more features? 

No.  It is for software-directed memory-to-memory transfers (where
"memory" can be main-memory, or the buffer of a device that doesn't do
DMA itself).

There is no need for anything like ISA's DMA controller, as devices that
want to initiate DMA can master the bus themselves.

> So in DMA APIs such as dma_addr_t dma_map_single(struct device *dev,
> void *cpu_addr, size_t size, enum dma_data_direction direction)
> *dev will pointer to DMA controller or to peripheral device(FPGA,
> ISA device)?

It is whatever device is going to be doing the DMA.

> From dmatest.c , *dev seem to pointer to a channel of DMA
> controller. 

That's because in that case, the DMA controller is the peripheral
device being used.

> I want to DMA from device to memory. 

What kind of device?

> So how to I can get address of peripheral device ?

If you have to ask that, it probably means you don't have a specific
device buffer in mind that you want an external entity to stuff data into
(or suck data from), but rather are dealing with device-initiated DMA. 
In that case, ignore the DMA controller.

-Scott



More information about the Linuxppc-dev mailing list