Messages in this thread | | | From | Barry Song <> | Date | Thu, 8 Sep 2011 10:12:09 +0800 | Subject | Re: [PATCH] dmaengine: add CSR SiRFprimaII DMAC driver |
| |
2011/9/8 Koul, Vinod <vinod.koul@intel.com>: > 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@intel.com>: >> > On Tue, 2011-09-06 at 22:41 -0700, Barry Song wrote: >> >> From: Rongjun Ying <rongjun.ying@csr.com> >> > >> >> +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 [unhandled content-type:image/png][unhandled content-type:image/png] | |