Hi,
I've attached a code snippet I'm using to set up a DMA transfer between an FPGA on the GPMC bus and SDRAM.
What's happening is that DMA4_CSR(0).BLOCK is never being set. On the GPMC bus, however, we see two sets of writes to the chip: the for-loop that initializes the FPGA RAM area to zeros, and then the DMA activity. We see 64 bytes being transferred, but only DMA4_CSR.LAST and DMA4_CSR.HALF are being set; the loop always times out.
With the exception of the DATA_TYPE field in DMA4_CSDP, this code is identical to code that I wrote to test copying from SRAM to SDRAM.
So what could be going wrong here that I never see the end of block, even though all of the data is being transferred?
__writel is nothing more than
*(volatile uint32_t *) addr = val
Thanks,
Matt Gessner