Hello All,
I am working to support the a 4 channel SSI bus to a Wolfson audio chip (WM5102). The clocks (yellow) and frame sync(green) are being generated by the Wolfson chip. When I capture the data from the audio interface I am seeing 4 16-bit PCM channels at 44.1KHz as I expect. The problem is on transmit I see the first frame sometimes leaving in slot 0 and sometimes in slot 1.
I pulled a patch from another post about setting the Tx/Rx Masks, but I am still have the transmit problem.
I have attached two screen captures showing the measurements of the SSI bus.
Software: Linux Kernel 3.0.101 with a modified imx-ssi.c
Here is dump of some of the settings:
slots=4,
SCR=00000118,
STCR=0000038d,
SRCR=0000038d
STCCR=0004e300
SRCCR=0004e300
STMSK=fffffff0
SRMSK=fffffff0
When Transmitting:
SSI_SCR 11b
SSI_SIER 100000
Hi Andrew
in general this behaviour may be caused by SSI underruns, just for test one can try to
decrease SSI clocks, use minimal image, try to disable wit mode (enable_wait_mode=off),
change location of data buffers to iRAM.
Best regards
igor
Thanks for the tips igor, but I have tried all your options and I still see my channel 1 data moving around.
Is there anything else that I can look at or try?
one can try with bare metal SDK (reuse wm8962.c)
~igor
bare metal is not really an option for me. Is there any versions that support multi-channel SSI bus? Or should I be looking at a hardware change to another bus to support 4 channels of audio?
I think issue may appear with 2 channels too, could you try it ?
I will give this a try, I think I have also seen that case.
I ran a two channel test, (Left/Right) with the off the shelf driver in 3.0.101 with the iMx as the slave. This worked fine at 8kHz and 44kHz. When running with TDM 2 channels worked fine. It seems only to be related to a 4 channel operation. Is there something going on with the two TX buffers? Currently I am running with both TX buffers enabled.
I'm the Freescale TSE for Persistent Systems and Andrew DeLiso sent me an email regarding this thread. He told me that he needs a deeper understanding of the limitations of the SSI interface. Also does this carry into the imx6 plus? Persistent currently has 3 SSI buses running and the extra channels is more of a necessity to properly move the audio. Do we have any version of our BSP other than bare metal where more than 2 channels are supported?
Carl
I.MX6 plus have similar SSI modules.
Unfortunately I am not aware of linux versions that support multi-channel SSI
bus, so it may be recommended to find correct SSI configuration
using bare metal SDK (using wm8962.c as example), then port it to linux.
Also one has option to contact Freescale Professional Services to develop this configuration
http://www.freescale.com/webapp/sps/site/overview.jsp?code=CW_PROFESSIONAL
Best regards
igor