EDMA

Hello,

In this spec http://www.ti.com/product/dm3730 page I see that the DM3730
has an Enhanced Direct Memory Access (EDMA) Controller (128
Independent Channels). I would like to use it for copying memory around
(1280x720x2 bytes) in an asynchronous way (without using the CPU).

Does anyone know how do I use it or where I can find information about
using it?

Regards,

Hi,
Hi,

On the same page, you can find a link to "AM/DM37x Multimedia Device
Technical Reference Manual (Silicon Revision 1.x) (Rev. O)":
http://www.ti.com/litv/pdf/sprugn4o

It says the EDMA is embedded in the IVA2.2 subsystem, so I think you
probably can't access it from the ARM.
There are different kinds of general and dedicated DMA's on that
device.
Once you pick what you want to use, you should then see the reference
manuals / wiki's for that specific DMA.

Cheers,
Akhil

Hi,

Hi.

It says the EDMA is embedded in the IVA2.2 subsystem, so I think you
probably can't access it from the ARM.

If the DM3730 is not to different to the Omap3430 you can access it from
the ARM. A device-driver may be available in the linuxutils package (the
TI stuff that also contains CMEM etc.).

If it works: You have to power the IVA2.2, and you need to allocate your
buffers via CMEM or use memory regions that have a fixed physical
address (framebuffers). The EDMA does not care about the ARM MMU.

I may be able to write some code that mimics DMA just by accessing
/dev/mem, e.g. by directly programming the EDMA3 from ARM-userspace.
That is not to difficult. Will try that.

Drawback: You won't be able to get a notification when the transfer is
over, but it is possible to poll for completion.

If I get it working I'll post a reply here.

Cheers,
  Nils

Update:

Just checked the TRM, and unfortunately it is not possible from the ARM
subsystem (got fooled from my DaVinci experience I think).

Most of the DSP internal address-spaces are visible from the ARM via the
L3 interconnect including crazy things like direct access to the code
and data caches). Unfortunately the EDMA3 registers are not. :frowning:

As such the EDMA3 can only be programmed from the DSP.

It may be possible to take a detour through the video sequencer which
can also access the EDMA3, but that is much more work than using the
sDMA from ARM via a kernel module.

Cheers,
  Nils