On Thu, 2009-05-14 at 09:13 -0700, Ira Snyder wrote: > Hello all. > > I'm working on a driver for a custom board (based heavily on the > MPC8349EMDS board) to dump data out of onboard FPGA's. I need to use the > onboard DMA controller for this, mostly due to data transfer rate and > timing requirements. > > Of course, I'd like to "play nice" with the existing Linux > infrastructure in my driver, even though I have no plans to submit the > driver upstream (since it is only useful for our custom board). > > I have been using the DMAEngine API to interact with the DMA controller, > and it works without any problems. However it seems that it is missing > one of the major features that is supported by almost all DMA > controllers: scatter/gather support. > > What I'd really like to do is give the controller a scatterlist and list > of hardware addresses, and have it set up the transfer. The Freescale > hardware can handle this, and I could program it by hand to do so, but I > don't want to invent my own DMA API. > > I'm aware that the DMAEngine API was designed to offload memcpy, and > pretty much nothing else. Is there any chance that such a change would > be accepted into the mainline kernel? Any opinions on what such an API > should look like? >
Have you taken a look at the 'slave' interface implemented by dw_dmac and other drivers? It has the following interface: struct dma_async_tx_descriptor *(*device_prep_slave_sg)( struct dma_chan *chan, struct scatterlist *sgl, unsigned int sg_len, enum dma_data_direction direction, unsigned long flags); Haavard uses this interface to do sgl transfers on behalf of the atmel-mci driver (drivers/mmc/host/atmel-mci.c). -- Dan _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev