AnsweredAssumed Answered

Encountering SSI underruns using SDMA to drive it. 

Question asked by Doug Bailey on Jul 18, 2017
Latest reply on Jul 25, 2017 by Wigros Sun

I have a iMX6-DL based board running the NXP produced Linux kernel (V4.1.15). On this board, I have a SSI in TDM mode that is outputting an 8 slot bus at 8 kHz. I am trying to drive this with the SDMA using the Linux dmaengine API.

 

I am running into an issue where the SSI is encountering underrun errors. When this occurs, I see a 2 mS latency delay in the generation of the DMA callback from the end of data in the last DMA buffer. If I try to queue multiple DMA transactions that contain 8 mS of data, I still encounter the underrun errors.

 

At present, I am using the standard dmaengine_prep_slave_single DMA buffer methods. I have thought about using the cyclic methods but do not know how I would get access to the buffer being used to refresh the contents.

 

I am new to this DMA interface.  Any suggestions?

Outcomes