I have a i.mx6sololite based board, running yocto with linux kernel 3.0.35. I am happy to say that I am able to use the EIM interface on CS1 (EIM_CS1*) to do memory transactions with an fpga. So I can do memory mapped (on the host) register read/write successfully to/from the FPGA.
However, the performance is, as is expected, not good. So I'd like to improve it by using DMA instead. My thinking is the following:
- add character device driver which will support allocating DMAable memory (dma_alloc_coherent) and support triggering the DMA and managing the completion interrupt
- userspace application will use ioctl to talk to the character device driver to copy its userspace buffer into the DMAable memory and trigger the DMA to transfer the data to the fpga
I took a look at the following driver : Linux/drivers/dma/imx-dma.c - Linux Cross Reference - Free Electrons
But I'm unsure if that's a good starting point. Searching for EIM DMA example shows this link : working SDMA with EIM on iMX6
I would be grateful for any advice/suggestions on EIM DMA drivers.