Recently some customers reported they find the audio Left and right channel swap issue of i.MX53 SSI module. The root cause is when CPU loading increase it don’t feed PCM date into SSI TX FIFO in time and result in SSI TX FIFO underrun, SSI transmits previous data in FIFO repeatedly and Left and right channel swap. But if SSI dual FIFO feature is enabled, both left / right channel own independent FIFO, which result that FIFO0 only sends left channel data and FIFO1 sends right channel data.
DUAL_FIFO was documented into BSP RM.CONFIG_MXC_SSI_DUAL_FIFO: This config is used to enable 2 SSI FIFO for audio transfer.In menuconfig, this option is available under
Device drivers > Sound card support > Advanced Linux Sound Architecture > ALSA for SoC
audio support > MXC SSI enable dual fifo.
We are using a imx53 with Android. It works fine to record and play audio files. However if we set the volume on one of the channels (right/left) during the audio play AND in the background we record any audio on that same device, next time we try to play audio files it is kept muted. We need to wait for some seconds so it works again. But if there is another recording, it will get muted again. If we don't set diff levels for right/left audio it does not.
is it possible that this is the root cause of the issue i'm having?
I am experiencing such behavior on i.mx25 with 2.6.28 kernel. The only difference is that I see input channels swapped. Starting from which kernel version is dual FIFO feature is available?