Hello. We are having an issue with configuring a second SAI interface in conjunction with an AK4619 codec. I have attached configuration information and comments below, but please let me know if there is additional information that would be helpful.
The problem is that I haven’t been able to get the SAI2 interface to come up. Looking at the MCLK, BICK, LRCLK pins I don’t see any clocks, and I don’t see anything on the SDOUT pin. I do see that the kernel initializes the codec over SPI and the codec responds appropriately. But no audio in or out, no clocks and nothing on the SDOUT/SDIN pins.
We found this problem initially on our hardware, but I have reproduced it using the same pinout on a Verdin dev board connected to our AK4619 breakout board.
We have 5 of the exact same codec connected to SAI1, and all are working well.
Kernel
Linux version string:
Linux verdin-imx8mp-14871182 6.6.23-gbf6ce2b001f9-dirty #31 SMP PREEMPT Sat Aug 2 17:05:30 EDT 2025 aarch64 aarch64 aarch64 GNU/Linux
Hardware
| part | info |
|---|---|
| SOM | Verdin i.MX 8M Plus |
| Carrier Board | Verdin Development Board |
| Codec part & driver. | AsahiKASEI AK4619 |
| Codec breakout Board | basic breakout of pins |
Attachments
I have attached the following files:
arch/arm64/boot/dts/freescale/* Device tree source, top level is imx8mp-verdin-dev-icvr.dts
sound/soc/generic multichannel-card.c - modified from simple-card to support multiple codecs connected to a single SAI interface.
sound/soc/codecs ak4619* - the ak4619 I2C driver, modified to support a SPI interface and somewhat customized to our project.
SPI connections
For SAI2, we have two codecs connected to ecspi3 on CS#0 and CS#1. Here are the pins in use.
| Function | Pin | Config |
|---|---|---|
| SCK | SODIMM 129 | MX8MP_IOMUXC_UART1_RXD__ECSPI3_SCLK |
| MOSI | SODIMM 131 | MX8MP_IOMUXC_UART1_TXD__ECSPI3_MOSI |
| MISO | SODIMM 137 | MX8MP_IOMUXC_UART2_RXD__ECSPI3_MISO |
| CS#0 | SODIMM 139 | MX8MP_IOMUXC_UART2_TXD__GPIO5_IO25 |
| CS#1 | SODIMM 222 | MX8MP_IOMUXC_SAI1_RXC__GPIO4_IO01 |
SAI connections.
Here are the pins in use for SAI2. We use TDM mode in the codec to get 4 audio channels per lane. The IMX8MP sources all the clocks.
| Function | Pin | Config |
|---|---|---|
| MCLK | SODIMM 26 | MX8MP_IOMUXC_SAI2_MCLK__AUDIOMIX_SAI2_MCLK |
| BCLK (BICK) | SODIMM 17 | MX8MP_IOMUXC_SAI2_TXC__AUDIOMIX_SAI2_TX_BCLK |
| LRCLK (TX_SYNC) | SODIMM 133 | MX8MP_IOMUXC_SAI2_TXFS__AUDIOMIX_SAI2_TX_SYNC |
| RX_D0 | SODIMM 135 | MX8MP_IOMUXC_SAI2_RXD0__AUDIOMIX_SAI2_RX_DATA00 |
| TX_D0 | SODIMM 24 | MX8MP_IOMUXC_SAI2_TXD0__AUDIOMIX_SAI2_TX_DATA00 |
| RD_D1 | SODIMM 21 | MX8MP_IOMUXC_SAI3_RXFS__AUDIOMIX_SAI2_RX_DATA01 |
| TX_D1 | SODIMM 44 | MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI2_TX_DATA01 |
Working SAI1
As mentioned above, SAI1 is connected to 5 AK4619 codecs using ecspi1 & ecspi2, and all the channels are working.
tdx-info output
Software summary
------------------------------------------------------------
Bootloader: U-Boot
Kernel version: 6.6.23-gbf6ce2b001f9-dirty #31 SMP PREEMPT Sat Aug 2 17:05:30 EDT 2025
Kernel command line: root=PARTUUID=c639c21b-02 ro rootwait console=tty1 console=ttymxc2,115200 consoleblank=0 earlycon
Distro name: NAME="TDX Wayland with XWayland Upstream"
Distro version: VERSION_ID=6.8.1-build.15
Distro variant: -
Hostname: verdin-imx8mp-14871182
------------------------------------------------------------
Hardware info
------------------------------------------------------------
HW model: Toradex Verdin iMX8M Plus on ICVR - Trident Systems
Toradex version: 0063 V1.1A
Serial number: 14871182
Processor arch: aarch64
------------------------------------------------------------