Configure i2s device tree as master codec


I already published a topic on configuring i2s device tree but it was getting confused with another topic i published so I decided to republish my topic as a more precise question since I was able to make 2 out of 4 i2s port to work.

First let me explain my setup. I have a custom board over Jetson orin agx devkit module. On my CVB, I have 4 i2s ports connected to i2s1, i2s2, i2s4 and i2s6. Only i2s1 clock is connected to my i2s connector ; it is distributed over all i2s. I have verified with an oscilloscope that all the signals (including the clock) are reaching my custom board. Each i2s port is connected to 16 microphones in tdm format.

Presently, with my custom device tree file, I am able to record data over i2s1 and i2s4 using arecord -D 2p16 -c32 -r32000 -fS32_LE, but strangely it can’t read the i2s clock when recording over i2s2 and i2s6 (even though i make sure to activate the i2s1 clock which is the master clock). So there is a overrun warning and no data is obtained on those 2 ports. Do you have an idea what is causing the i2s4 port to work but not the i2s2 and i2s6?

Here is my dtsi file : (2.4 KB)

Heres my amixer script to adjust i2s settings: (537 Bytes)
and my .asoundrc file : (483 Bytes)

dmesg.txt (66.0 KB)

Thanks for your help


Update on the device tree file, I have updated my device tree file but still the same problem. Here is the updated file: (2.2 KB)

I am pretty confident that the i2s codec is correctly set as master, so I dont really know where the problem could be.

Second Update:

I did manage to make the i2s2 work!

The fix was that I forgot to change the gpio file when modifying the pinmux so the jetson would consider the pins as gpio and not i2s. However I still get the error for i2s6 even though i removed its gpio entry (A0 to A3). Any idea on what could be the reason why it still cant detect my clock when recording on i2s6? Just a reminder im basing my BSP on the devkit BSP.


Sorry for delayed reply.

Firstly, suggest you to take the formal route to configure the pinmux i.e configuring the Audio I2S ports as SFIOs from GPIOs. The method for configuring pinmux is here. I have provided the link assuming you are using Jeson Linux version r35.4.1. Let me know if its different.

I am looking at rest of the attachments. Will respond on them soon


Rest of the attachments look fine. I suspect that its mostly i2s6 pinmux config issue for which you can refer link mentioned in my earlier comment


This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.