Hi, I’m the Toradex AI Assistant.
I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.
Hello, and thank you for your detailed summary and configuration information regarding the SAI2 interface and AK4619 codec integration on the Verdin iMX8M Plus.
Based on your description and pin configuration, here are several focused points to help identify and resolve why SAI2 isn’t producing any clocks or data output:
1. Pin Multiplexing and Validity
Not all pins you’re trying to use for SAI2 are standard or native for this interface on the Verdin iMX8M Plus:
- SODIMM 26 (MCLK): This pin is not listed in the Verdin iMX8M Plus V1.1 datasheet as a standard SAI2_MCLK option. Double-check that this pin can actually provide SAI2_MCLK functionality.
- SODIMM 17 (BCLK), 133 (LRCLK), 135 (RX_D0): These can function for SAI2 as alternate functions, as per the datasheet.
- SODIMM 24 (TX_D0): Ensure this pin is also mapped as SAI2_TX_DATA00 in your device tree.
- SODIMM 21 and 44: These are by default SAI3 pins – if you are reusing them for extra SAI2 lanes, then your device tree must reconfigure these MUX settings explicitly. There are limitations as to which data lines are available for SAI2 on this SoM.
Use the Pinout Designer Tool to double-check for multiplexing conflicts or misconfigured lanes.
2. Device Tree Configuration
Since you have SAI1 working, compare its full configuration with your SAI2 setup. Key device tree considerations:
- Check proper
status = "okay";in your SAI2 node and its associated pins via the pinctrl settings. - Validate that MCLK, BCLK, LRCLK, and data lines are mapped and enabled, and make sure no other interface is claiming these pins.
- Make sure no two device tree nodes compete for the same pins (for instance, default SAI3 definitions or UARTs).
- Device tree docs: Device Tree Overview
3. Clock Configuration Issues
There’s a known issue with SAI clock initialization resetting incorrectly after the first use on iMX8M Plus, leading to silence on subsequent operations. Review this discussion for details:
- SAI clock issue on i.MX8MP Verdin
- Be sure your driver properly configures and keeps the clocks running after initialization. Sometimes it is necessary to manually write clock parent/source in the device tree or tweak relevant settings if the SoC isn’t auto-configuring SAI2 clocks as for SAI1.
4. Codec and TDM Setup
Since the kernel sees the codecs over SPI and SAI1 with similar codecs works, your multichannel-card and AK4619 modifications are likely correct. The missing clocks indicate the SAI2 block itself isn’t being clocked/enabled, or the device tree/proper initialization isn’t setting it as a clock master.
- Confirm in your device tree that SAI2’s
fsl,sai-mclk-masterandfsl,sai-sync-modeproperties reflect that it must drive all clocks (required for TDM master operation). - Ensure that platform devices in your sound card definition are referencing the correct SAI2 interface—not SAI3 or others due to copy-paste errors.
5. Debugging Actions
- Check kernel dmesg for messages related to
sai2initialization. - Use
devmem2orcat /sys/kernel/debug/pinctrlto verify pinmux at runtime. - Test whether you can toggle SAI2 in a simple mode (2-channel I2S, looping playback) before moving to TDM/multichannel operation.
6. Alternative
If SAI2 continues to be problematic, consider SAI1 or SAI3, as these have direct I2S interfaces on the Verdin family:
In Summary
- Double-check all SAI2-related pinmux settings in your device tree—especially for MCLK and those pins marked for alternate functions.
- Review SAI2 clock and device tree clock-parent settings.
- Validate pin assignments with the Pinout Designer Tool.
- Look at the referenced clock issue thread if SAI2 works only on initial use/reset.
If you can share your SAI2 device tree node(s), I can help review further for possible errors.
Best regards,
Toradex AI Assistant.
References: