Jetpack 4.5.1, turn on MCLK function and i2s4

Jetpack 4.4 enables MCLK and i2s4 pins by modifying u-boot, but I can’t modify it in jetpack 4.5. What can I do for you?

Hello!

JP4.5 provides the jetson-io tool for configuring the pins on the 40-pin header. To enable the pins you just need to execute the following on the target …

$ sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s4 aud_mclk
$ sudo reboot

To list all available functions that can be enabled on the 40-pin header …

$ sudo /opt/nvidia/jetson-io/config-by-function.py -l all

To list all enabled functions that can be enabled on the 40-pin header …

$ sudo /opt/nvidia/jetson-io/config-by-function.py -l enabled

Regards,
Jon

Hi!
After I execute
$ sudo /opt/nvidia/jetson-io/config-by-function.py -o dtb i2s4 aud_mclk
$ sudo reboot
,I can’t start the machine. The display is as follows

Hello!

That is not expected. I have tried this on my Jetson Nano and it works fine. The release I am using is …

$ cat /etc/nv_tegra_release 
# R32 (release), REVISION: 5.1, GCID: 26202423, BOARD: t210ref, EABI: aarch64, DATE: Fri Feb 19 16:45:52 UTC 2021

Have you made any other modifications to device-tree and/or the kernel? If so you may wish to try again without any previous modifications.

Regards,
Jon

Hi!

I modified the devicetree, tegra210-porg-p3448-common.dtsi, as follows:

sdhci@700b0400 {
  •   /*status = "disabled";*/
    
  •   status = "okay";
      /delete-property/ keep-power-in-suspend;
      /delete-property/ non-removable;
      mmc-ddr-1_8v;
      mmc-ocr-mask = <3>;
      uhs-mask = <0x0>;
      tap-delay = <3>;
    
    };

That’s why I failed,In this case, what should I do?

Hello!

Are you able to revert the change?

Jon

Hi!

Sorry! I can’t because we need this support sd!

Hello!

I mean can you try reverting this to see if it is the problem or not.

Jon

P3448-SD can execute commands

sudo /opt/nvidia/jetson-io/jetson-io.py

But p3448-EMMC doesn’t work

Hello!

Yes that is correct. The jetson-io tool is primarily for the Jetson DevKits. For Jetson Nano the DevKits ship with the SD-card variant. If you have an eMMC variant of the module, then unfortunately the only way to re-configure the pinmux is by following this guide.

Regards,
Jon

Hi!
I set i2s4 and MCLK, and modify them as follows: pinmux_ default: common {

/* SFIO Pin Configuration */

aud_ mclk_ pbb0 {

nvidia,pins = “aud_ mclk_ pbb0”;

nvidia,function = “aud”;

nvidia,pull = <TEGRA_ PIN_ PULL_ NONE>;

nvidia,tristate = <TEGRA_ PIN_ DISABLE>;

nvidia,enable-input = <TEGRA_ PIN_ DISABLE>;

};

dap4_ din_ pj5 {

nvidia,pins = “dap4_ din_ pj5”;

nvidia,function = “i2s4b”;

nvidia,pull = <TEGRA_ PIN_ PULL_ NONE>;

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_ NONE>;

nvidia,tristate = <TEGRA_ PIN_ DISABLE>;

nvidia,enable-input = <TEGRA_ PIN_ ENABLE>;

};

dap4_ fs_ pj4 {

nvidia,pins = “dap4_ fs_ pj4”;

nvidia,function = “i2s4b”;

nvidia,pull = <TEGRA_ PIN_ PULL_ NONE>;

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_ NONE>;

nvidia,tristate = <TEGRA_ PIN_ DISABLE>;

nvidia,enable-input = <TEGRA_ PIN_ ENABLE>;

};

In addition, tegra210-porg-gpio-p3448-0002-b00.dtsi is modified as follows:

gpio_ default: default {

gpio-input = <

TEGRA_ GPIO(B, 4)

TEGRA_ GPIO(B, 5)

TEGRA_ GPIO(B, 6)

TEGRA_ GPIO(B, 7)

TEGRA_ GPIO(DD, 0)

TEGRA_ GPIO(E, 6)

TEGRA_ GPIO(S, 5)

TEGRA_ GPIO(A, 5)

TEGRA_ GPIO(X, 4)

TEGRA_ GPIO(X, 5)

TEGRA_ GPIO(X, 6)

TEGRA_ GPIO(Y, 1)

TEGRA_ GPIO(Y, 2)

TEGRA_ GPIO(V, 0)

TEGRA_ GPIO(V, 1)

TEGRA_ GPIO(Z, 0)

TEGRA_ GPIO(Z, 2)

TEGRA_ GPIO(G, 2)

TEGRA_ GPIO(G, 3)

TEGRA_ GPIO(C, 0)

TEGRA_ GPIO(C, 1)

TEGRA_ GPIO(C, 2)

TEGRA_ GPIO(C, 3)

TEGRA_ GPIO(C, 4)

TEGRA_ GPIO(H, 2)

TEGRA_ GPIO(H, 5)

TEGRA_ GPIO(H, 6)

TEGRA_ GPIO(I, 1)

TEGRA_ GPIO(CC, 4)

;

gpio-output-low = <

TEGRA_ GPIO(S, 7)

TEGRA_ GPIO(T, 0)

TEGRA_ GPIO(Z, 3)

TEGRA_ GPIO(H, 0)

TEGRA_ GPIO(H, 3)

TEGRA_ GPIO(H, 4)

TEGRA_ GPIO(H, 7)

TEGRA_ GPIO(I, 0)

TEGRA_ GPIO(I, 2)

;

gpio-output-high = <

TEGRA_ GPIO(A, 6)

TEGRA_ GPIO(X, 3)

TEGRA_ GPIO(CC, 7)

;

};

};

Finally, the generated DT file is burned to the board, but the sound cannot be detected.

Hello!

Which version is this the SD card or eMMC?

You can check if the pins have been configured as expected by …

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

Regards,
Jon

Hi!
I use EMMC.
sudo grep dap4 /sys/kernel/debug/tegra_pinctrl_reg

Bank: 1 Reg: 0x700003144 Val: 0x00000040 → dap4_fs_pj4
Bank: 1 Reg: 0x700003148 Val: 0x00000040 → dap4_fs_pj5
Bank: 1 Reg: 0x70000314c Val: 0x00000040 → dap4_fs_pj6
Bank: 1 Reg: 0x700003150 Val: 0x00000040 → dap4_fs_pj7

Hello!

That looks fine, but you also need to read the /sys/kernel/debug/tegra_gpio to see if the pins are gpio or I2S. You can compare the settings between the SD card and eMMC versions.

Regards,
Jon

Hi!
How can I make sure GPIO is normal?

Hello!

The dap4 pins are …

dap4_fs_pj4
dap4_fs_pj5
dap4_fs_pj6
dap4_fs_pj7

The ‘pjX’ indicates that the corresponding GPIOs are J4-J7. So we care about the GPIOs in the row starting “J:”. Now the output above shows that the ‘CNF’ value for ‘J’ is 0xf0 and this means that J4-J7 are GPIO and not I2S.

Did you re-flash the DTB files after modifying them?

Regards,
Jon

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