I'm working on an iMX6 GPMI interface to an asynchronous NAND flash. Taking baby steps, I have been able to issue a reset to the chip and now I'm trying to read it's id. The ID is 5 bytes long and when i set up the dma chain, I see that it actually respond with the right id, but the data is never moved to my buffer. I see the last byte in the GPMI_DATA register, and if i change my dma number of bytes to recieve to 4, i see the first 4 bytes so i know that the GPMI is recieving the data from the NAND. Also, the GPMI_STAT shows that the fifo is empty(bit2). So, where did my data go?
I set the GPMI_PAYLOAD to point to a static local variable, made sure it was word aligned, but nothing shows up there. I had some difficulties initially until i realized that the address registers all needed to be actual addresses, not the mapped address i am used to looking at, but once i changed all addresses by the offset that they are mapped to, my DMA command word chains work great. I'm puzzled because my DMA Read commands work fine, i used a similar local variable to store all my commands and just point the DMA buffer to them, with the offset. It appears that the DMA write isn't working.
Any suggestions, am i even looking at the right place? What could cause my DMA write to not write, but not report any errors?