Etson Nano custom carrier – MAX98357A amplifier over I2S (no sound)

Hello everyone,

I’m continuing a project I started earlier to integrate a **MAX98357A/B I²S amplifier on a custom carrier board

Amplifier connected directly I²S here is our pinout:

Function Module Pin SoC Pad Pinmux Function Notes
AMP-BCLK 199 DAP2_SCLK (PAA1) i2s2 OK
AMP-LRCLK 193 DAP2_FS (PAA0) i2s2 OK
AMP-DIN 195 DAP2_DIN (PAA2) i2s2 OK
AMP-DOUT not used (amp input-only)

I tried to verify the pins and routing:

sudo cat /sys/kernel/debug/pinctrl/700008d4.pinmux/pinmux-pins | grep DAP2
pin 208 (DAP2_FS PAA0): function i2s2 group dap2_fs_paa0
pin 209 (DAP2_SCLK PAA1): function i2s2 group dap2_sclk_paa1
pin 210 (DAP2_DIN PAA2): function i2s2 group dap2_din_paa2
pin 211 (DAP2_DOUT PAA3): function i2s2 group dap2_dout_paa3

The MAX98357A codec driver (max98357a.c) is built into the kernel.
Confirmed with dmesg message from the driver:

This is a snippet from the device tree where I added a dummy codec

i2s@702d1200 {                     // DAP2 → I2S3 in ALSA
nvidia,ahub-i2s-id = <2>;
status = “okay”;
};

max98357-codec {
compatible = “maxim,max98357a”;
#sound-dai-cells = <0>;
status = “okay”;
};

sound {
compatible = “nvidia,tegra-audio-max98357a”;
nvidia,model = “jetson-nano-max98357a”;
nvidia,num-codec-link = <4>;
nvidia,audio-routing = “Playback”, “Speaker”, “Speaker”, “OUT”;
nvidia,xbar = <&tegra_axbar>;
mclk-fs = <0x100>;

nvidia,dai-link-2 {
    link-name = "i2s3-max98357";
    cpu-dai = <&tegra_i2s3>;
    cpu-dai-name = "I2S3";
    codec-dai = <&max98357-codec>;
    codec-dai-name = "HiFi";
    format = "i2s";
    bitclock-master;
    frame-master;
    bit-format = "s16_le";
    srate = <48000>;
    num-channel = <2>;
    status = "okay";
};

Pinmux confirms DAP2 pins are set to i2s2 function.
GPIO AMP_EN = 1 (high).
Codec node exists under /proc/device-tree/sound/nvidia,dai-link-2.

Tried routing:

sudo amixer -c 1 cset name='MVC1 Mux' ADMAIF1
sudo amixer -c 1 cset name='I2S3 Mux' MVC1

When I list devices (aplay -l) I got the following:

**** List of PLAYBACK Hardware Devices ****
card 0: tegrahda [tegra-hda], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 0: ADMAIF1 CIF ADMAIF1-0 Subdevices: 1/1 Subdevice
#0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 1: ADMAIF2 CIF ADMAIF2-1 Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 2: ADMAIF3 CIF ADMAIF3-2 Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 3: ADMAIF4 CIF ADMAIF4-3 Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 4: ADMAIF5 CIF ADMAIF5-4 Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 5: ADMAIF6 CIF ADMAIF6-5 Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 6: ADMAIF7 CIF ADMAIF7-6 Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 7: ADMAIF8 CIF ADMAIF8-7 Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 8: ADMAIF9 CIF ADMAIF9-8 Subdevices: 1/1 Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 9: ADMAIF10 CIF ADMAIF10-9 Subdevices: 1/1 Subdevice #0: subdevice #0Subdevice #0: subdevice #0

I tested the system with:
aplay -D hw:1,0 /usr/share/sounds/alsa/Front_Center.wav

But the speaker is silent, running out of ideas.
I would gratefull full any help.

Function Module Pin SoC Pad Pinmux Function Notes
AMP-BCLK 199 DAP2_SCLK (PAA1) i2s2 OK
AMP-LRCLK 193 DAP2_FS (PAA0) i2s2 OK
AMP-DIN 195 DAP2_DIN (PAA2) i2s2 OK
AMP-DOUT not used (amp input-only)

Could you recheck this mapping again. What we have from CVM for I2S is

I2S_DOUT → 193

I2S_DIN → 195

I2S_FS → 197

I2S_SCLK → 199

I assuming you are using only custom carrier board not the CVM.

Am seeing some mismatch with above pins on your end. We could first align here before we could proceed further

Yes, we’re using a custom carrier board, and the amplifier is connected to the Jetson Nano module as follows:

Amplifier Signal Jetson Module Pin SoC Pad / Function
AMP-BCLK Pin 199 I2S0_SCLK I
AMP-DIN Pin 193 I2S0_DOUT
NOT Connected Pin 195 I2S0_DIN
AMP-LRCLK Pin 197 I2S0_FS
AMP-EN GPIO3_PH.07


Hi,

Thanks for the info. Did you tried probing the I2S3 signal just before the Amplifier pins?. Do we see valid signals on all I2S lines during the playback?.

Hi thanks for the prompt response, We checked with a scope and do not see any I2S signal on the jetson side.

I also tried to verify the pins and routing with this result:

pin 208 (DAP2_FS   PAA0): 700008d4.pinmux (GPIO UNCLAIMED) (HOG) function i2s2 group dap2_fs_paa0
pin 209 (DAP2_SCLK PAA1): 700008d4.pinmux (GPIO UNCLAIMED) (HOG) function i2s2 group dap2_sclk_paa1
pin 210 (DAP2_DIN  PAA2): 700008d4.pinmux (GPIO UNCLAIMED) (HOG) function i2s2 group dap2_din_paa2
pin 211 (DAP2_DOUT PAA3): 700008d4.pinmux (GPIO UNCLAIMED) (HOG) function i2s2 group dap2_dout_paa3

I also work with the

NV_Jetson_Nano_Module_Pinmux_Config_Template.xls

I’ve reviewed the document, but to be honest, it’s still not completely clear which I²S interface number is actually correct. I checked similar posts, and some people refer to I²S2 while others mention I²S4. It’s also possible that I didn’t route the signals correctly. As far as we know, on our custom carrier board we’re using the same pins as the devkit—or at least that was our intention.

Now it configured to dap2 but some documentation mentions that we shall use dap4.

Hi,

Could you confirm does I2S2_SCLK and I2S2_FS also no signal, based on your information I could see some issue on PAA2

AMP-DIN 195 DAP2_DIN (PAA2) i2s2 OK

Base on your info provided as above, the PAA2 is Tegra I2S2 DIN which is not the correct pin to be connected to AMP-DIN, I2S2 DOUT(PAA3) should be connected to AMP-DIN

here is the correct mapping

PAA0 → I2S2 FS

PAA1→ I2S2 SCLK

PAA3 → I2S2 DOUT

Could you provide the Module version or DT used during flashing the board. I would like to review once, I believe some issue with the I2S instance used on your side.

Yes I can confirm that no signal on FS and SCLK pins. Now I try to route to I2S4 and DAP4.

Yes, I2S4 was actually exposed via module pin 193, 195, 197, 199. Make sure to enable I2S4 pinmux and also update amixer control and DT configs to use I2S4

Can you help me with the steps to enable i2s4 pins? We have a custom kernel so Jetson-io.py not working. I would do it manually in the device tree, but if I make a mistake I will have to re-flash the board.

Could you confirm the Jetpack release version used on your end.

You can try adding this piece of code in your dtsi and let me know if it works.

gpio@6000d000 {
	40pin_audio_pinmux: audio_pins {
		/* For I2S4 */
		gpio-hog;
		function;
		gpios = <
			TEGRA_GPIO(J, 4) 0
			TEGRA_GPIO(J, 5) 0
			TEGRA_GPIO(J, 6) 0
			TEGRA_GPIO(J, 7) 0
			>;
		label = "I2S4_LRCLK", "I2S4_SDIN", "I2S4_SDOUT",
			"I2S4_CLK";
		
		status = "okay";
	};
};

I am using 4.9.337 tegra and 32.7.6-20241104234540 jetpack version, I have a custom camera driver so plugin manager disabled. But we are using the same i2s lines on the custom carrier board as the devkit.

This is my current gpio@6000d000 node:

	gpio@6000d000 {
		compatible = "nvidia,tegra210-gpio", "nvidia,tegra124-gpio", "nvidia,tegra30-gpio";
		reg = <0x0 0x6000d000 0x0 0x1000>;
		interrupts = <0x0 0x20 0x4 0x0 0x21 0x4 0x0 0x22 0x4 0x0 0x23 0x4 0x0 0x37 0x4 0x0 0x57 0x4 0x0 0x59 0x4 0x0 0x7d 0x4>;
		#gpio-cells = <0x2>;
		gpio-controller;
		#interrupt-cells = <0x2>;
		interrupt-controller;
		gpio-ranges = <0x40 0x0 0x0 0xf6>;
		status = "okay";
		gpio-init-names = "default";
		gpio-init-0 = <0x41>;
		gpio-line-names = [00 00 00 00 00 00 00 00 00 00 00 00 53 50 49 31 5f 4d 4f 53 49 00 53 50 49 31 5f 4d 49 53 4f 00 53 50 49 31 5f 53 43 4b 00 53 50 49 31 5f 43 53 30 00 53 50 49 30 5f 4d 4f 53 49 00 53 50 49 30 5f 4d 49 53 4f 00 53 50 49 30 5f 53 43 4b 00 53 50 49 30 5f 43 53 30 00 53 50 49 30 5f 43 53 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 31 33 00 00 00 00 00 00 00 00 00 00 00 00 55 41 52 54 31 5f 52 54 53 00 55 41 52 54 31 5f 43 54 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 32 53 30 5f 46 53 00 49 32 53 30 5f 44 49 4e 00 49 32 53 30 5f 44 4f 55 54 00 49 32 53 30 5f 53 43 4c 4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 30 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 31 32 00 00 00 00 00 00 47 50 49 4f 31 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 30 39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 53 50 49 31 5f 43 53 31 00 00 00 00 00 00 00 00];
		linux,phandle = <0x5b>;
		phandle = <0x5b>;

		e2614-rt5658-audio {
			gpio-hog;
			function;
			gpios = <0x4c 0x0 0x4d 0x0 0x4e 0x0 0x4f 0x0 0xd8 0x0 0x95 0x0>;
			label = "I2S4_LRCLK", "I2S4_SDIN", "I2S4_SDOUT", "I2S4_CLK", "AUDIO_MCLK", "AUD_RST";
			status = "disabled";
			linux,phandle = <0xb6>;
			phandle = <0xb6>;
		};

		system-suspend-gpio {
			status = "okay";
			gpio-hog;
			output-high;
			gpio-suspend;
			suspend-output-low;
			gpios = <0x6 0x0>;
			linux,phandle = <0xe5>;
			phandle = <0xe5>;
		};

		camera-control-output-low {
			gpio-hog;
			output-low;
			gpios = <0x97 0x0 0x98 0x0>;
			label = "cam1-pwdn", "cam2-pwdn";
		};

		default {
			gpio-input = <0xd8 0xc 0xd 0xe 0xf 0xe8 0x26 0x95 0x5 0xbc 0xbd 0xbe 0xc1 0xc2 0xa8 0xa9 0xc8 0xca 0x4d 0x4e 0x4c 0x4f 0x32 0x33 0x10 0x11 0x12 0x13 0x14 0x3a 0x3d 0x3e 0xe4>;
			gpio-output-low = <0x97 0x98 0x38 0x3b 0x3c 0x3f 0x40 0x42>;
			gpio-output-high = <0x6 0xbb 0x41 0xe7>;
			linux,phandle = <0x41>;
			phandle = <0x41>;
		};
	};

Shall I simply add the suggested lines or rewrite it the suggested way?

I added the suggested lines, but I had to change the macros to actual hex values because without it the compiler dropped a syntax error.

I tried to validate the routing and the dts file with the followings:

sudo  cat /sys/kernel/debug/pinctrl/700008d4.pinmux/pinmux-pins | grep DAP4
pin 76 (DAP4_FS PJ4): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 77 (DAP4_DIN PJ5): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 78 (DAP4_DOUT PJ6): (MUX UNCLAIMED) (GPIO UNCLAIMED)
pin 79 (DAP4_SCLK PJ7): (MUX UNCLAIMED) (GPIO UNCLAIMED)
sudo  cat /sys/kernel/debug/clk/clk_summary | grep -i i2s
i2s4_sync                                   0            0    24576000    24576000        0 0  
i2s3_sync                                   0            0    24576000    24576000        0 0  
i2s2_sync                                   0            0    24576000    24576000        0 0  
i2s1_sync                                   0            0    24576000    24576000        0 0  
i2s0_sync                                   0            0    24576000    24576000        0 0  
i2s4                                        0            0    49151980    11289600        0 0  
i2s3                                        0            0     3071999     3072000        0 0  
i2s2                                        0            0     1536000     1536000        0 0  
i2s1                                        0            0    49151980    11289600        0 0  
i2s0                                        0            0     6553598     1536000	      0 0

If I run:
speaker-test -D hw:1,0 -c 2 -t sine
I2S2 and I2S3 got a 1 like this:

i2s3                                        1            1     3071999     3072000        0 0  
i2s2                                        1            1     1536000     1536000        0 0
dmesg | grep -i asoc
[    1.435397] tegra-asoc: sound: ADMAIF1 <-> ADMAIF1 mapping ok
[    1.435516] tegra-asoc: sound: ADMAIF2 <-> ADMAIF2 mapping ok
[    1.435636] tegra-asoc: sound: ADMAIF3 <-> ADMAIF3 mapping ok
[    1.435750] tegra-asoc: sound: ADMAIF4 <-> ADMAIF4 mapping ok
[    1.435863] tegra-asoc: sound: ADMAIF5 <-> ADMAIF5 mapping ok
[    1.435977] tegra-asoc: sound: ADMAIF6 <-> ADMAIF6 mapping ok
[    1.436089] tegra-asoc: sound: ADMAIF7 <-> ADMAIF7 mapping ok
[    1.436202] tegra-asoc: sound: ADMAIF8 <-> ADMAIF8 mapping ok
[    1.436316] tegra-asoc: sound: ADMAIF9 <-> ADMAIF9 mapping ok
[    1.436432] tegra-asoc: sound: ADMAIF10 <-> ADMAIF10 mapping ok
sudo grep dap4 /sys/kernel/debug/tegra_pinctrl_reg
Bank: 1 Reg: 0x70003144 Val: 0x00000045 -> dap4_fs_pj4
Bank: 1 Reg: 0x70003148 Val: 0x00000045 -> dap4_din_pj5
Bank: 1 Reg: 0x7000314c Val: 0x00000045 -> dap4_dout_pj6
Bank: 1 Reg: 0x70003150 Val: 0x00000045 -> dap4_sclk_pj7

I am not sure where is the problem but the buzzer still silent. Where could be the next step?

The pinmux should reflect the values as below

sudo grep dap4 /sys/kernel/debug/tegra_pinctrl_reg

Bank: 1 Reg: 0x70003144 Val: 0x00000044 → dap4_fs_pj4
Bank: 1 Reg: 0x70003148 Val: 0x00000044 → dap4_din_pj5
Bank: 1 Reg: 0x7000314c Val: 0x00000004 → dap4_dout_pj6
Bank: 1 Reg: 0x70003150 Val: 0x00000044 → dap4_sclk_pj7

Could you set the above register with the right value using devmem register write utility and then check the signal

set amixer controls as below

amixer -c 1 cset “ADMAIF1 Mux” I2S4

amixer -c 1 cset “I2S4 Mux” ADMAIF1
amixer -c 1 cset name=“I2S4 codec master mode” “cbs-cfs”

speaker-test -D hw:1,0 -c 2 -t sine

Thanks for the suggestion in the case of 0x70003148 and 0x70003150 I could modify the register values but in the case of the other two registers I got back the same message:

Bus Error

amixer construated as you suggested

Could you refer some of these references related to pinmux config of I2S4

I2S not working on Jetson Nano Devkit - Jetson & Embedded Systems / Jetson Nano - NVIDIA Developer Forums

I2s audio jetson nano production - Jetson & Embedded Systems / Jetson Nano - NVIDIA Developer Forums

Users were able to configure I2S4 with the suggestions

I know it’s not an easy situation but can I have 2 more questions?
Two problems are still unclear to me, and I would appreciate any explanation:

  1. Why does writing the pinmux register manually (using /dev/mem) return a bus error?
  2. Why do the targeted DAP4 pins still appear as “MUX UNCLAIMED” in pinctrl debugfs?

Any insights into these two behaviors would help me understand what I’m missing. Because I already modified the dts enabled i2s4 and routed the amixer but still no signs on the i2s lines.

Thanks.

For (1), the behavior is not expected as other 2 register which are working also under same memory region. Best was to do this is by configuring the DT file properly as per suggestion provided in forum link provided for reference. This is the way we have to do even if devmem works for now.

For (2), this might be due to wrong config in DT for DAP4, as your dump shows DAP4 was not configured after DT change, cross check the DT changes with the reference link.

Could you attach the DT changes made on your side. Let me review and suggest if any changes required.

Thank you!

this is the sound node, i tried to reroute the dai-link 2 then realized we need i2s4 not i2s3 so I tried to link dai-link-1:

sound {
		iommus = <0x30 0x22>;
		dma-mask = <0x0 0xfff00000>;
		iommu-resv-regions = <0x0 0x0 0x0 0x70300000 0x0 0xfff00000 0xffffffff 0xffffffff>;
		iommu-group-id = <0x2>;
		status = "okay";
		compatible = "nvidia,tegra-audio-t210ref-mobile-rt565x";
		nvidia,model = "tegra-snd-t210ref-mobile-rt565x";
		clocks = <0x26 0xf8 0x26 0xf9 0x26 0x78>;
		clock-names = "pll_a", "pll_a_out0", "extern1";
		assigned-clocks = <0x26 0x78 0x26 0xf9 0x26 0xf8>;
		assigned-clock-parents = <0x26 0xf9>;
		assigned-clock-rates = <0xbb8000 0x2ee0000 0x15f90000>;
		nvidia,num-codec-link = <0x4>;
		nvidia,audio-routing = "x Headphone", "x Speaker";
		nvidia,xbar = <0x52>;
		mclk-fs = <0x100>;
		linux,phandle = <0xb4>;
		phandle = <0xb4>;

		nvidia,dai-link-1 {
			link-name = "i2s4-max98357";
			cpu-dai = <0x53>;
			codec-dai = <0x12a>;
			cpu-dai-name = "I2S4";
			codec-dai-name = "HiFi";
			format = "i2s";
			bitclock-master;
			frame-master;
			bitclock-noninversion;
			frame-noninversion;
			bit-format = "s16_le";
			srate = <0xbb80>;
			num-channel = <0x2>;
			ignore_suspend;
			name-prefix = [78 00];
			status = "okay";
			linux,phandle = <0xb5>;
			phandle = <0xb5>;
		};

		nvidia,dai-link-2 {
			link-name = "i2s3-max98357";
			cpu-dai = <0x55>;
			codec-dai = <0x12a>;
			cpu-dai-name = "I2S3";
			codec-dai-name = "HiFi";
			format = "i2s";
			bitclock-slave;
			frame-slave;
			bitclock-noninversion;
			frame-noninversion;
			bit-format = "s16_le";
			srate = <0xbb80>;
			num-channel = <0x2>;
			ignore_suspend;
			name-prefix = [79 00];
			status = "okay";
		};

		nvidia,dai-link-3 {
			link-name = "spdif-dit-2";
			cpu-dai = <0x57>;
			codec-dai = <0x58>;
			cpu-dai-name = "DMIC1";
			codec-dai-name = "dit-hifi";
			format = "i2s";
			bit-format = "s16_le";
			srate = <0xbb80>;
			ignore_suspend;
			num-channel = <0x2>;
			name-prefix = [61 00];
			status = "okay";
		};

		nvidia,dai-link-4 {
			link-name = "spdif-dit-3";
			cpu-dai = <0x59>;
			codec-dai = <0x5a>;
			cpu-dai-name = "DMIC2";
			codec-dai-name = "dit-hifi";
			format = "i2s";
			bit-format = "s16_le";
			srate = <0xbb80>;
			ignore_suspend;
			num-channel = <0x2>;
			name-prefix = [62 00];
			status = "okay";
		};

	};

And that’s where I tried ti inject the suggested snippet, and removed the dap4 pins from the default pins, I thought that can be the reason for the register restriction

	gpio@6000d000 {
		compatible = "nvidia,tegra210-gpio", "nvidia,tegra124-gpio", "nvidia,tegra30-gpio";
		reg = <0x0 0x6000d000 0x0 0x1000>;
		interrupts = <0x0 0x20 0x4 0x0 0x21 0x4 0x0 0x22 0x4 0x0 0x23 0x4 0x0 0x37 0x4 0x0 0x57 0x4 0x0 0x59 0x4 0x0 0x7d 0x4>;
		#gpio-cells = <0x2>;
		gpio-controller;
		#interrupt-cells = <0x2>;
		interrupt-controller;
		gpio-ranges = <0x40 0x0 0x0 0xf6>;
		status = "okay";
		gpio-init-names = "default";
		gpio-init-0 = <0x41>;
		gpio-line-names = [00 00 00 00 00 00 00 00 00 00 00 00 53 50 49 31 5f 4d 4f 53 49 00 53 50 49 31 5f 4d 49 53 4f 00 53 50 49 31 5f 53 43 4b 00 53 50 49 31 5f 43 53 30 00 53 50 49 30 5f 4d 4f 53 49 00 53 50 49 30 5f 4d 49 53 4f 00 53 50 49 30 5f 53 43 4b 00 53 50 49 30 5f 43 53 30 00 53 50 49 30 5f 43 53 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 31 33 00 00 00 00 00 00 00 00 00 00 00 00 55 41 52 54 31 5f 52 54 53 00 55 41 52 54 31 5f 43 54 53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 32 53 30 5f 46 53 00 49 32 53 30 5f 44 49 4e 00 49 32 53 30 5f 44 4f 55 54 00 49 32 53 30 5f 53 43 4c 4b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 30 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 30 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 31 32 00 00 00 00 00 00 47 50 49 4f 31 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 47 50 49 4f 30 39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 53 50 49 31 5f 43 53 31 00 00 00 00 00 00 00 00];
		linux,phandle = <0x5b>;
		phandle = <0x5b>;

		40pin_audio_pinmux {
			gpio-hog;
			function;
			gpios = <0x4c 0x0 0x4d 0x0 0x4e 0x0 0x4f 0x0 0xd8 0x0 0x95 0x0>;
			label = "I2S4_LRCLK", "I2S4_SDIN", "I2S4_SDOUT", "I2S4_CLK";
			status = "okay";
		};

		e2614-rt5658-audio {
			gpio-hog;
			function;
			gpios = <0x4c 0x0 0x4d 0x0 0x4e 0x0 0x4f 0x0 0xd8 0x0 0x95 0x0>;
			label = "I2S4_LRCLK", "I2S4_SDIN", "I2S4_SDOUT", "I2S4_CLK", "AUDIO_MCLK", "AUD_RST";
			status = "okay";
			linux,phandle = <0xb6>;
			phandle = <0xb6>;
		};

		system-suspend-gpio {
			status = "okay";
			gpio-hog;
			output-high;
			gpio-suspend;
			suspend-output-low;
			gpios = <0x6 0x0>;
			linux,phandle = <0xe5>;
			phandle = <0xe5>;
		};

		camera-control-output-low {
			gpio-hog;
			output-low;
			gpios = <0x97 0x0 0x98 0x0>;
			label = "cam1-pwdn", "cam2-pwdn";
		};

		default {
			gpio-input = <0xd8 0xc 0xd 0xe 0xf 0xe8 0x26 0x95 0x5 0xbc 0xbd 0xbe 0xc1 0xc2 0xa8 0xa9 0xc8 0xca 0x32 0x33 0x10 0x11 0x12 0x13 0x14 0x3a 0x3d 0x3e 0xe4>;
			gpio-output-low = <0x97 0x98 0x38 0x3b 0x3c 0x3f 0x40 0x42>;
			gpio-output-high = <0x6 0xbb 0x41 0xe7>;
			linux,phandle = <0x41>;
			phandle = <0x41>;
		};

Also here the dummy codec:

	max98357-codec {
		compatible = "maxim,max98357a";
		#sound-dai-cells = <0x0>;
		status = "okay";
		phandle = <0x12a>;
	};

also tried to manually enable the dap4pins:

i2s@702d1300 {
				compatible = "nvidia,tegra210-i2s";
				reg = <0x702d1300 0x100>;
				nvidia,ahub-i2s-id = <0x3>;
				status = "okay";
				clocks = <0x26 0x65 0x26 0xf9 0x26 0x10c 0x26 0x161>;
				clock-names = "i2s", "i2s_clk_parent", "ext_audio_sync", "audio_sync";
				assigned-clocks = <0x26 0x65>;
				assigned-clock-parents = <0x26 0xf9>;
				assigned-clock-rates = <0x177000>;
				pinctrl-names = "dap_active", "dap_inactive";
				pinctrl-0 = <&dap4_din_pj5_cfg &dap4_dout_pj6_cfg &dap4_fs_pj4_cfg &dap4_sclk_pj7_cfg>;
				pinctrl-1 = <&dap4_din_pj5_cfg &dap4_dout_pj6_cfg &dap4_fs_pj4_cfg &dap4_sclk_pj7_cfg>;
				regulator-supplies = "vddio-uart";
				vddio-uart-supply = <0x3b>;
				fsync-width = <0xf>;
				enable-cya;
				linux,phandle = <0x53>;
				phandle = <0x53>;
			};

and here the dap4 pins modified version:

dap4_din_pj5_cfg: dap4_din_pj5 {
				nvidia,pins = "dap4_din_pj5";
				nvidia,function = "i2s4";
				nvidia,pull = <0x1>;
				nvidia,tristate = <0x0>;
				nvidia,enable-input = <0x1>;
			};

			dap4_dout_pj6_cfg: dap4_dout_pj6 {
				nvidia,pins = "dap4_dout_pj6";
				nvidia,function = "i2s4";
				nvidia,pull = <0x1>;
				nvidia,tristate = <0x0>;
				nvidia,enable-input = <0x0>;
			};

			dap4_fs_pj4_cfg: dap4_fs_pj4 {
				nvidia,pins = "dap4_fs_pj4";
				nvidia,function = "i2s4";
				nvidia,pull = <0x1>;
				nvidia,tristate = <0x0>;
				nvidia,enable-input = <0x0>;
			};

			dap4_sclk_pj7_cfg: dap4_sclk_pj7 {
				nvidia,pins = "dap4_sclk_pj7";
				nvidia,function = "i2s4";
				nvidia,pull = <0x1>;
				nvidia,tristate = <0x0>;
				nvidia,enable-input = <0x0>;
			};

Apologies for delayed response, Could you refer the I2S not working on Jetson Nano Devkit - Jetson & Embedded Systems / Jetson Nano - NVIDIA Developer Forums for the right dap4 pins function name, please correct the function name as per this.