Subject: Using dmaengine on Freescale P2020 RDB

From: Chuck Ketcham <[email-masked]>
Date: Wed, 6 Apr 2011 12:40:58 -0700 (PDT)

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?

Thank you.

Chuck