Encountering SSI underruns using SDMA to drive it.

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Encountering SSI underruns using SDMA to drive it.

422 Views
dougbailey
Contributor III

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?

Labels (2)
0 Kudos
1 Reply

317 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello Doug,

   if you can not allow the latency , you had better use the cyclic mode to implement your case, you could refer to the code drivers/tty/serial/imx.c in yocto release, there is the sample for how to use cyclic dma mode.

 Have a nice day!

Best regards,

Weidong

0 Kudos