I2S DOUT is not workiing

hi.
i have a problem with i2s

I am using R32.1 L4T and trying to output sound on I2S1, but SDOUT not working.

It seems that fs/sclk/mclk are all working.
And the pinctrl seems to be set up properly.

/sys/kernel/debug/tegra_pinctrl_reg
Bank: 0 Reg: 0x02431020 Val: 0x00000400 → aud_mclk_pj4
Bank: 0 Reg: 0x02431028 Val: 0x00000400 → dap1_fs_pj3
Bank: 0 Reg: 0x02431030 Val: 0x00000458 → dap1_din_pj2
Bank: 0 Reg: 0x02431038 Val: 0x00000400 → dap1_dout_pj1
Bank: 0 Reg: 0x02431040 Val: 0x00000400 → dap1_sclk_pj0

However, even if I play the sound, only the clocks comes out and DOUT does not come out.

What should I do to solve this?

Thanks,

Hello!

What command are you testing with? Can you try …

$ alsactl init tegrasndt186ref
$ speaker-test -D hw:tegrasndt186ref,0 -c 2 -r 48000 -F S16_LE -t sine -f 500

Regards,
Jon

Hi Jon.

I tried that, but it still not working

I tried

  • amixer -c tegrasndt186ref sset ‘I2S1 Mux’ ‘ADMAIF1’
  • aplay -Dhw:1,0 Square_48k.16_2.wav

and i also tried it on I2S2 by [amixer -c tegrasndt186ref sset ‘I2S2 Mux’ ‘ADMAIF2’]
but it all not works.

at first all I2S pins did not work. and pin status was like this
image

than i modified dtb

		clk_aud_mclk_pj4 {
			nvidia,pins = "aud_mclk_pj4";
			linux,phandle = <0x121>;
			phandle = <0x121>;
		};

to

		clk_aud_mclk_pj4 {
			nvidia,pins = "aud_mclk_pj4";
			nvidia,function = "aud";
			nvidia,tristate = <0x0>;
			nvidia,enable-input = <0x0>;
			nvidia,pull = <0x0>;
			linux,phandle = <0x121>;
			phandle = <0x121>;
		};

then fs/bclk/mclk works and dout not working.

Could it be caused by this setting.

Regards,
Sujin

Hi Jon.

There is still no answer, so I ask again.

Previously, I2S worked in R28.2.1(it was work fine), but after upgrading to R32.1, the above problem occurred.

Is there anything I can try to solve this?

Regards,
Sujin

Hello!

Apologies for the delay. I would expect what you have to work. To see what is going on can you run the following commands …

echo 0 | sudo tee /sys/kernel/debug/tracing/trace
echo 0 | sudo tee /sys/kernel/debug/tracing/events/enable
echo 1 | sudo tee /sys/kernel/debug/tracing/tracing_on
echo 1 | sudo tee /sys/kernel/debug/tracing/events/asoc/snd_soc_dapm_widget_power/enable
aplay -D hw:tegrasndt186ref,0 Square_48k.16_2.wav
sudo cat /sys/kernel/debug/tracing/trace

BTW the latest L4T r32.x release now includes a tool for configuring the pinmux of the 40-pin header. So with the latest L4T all you should need to do is …

sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s1
sudo reboot

After rebooting you should only then need to execute …

aplay -D hw:tegrasndt186ref,0 Square_48k.16_2.wav

Regards,
Jon