Want to use I2S3 s Audio on my custom carrier board

Please let me know what are changes to be done in the PIN MUX sheet for generating the DTSI files for enabling the I2S3 on my custom carrier board.

My understanding is

  1. In the PIN MUX sheet we need to configure these pins as GPIO3_PA_04, GPIO3_PA_05, GPIO3_PA_06, GPIO3_PA_07
  2. What is the state of it ( should we select as Master or Slave?)
  3. What are initial states( Initial Pulldown, Initial PullUp, Drive 0, Drive1, N/A) of the individual pins for
    I2S3_SCLK
    I2S3_DOUT
    I2S3_DIN
    I2S3_FS

After checking in the PIN MUX sheet it says they are use as part of M.2, Key E Expansion Slot Pins.

Thanks

Hi nagesh_accord,

What’s your Jetpack version in use?

Do you mean the following pins?

If so, it seem has been configured as I2S usage by default so that you don’t need to change any state for these 4 pins.

Jetpack version is 5.0.1.

If you observe it is enabled as I2S4 (right side) in the PIN MUX Sheet, but the signal name we want to enable is I2S3( on the customised carrier board)
So definitely we need to reconfigure accordingly.

That is just the naming. These 4 pins have been configured for I2S usage by default.
Please confirm which I2S interface you are using.

we are using I2S3 on our customized board for Audio purpose. We need to enable it using PIX MUX sheet.

Could you help to check from the HW schematic for the exact pins you want to use for I2S?

Do you want to use the pins from upper screenshot from you? (i.e. G7, L15, F10)

Or bottom screenshot? (i.e. C59, K59, J59, C60)

Please also refer to the following figure of details audio device connection for AGX Xavier.

Thanks for the response.
We want to use the pins: C59, K59, J59, C60.
This IS23 is connected to a Codec module on our customization board but we are not able to detect any sound.

Please let us know how to go about enabling this, as our hardware team is telling they are not able to detect it, even though the schematics for default carrier board says it is enabled and mapped to I2S4 outside.

please share your more thoughts on this. Also want to know, if there are any things which we cannot do through PINMUX spreadsheet method and we may need to enable some particular dtsi files manually?? . Any examples you have or come across

my further plan is to modify device tree “.dtsi” files in the “common” folder related to audio where there are no entry for “I2S3”. Wherever there are entries for I2S4 similarly copy and make updates for I2S3. Please let me know, if this is the correct approach as there is not much that can be done n PIN MUX sheet to make this I23S work.

If so, pinmux for theses pins have been configured for I2S3.

Could you share the full dmesg and also the dtb file in use for further check?

$ sudo dmesg -n 8

Will share the dmesg command output once the customized carrier board test setup is ready.
The parent DTB file in use in our <board.conf> jetson-agx-xavier-industrial.conf which is used in flash.sh is
“tegra194-p2888-0008-p2822-0000.dtb”

not able to attach the .dtb file here. the .dtb file attachment is not supported here.

we are not getting any output for the dmesg -n 8 command.

You could just simply modify .dtb to .txt and upload here.

That command is used to configure the loglevel.

$ sudo dmesg -n 8
$ sudo dmesg > dmesg.log

Please share the dmesg.log as file here for further check.

dmesg1.txt (82.0 KB)

dmesg.txt file on the target PC is attached here.

I can’t find any i2s related message in your dmesg.
Could you also share the dtb file here?

[  295.000843] FAT-fs (sda1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

It seems there’s mount issue on sda1, are you using SD card?

renamed the master DTB file as .TXT file for attaching here. Are u going to decode it to .DTS file and then check it? using DTC or FTDUMP command… pls clarify
tegra194-p2888-0008-p2822-0000.txt (385.3 KB)

its in built eMMC card on the SOC module.

Yes, I’ve decompiled the dtb to dts and checked the node for I2S4 has been enabled.

Could you share the result of the following command on your board?

$ cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups

ad.log (38.4 KB)

FYI. I have modified some .dtsi files in the device tree folder for I2S3 enabling by copy pasting already existing I2S4 structures. Is this the correct approach. Please clarify. Thanks.

From your result, it seems i2s4 has been enabled correctly.

44 (dap4_fs_pa7):
	pull=0
	tristate=0
	enable-input=1
	io-reset=0
	rcv-sel=0
	io-hv=0
	schmitt=0
	pull-down-strength=0
	pull-up-strength=0
	drive-type=2
	func=i2s4
	pad-power=0
45 (dap4_din_pa6):
	pull=1
	tristate=1
	enable-input=1
	io-reset=0
	rcv-sel=0
	io-hv=0
	schmitt=0
	pull-down-strength=0
	pull-up-strength=0
	drive-type=2
	func=i2s4
	pad-power=0
46 (dap4_dout_pa5):
	pull=0
	tristate=0
	enable-input=0
	io-reset=0
	rcv-sel=0
	io-hv=0
	schmitt=0
	pull-down-strength=0
	pull-up-strength=0
	drive-type=2
	func=i2s4
	pad-power=0
47 (dap4_sclk_pa4):
	pull=0
	tristate=0
	enable-input=1
	io-reset=0
	rcv-sel=0
	io-hv=0
	schmitt=0
	pull-down-strength=0
	pull-up-strength=0
	drive-type=2
	func=i2s4
	pad-power=0

but we need I2S3 to be enabled.

I2S3 is indeed I2S4 in sw.

You could also run the following command to check if the i2s is registered.

$ sudo cat /sys/kernel/debug/asoc/components |grep i2s

and please share the result of the following command:

$ cat /proc/asound/cards