Using dmaengine on Freescale P2020 RDB
Chuck Ketcham
chuckk2333 at yahoo.com
Thu Apr 7 06:29:05 EST 2011
Ira,
Thanks for the reference to the CARMA drivers. I will have to take a look at that.
In my case, CONFIG_NET_DMA is not enabled. However, I did notice the following entry in my p2020rdb.dts file that may have something to do with dma channels being allocated -- can anyone interpret this?:
dma at 21300 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "fsl,eloplus-dma";
reg = <0x21300 0x4>;
ranges = <0x0 0x21100 0x200>;
cell-index = <0>;
dma-channel at 0 {
compatible = "fsl,eloplus-dma-channel";
reg = <0x0 0x80>;
cell-index = <0>;
interrupt-parent = <&mpic>;
interrupts = <20 2>;
};
dma-channel at 80 {
compatible = "fsl,eloplus-dma-channel";
reg = <0x80 0x80>;
cell-index = <1>;
interrupt-parent = <&mpic>;
interrupts = <21 2>;
};
dma-channel at 100 {
compatible = "fsl,eloplus-dma-channel";
reg = <0x100 0x80>;
cell-index = <2>;
interrupt-parent = <&mpic>;
interrupts = <22 2>;
};
dma-channel at 180 {
compatible = "fsl,eloplus-dma-channel";
reg = <0x180 0x80>;
cell-index = <3>;
interrupt-parent = <&mpic>;
interrupts = <23 2>;
};
};
--- On Wed, 4/6/11, Ira W. Snyder <iws at ovro.caltech.edu> wrote:
> From: Ira W. Snyder <iws at ovro.caltech.edu>
> Subject: Re: Using dmaengine on Freescale P2020 RDB
> To: "Chuck Ketcham" <chuckk2333 at yahoo.com>
> Cc: linuxppc-dev at lists.ozlabs.org
> Date: Wednesday, April 6, 2011, 1:10 PM
> On Wed, Apr 06, 2011 at 12:40:58PM
> -0700, Chuck Ketcham wrote:
> > All,
> >
> > I have a Freescale P2020 Reference Design Board.
> I am investigating the possibility of using the dmaengine
> capability in the 2.6.32.13 kernel to transfer data from
> memory out onto the PCIe bus. As a first step, I
> thought I would try the DMA test client (dmatest.ko) to make
> sure the dmaengine was functioning. I know this
> doesn't transfer anything over PCIe but only transfers from
> one memory buffer to another, but I figured I need to get
> this working first. Anyway I built dmatest.ko and ran
> it (with insmod), and discovered it didn't do
> anything. I added some printk's to the kernel to
> investigate what was going on and I found that all attempts
> to find a channel within dma_request_channel were
> unsuccessful. Three of the channels were not used
> because they were already publicly allocated. One
> channel was not used because it didn't have DMA_MEMCPY
> capability.
> >
> > Here are my questions then:
> > 1. Is the dmaengine the appropriate method to use for
> transferring data from memory out onto the PCIe bus?
> > 2. If dmaengine is correct, what can I do to free up a
> channel for my own use?
> >
>
> I use the Freescale DMA engine to transfer lots of data out
> to PCI, on
> an 8349EA chip. The P2020 DMA engine uses the same driver.
>
> I hunch you have enabled CONFIG_NET_DMA, which will claim
> the channels.
> You should disable it to use the devices for other uses.
>
> If you want an example of using the DMA engine to transfer
> from DDR
> memory to the PowerPC local bus, search the mailing list
> archives for
> "CARMA Board Drivers" (RFCv7 was the latest posting).
> Transferring from
> DDR to PCI works exactly the same way.
>
> Hope it helps,
> Ira
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
More information about the Linuxppc-dev
mailing list