I have setup a machine driver and device tree to connect the in-tree Maxim 98357a codec driver to SSI1 via the AUD3 external port (see attached files) on a Boundary Devices Nitrogen6x SOM V2, starting with the Boundary Devices 4.9.x kernel and the machine driver in the thread here. The card is successfully registered, but when I use speaker-test or aplay I can see that the TXD signal is constant low even though the TXC and TXFS signals are toggling at the expected rates. Here's where I currently stand:
So it currently appears that the SSI simply isn't pulling from the FIFOs into the shift register. This obviously would prevent data from appearing on TXD and would be consistent with the DMA buffer filling up and causing the pcm_write call to block. I would expect overrun instead of underruns with FIQ mode, but I haven't explored that in detail. Regardless, it isn't clear to me what could cause this situation to arise. As noted, the TE bit is definitely being set in SCR.
Please advise if you see anything amiss or have any suggestions on additional ideas to review. Thanks in advance.
Solved! Go to Solution.
Found the problem. The sample machine driver that I had used as my starting point was setting TDM mask bits to zero to indicate the active slot, as is defined by the SSIx_STMSK register. However, since then the fsl_ssi.c module was updated to invert the mask value so that it is consistent with the spec for snd_soc_dai_set_tdm_slot. Once I changed the mask to indicate the active slots with ones, everything worked as expected. The updated imx-max98357a.c file is attached for future reference.
Found the problem. The sample machine driver that I had used as my starting point was setting TDM mask bits to zero to indicate the active slot, as is defined by the SSIx_STMSK register. However, since then the fsl_ssi.c module was updated to invert the mask value so that it is consistent with the spec for snd_soc_dai_set_tdm_slot. Once I changed the mask to indicate the active slots with ones, everything worked as expected. The updated imx-max98357a.c file is attached for future reference.
Hi Travis
also one can try with simple tests described in sect.7.1.5 Unit Test
sect.7.1 Advanced Linux Sound Architecture (ALSA) System on a
Chip (ASoC) Sound attached Linux Manual. Drivers are described in
Figure 7-1. ALSA SoC Software Architecture, Table 7-1.
Probably one can try unchanged configuration with sgtl5000 and compare
ssi registers with working case.
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------