About using PCM3010 with jetson NANO

Hello,

Looking at the excel, my chest feels stuffy and dizzy.
Is this part correct? To set it up like the following command you gave me
How to edit this part in Excel?

Thank you.

Hello!

Sorry about that. It is a bit complex. So you need to …

  1. Set column ‘AS’ to be the DAP4B signals
  2. Set solumn ‘AT’ to be bidirectional for FS and SCLK, input for DIN and output for DOUT

Then you should click the Generate DT button.

Regards,
Jon

1 Like

Bidirectional?
image

Thank you.

1 Like

Hello,

What is DAP4B signals in this excel sheet?

Mark it in Excel
Can you take a screenshot of the Excel screen you set?

Sorry to bother you.

Thank you.

1 Like

Yes, that’s correct!

Jon

Hello!

Sorry I believe it is I2S4B. If you click on the cells in column AS then you should see the I2S4B signals as an option. So if you click on say “GPIO3.PJ05” you should see an option for I2S4B.

Regards,
Jon

2 Likes

Hello,


After dtb file is copied

Can I not run apply_binaries.sh before flashing?

Thank you.

Hello!

Please see this guide. The following steps are necessary before running the apply_binaries.sh script …

$ tar xf ${L4T_RELEASE_PACKAGE}
$ cd Linux_for_Tegra/rootfs/
$ sudo tar xpf ../../${SAMPLE_FS_PACKAGE}
$ cd ..
$ sudo ./apply_binaries.sh

A description of what the above pacakges are can be found in the above guide.

Regards,
Jon

Hello,

As you told me, I set up pinmux in the production module and flashed it.

The sound-test is executed as follows.
There is no sound when I put on the earphones.
I thought the sound came out when the speaker-test was run.

The sound came out from the devkit module set up using jetson-io.py.

What can I check?

Thank you.

Hello!

Compare the pinmux settings between the Nano modules (SD version and eMMC) by …

$ sudo grep dap4 /sys/kernel/debug/tegra_pinctrl_reg

Regards,
Jon

1 Like

Hello,

On production module

speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S32_LE -t pink -f 500

speaker-test 1.1.3

Playback device is hw:tegrasndt210ref,0
Stream parameters are 48000Hz, S32_LE, 2 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 16 to 4096
Period size range from 16 to 2048
Using max buffer size 4096
Periods = 4
was set period_size = 1024
was set buffer_size = 4096
0 - Front Left
1 - Front Right
^CTime per period = 4.096294
sudo grep dap4 /sys/kernel/debug/tegra_pinctrl_reg
[sudo] password for :
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

Thank you.

Hello,

On devkit module.

jetson8@jetson8-desktop:~$ speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S32_LE -t pink -f 500

speaker-test 1.1.3

Playback device is hw:tegrasndt210ref,0
Stream parameters are 48000Hz, S32_LE, 2 channels
Using 16 octaves of pink noise
Playback open error: -16,Device or resource busy
jetson8@jetson8-desktop:~$ sudo grep dap4 /sys/kernel/debug/tegra_pinctrl_reg
[sudo] password for jetson8:

Bank: 1 Reg: 0x70003144 Val: 0x00000044 → dap4_fs_pj4

Bank: 1 Reg: 0x70003148 Val: 0x00000054 → dap4_din_pj5

Bank: 1 Reg: 0x7000314c Val: 0x00000004 → dap4_dout_pj6

Bank: 1 Reg: 0x70003150 Val: 0x00000044 → dap4_sclk_pj7

jetson8@jetson8-desktop:~$

Thank you.

Hello,

I compared the devkit module and the production module with your command. Please comment when you confirm the comparison.

Thank you.

Hello!

In the above bit 0 is set and so this means that the I2S4 function is not selected. I am not sure exactly what version of the Nano you have (A02 or B00), but the DTSI generated by the spreadsheet should yield changes such as the following …

diff --git a/kernel-dts/porg-platforms/tegra210-porg-pinmux-p3448-0002-a02.dtsi b/kernel-dts/porg-platforms/tegra210-porg-pinmux-p3448-0002-a02.dtsi
index 5d889ec53050..006ee00a2804 100644
--- a/kernel-dts/porg-platforms/tegra210-porg-pinmux-p3448-0002-a02.dtsi
+++ b/kernel-dts/porg-platforms/tegra210-porg-pinmux-p3448-0002-a02.dtsi
@@ -681,23 +681,23 @@
                        dap4_din_pj5 {
                                nvidia,pins = "dap4_din_pj5";
-                               nvidia,function = "rsvd1";
+                               nvidia,function = "i2s4b";
                                nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
-                               nvidia,tristate = <TEGRA_PIN_DISABLE>;
+                               nvidia,tristate = <TEGRA_PIN_ENABLE>;
                                nvidia,enable-input = <TEGRA_PIN_ENABLE>;
                        };
                        dap4_dout_pj6 {
                                nvidia,pins = "dap4_dout_pj6";
-                               nvidia,function = "rsvd1";
+                               nvidia,function = "i2s4b";
                                nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
                                nvidia,tristate = <TEGRA_PIN_DISABLE>;
-                               nvidia,enable-input = <TEGRA_PIN_ENABLE>;
+                               nvidia,enable-input = <TEGRA_PIN_DISABLE>;
                        };
                        dap4_fs_pj4 {
                                nvidia,pins = "dap4_fs_pj4";
-                               nvidia,function = "rsvd1";
+                               nvidia,function = "i2s4b";
                                nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
                                nvidia,tristate = <TEGRA_PIN_DISABLE>;
                                nvidia,enable-input = <TEGRA_PIN_ENABLE>;
@@ -705,7 +705,7 @@
                        dap4_sclk_pj7 {
                                nvidia,pins = "dap4_sclk_pj7";
-                               nvidia,function = "rsvd1";
+                               nvidia,function = "i2s4b";
                                nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
                                nvidia,tristate = <TEGRA_PIN_DISABLE>;
                                nvidia,enable-input = <TEGRA_PIN_ENABLE>;

So check what changes were made the the DTSI file.

Regards,
Jon

1 Like

Hello,

I did exactly as I was told to change the excel file.

Is there an additional work to modify the dtsi file after the excel file is changed?
Can I simply edit the dtsi file as you tell me?

Thank you.

Hello,

I have modified the files in the following path to: Is that right?

/home/nanohostpc/coding/Audio/Linux_for_Tegra/source/public/hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-pinmux-p3448-0000-b00.dtsi

…------------------------------------------------
dap4_din_pj5 {
nvidia,pins = “dap4_din_pj5”;
nvidia,function = “i2s4b”;^M
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_ENABLE>;^M
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};

		dap4_dout_pj6 {
			nvidia,pins = "dap4_dout_pj6";
			nvidia,function = "i2s4b";^M
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_DISABLE>;^M
		};

		dap4_fs_pj4 {
			nvidia,pins = "dap4_fs_pj4";
			nvidia,function = "i2s4b";^M
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
		};

		dap4_sclk_pj7 {
			nvidia,pins = "dap4_sclk_pj7";
			nvidia,function = "i2s4b";^M
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
		};

…------------------------------------------------

Thank you.

Hello,

The dtsi file from the excel file was as follows.

/home/nanohostpc/coding/Audio/Linux_for_Tegra/source/public/hardware/nvidia/platform/t210/porg/kernel-dts/porg-platforms/tegra210-porg-pinmux-p3448-0002-b00.dtsi

dap4_din_pj5 {
nvidia,pins = “dap4_din_pj5”;
nvidia,function = “i2s4b”;
nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
nvidia,tristate = <TEGRA_PIN_DISABLE>;
nvidia,enable-input = <TEGRA_PIN_ENABLE>;
};

		dap4_dout_pj6 {
			nvidia,pins = "dap4_dout_pj6";
			nvidia,function = "i2s4b";
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_DISABLE>;
		};

		dap4_fs_pj4 {
			nvidia,pins = "dap4_fs_pj4";
			nvidia,function = "i2s4b";
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
		};

		dap4_sclk_pj7 {
			nvidia,pins = "dap4_sclk_pj7";
			nvidia,function = "i2s4b";
			nvidia,pull = <TEGRA_PIN_PULL_DOWN>;
			nvidia,tristate = <TEGRA_PIN_DISABLE>;
			nvidia,enable-input = <TEGRA_PIN_ENABLE>;
		};

Thank you.

Should ^M be appended?

Thank you.

Hello,


In the process of copying the dtb file, I copied the command as the following as the guide says, but should it be 0002?

Thank you.

Hello,

editing dtsi file as you mentioned.
after flashing

On production module.

realwave@realwave-desktop:~$ speaker-test -D hw:tegrasndt210ref,0 -c 2 -r 48000 -F S32_LE -t pink -f 500

speaker-test 1.1.3

Playback device is hw:tegrasndt210ref,0
Stream parameters are 48000Hz, S32_LE, 2 channels
Using 16 octaves of pink noise
ALSA lib pcm_hw.c:1713:(_snd_pcm_hw_open) Invalid value for card
Playback open error: -19,No such device
realwave@realwave-desktop:~$ sudo grep dap4 /sys/kernel/debug/tegra_pinctrl_reg
Bank: 1 Reg: 0x70003144 Val: 0x00000044 → dap4_fs_pj4
Bank: 1 Reg: 0x70003148 Val: 0x00000054 → dap4_din_pj5
Bank: 1 Reg: 0x7000314c Val: 0x00000004 → dap4_dout_pj6
Bank: 1 Reg: 0x70003150 Val: 0x00000044 → dap4_sclk_pj7

What am I suppose to do?

Thank you.