Subject: Re: Using dmaengine on Freescale P2020 RDB

From: Chuck Ketcham <[email-masked]>
Date: Wed, 6 Apr 2011 13:29:05 -0700 (PDT)

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@21300 {
                        #address-cells = <1>;
                        #size-cells = <1>;
                        compatible = "fsl,eloplus-dma";
                        reg = <0x21300 0x4>;
                        ranges = <0x0 0x21100 0x200>;
                        cell-index = <0>;
                        dma-channel@0 {
                                compatible = "fsl,eloplus-dma-channel";
                                reg = <0x0 0x80>;
                                cell-index = <0>;
                                interrupt-parent = <&mpic>;
                                interrupts = <20 2>;
                        };
                        dma-channel@80 {
                                compatible = "fsl,eloplus-dma-channel";
                                reg = <0x80 0x80>;
                                cell-index = <1>;
                                interrupt-parent = <&mpic>;
                                interrupts = <21 2>;
                        };
                        dma-channel@100 {
                                compatible = "fsl,eloplus-dma-channel";
                                reg = <0x100 0x80>;
                                cell-index = <2>;
                                interrupt-parent = <&mpic>;
                                interrupts = <22 2>;
                        };
                        dma-channel@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 <[email-masked]> wrote:

> From: Ira W. Snyder <[email-masked]>
> Subject: Re: Using dmaengine on Freescale P2020 RDB
> To: "Chuck Ketcham" <[email-masked]>
> Cc: [email-masked]
> 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
> [email-masked]
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>