Beaglebone GPMC + burst access + DMA


i have successfully run the GPMC in asynchronous mode for a while, but to get more stable and higher read bandwidth i have recently switched to the synchronous mode with burst-reads. This works well when doing reads and writes with memcpy in kernel space but i’am struggling to get it working with EDMA. I 'am using the exact same DMA configuration that i was using for the asynchronous mode but it shows a weird behavior. Apparently the EDMA tries to access the GPMC with burst of 32 x 16 bit words where the GPMC support a max 16 x 16 bit burst accesses. As a result reading data gives packet with 16 correct data followed by 16 constant value then 16 correct data again. The CAM3 cape seems to be working well with burst reads and EDMA so i suspect that they are using a specific DMA configuration (or a specific DMA channel) but i just cannot figure it out. Any advice ?

Jonathan Piat