Re: [PATCH] dmaengine: add CSR SiRFprimaII DMAC driver

From: Barry Song
Date: Wed Sep 07 2011 - 22:18:56 EST


2011/9/8 Koul, Vinod <vinod.koul@xxxxxxxxx>:
> On Thu, 2011-09-08 at 00:46 +0800, Barry Song wrote:
>> Hi Vinod,
>> thanks for your quick feedback.
>>
>> 2011/9/8 Koul, Vinod <vinod.koul@xxxxxxxxx>:
>> > On Tue, 2011-09-06 at 22:41 -0700, Barry Song wrote:
>> >> From: Rongjun Ying <rongjun.ying@xxxxxxx>
>> >
>> >> +config SIRF_DMA
>> >> + Â Â tristate "CSR SiRFprimaII DMA support"
>> >> + Â Â depends on ARCH_PRIMA2
>> >> + Â Â select DMA_ENGINE
>> >> + Â Â help
>> >> + Â Â Â Enable support for the CSR SiRFprimaII DMA engine.
>> > How different is it from the other primacell based DMA drivers, and why
>> > wouldn't it make sense to use/modify one of them?
>>
>> it is much different with primacell based DMA like pl080, pl330.
>> prima2 has a self-defined DMAC IP. basically it is a 2D mode dma with
>> two scales X and Y and direct way to start and stop DMA.
>> every channel has fixed function to serve only one perpheral. so you
>> find we have a filter id.
> okay, what do you mean by 2D mode? Is it similar to what TI folks, Linus
> W and Jassi Brar posted RFC's on?

In SiRFprimaII 2-D DMA, the system memory space is interpreted
as a 2-D layout instead of a linear 1-D layout. More specifically, the
system memory can be considered as
multiple data lines. The length of the data line is determined by the
user-selected DMA_WIDTH register.
The user can specify a data window that the user wants to access using
four parameters:
â Start address
â X length
â Y length
â Width

The idea of a 2-D DMA is shown in figure 2d-dma.png attached.

If you specifies the Y length as 0 or the X length equals to the DMA
width, then this 2-D DMA reduces to
1-D. If the user configures the X length greater than the DMA width,
then the extra data is wrapped around
to the next data line, this may corrupt the DMA transfer for
multiple-line 2-D DMA. If this is a 1-D DMA, then
there is no issue. The attached diagram 2d-dma2.png shows the
wrap-around of the extra data in case the X length
greater than DMA width.

Thanks
barry

Attachment: 2d-dma.PNG
Description: PNG image

Attachment: 2d-dma2.PNG
Description: PNG image