I am trying to configure the use of eDMA with the SAI module on a bare metal project. I configure the DMAMUX to trigger on SAI1 TX and that seems to work, however any read/write from the CCSR space, which includes the SAI register set does not seem to work. I have the following TCD structure in order to send 16 bytes of data.
source address = RAM location of data to transfer
source offset = 2
source data size = 16 bits
source last = 0
destination address = SAI_TDR register for SAI1
destination offset= 0
destination data size = 16 bits
destination last = 0
Number of bytes = 16
Number of iterations = 1
CSR = 0xA (disable DMA request on completion & enable interrupt when major iteration completes)
When using this TCD I do not see the SAI FIFO pointers change, which tells me that the register write did not work. I have tried updating the destination address to DCFG_CCSR_SCRATCHRW1 with similar results. If I update the destination address to a RAM location then the DMA transfer works as expected. Is there a reason I cannot DMA from/to any of the device memory but DMA from/to RAM works?