We are trying to use the I2S microphone port. What is the patch to the device tree that is required to enable the port? Thanks!
Hello!
The pinmux for Jetson Xavier need to be update to enable the I2S interface on the 40-pin header. For Jetson Xavier this is handled via the MB1 pinmux file for the platform and not device-tree. The official way to update the pinmux for the platform is described in the ‘Pinmux Changes’ section of Adaption Guide for the platform [0]. However, the end result should be the following patch which needs to be applied to the MB1 file …
diff --git a/tegra19x-mb1-pinmux-p2888-0000-a04-p2822-0000-b01.cfg b/tegra19x-mb1-pinmux-p2888-0000-a04-p2822-0000-b01.cfg
index a020817..0f4d974 100644
--- a/tegra19x-mb1-pinmux-p2888-0000-a04-p2822-0000-b01.cfg
+++ b/tegra19x-mb1-pinmux-p2888-0000-a04-p2822-0000-b01.cfg
@@ -33,14 +33,6 @@
pinmux.0x02434090 = 0x00000000; # GPIO soc_gpio12_ph0
pinmux.0x02214240 = 0x00000001; # CONFIG H2
pinmux.0x024340a0 = 0x00000000; # GPIO soc_gpio14_ph2
-pinmux.0x022142e0 = 0x00000001; # CONFIG H7
-pinmux.0x02434018 = 0x00000000; # GPIO dap2_sclk_ph7
-pinmux.0x02214400 = 0x00000001; # CONFIG I0
-pinmux.0x02434008 = 0x00000000; # GPIO dap2_dout_pi0
-pinmux.0x02214420 = 0x00000001; # CONFIG I1
-pinmux.0x02434000 = 0x00000000; # GPIO dap2_din_pi1
-pinmux.0x02214440 = 0x00000001; # CONFIG I2
-pinmux.0x02434010 = 0x00000000; # GPIO dap2_fs_pi2
pinmux.0x02212460 = 0x00000001; # CONFIG Z3
pinmux.0x0243d040 = 0x00000000; # GPIO spi1_sck_pz3
pinmux.0x02212480 = 0x00000001; # CONFIG Z4
@@ -67,10 +59,6 @@
pinmux.0x0c303030 = 0x00000000; # GPIO can0_wake_paa6
pinmux.0x0c2f16e0 = 0x00000001; # CONFIG AA7
pinmux.0x0c303038 = 0x00000000; # GPIO can0_err_paa7
pinmux.0x0c2f1800 = 0x00000001; # CONFIG BB0
pinmux.0x0c303040 = 0x00000000; # GPIO can1_stb_pbb0
pinmux.0x0c2f1820 = 0x00000001; # CONFIG BB1
pinmux.0x0c303048 = 0x00000000; # GPIO can1_en_pbb1
pinmux.0x0c2f1840 = 0x00000001; # CONFIG BB2
pinmux.0x0c303050 = 0x00000000; # GPIO can1_wake_pbb2
pinmux.0x02212ac0 = 0x00000001; # CONFIG P6
@@ -314,10 +302,10 @@
pinmux.0x024340a0 = 0x00000050; # soc_gpio14_ph2: rsvd0, tristate-enable, input-enable, lpdr-disable
pinmux.0x02434038 = 0x00000409; # uart4_tx_ph3: rsvd1, pull-up, tristate-disable, input-disable, lpdr-disable
pinmux.0x02434020 = 0x00000405; # uart4_cts_ph6: rsvd1, pull-down, tristate-disable, input-disable, lpdr-disable
-pinmux.0x02434018 = 0x00000055; # dap2_sclk_ph7: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
-pinmux.0x02434008 = 0x00000055; # dap2_dout_pi0: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
-pinmux.0x02434000 = 0x00000055; # dap2_din_pi1: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
-pinmux.0x02434010 = 0x00000055; # dap2_fs_pi2: rsvd1, pull-down, tristate-enable, input-enable, lpdr-disable
+pinmux.0x02434018 = 0x00000444; # dap2_sclk_ph7: i2s2, pull-down, tristate-disable, input-enable, lpdr-disable
+pinmux.0x02434008 = 0x00000404; # dap2_dout_pi0: i2s2, pull-down, tristate-disable, input-disable, lpdr-disable
+pinmux.0x02434000 = 0x00000454; # dap2_din_pi1: i2s2, pull-down, tristate-enable, input-enable, lpdr-disable
+pinmux.0x02434010 = 0x00000444; # dap2_fs_pi2: i2s2, pull-down, tristate-disable, input-enable, lpdr-disable
pinmux.0x0243d000 = 0x00000000; # gpu_pwr_req_px0: rsvd0, tristate-disable, input-disable, lpdr-disable
pinmux.0x0243d068 = 0x00000000; # cv_pwr_req_px1: rsvd0, tristate-disable, input-disable, lpdr-disable
pinmux.0x0243d008 = 0x00000001; # spi3_miso_py1: rsvd1, tristate-disable, input-disable, io_high_voltage-disable, lpdr-disable
@@ -340,8 +328,8 @@
pinmux.0x0c303028 = 0x0000c000; # can0_en_paa5: rsvd0, tristate-disable, input-disable
pinmux.0x0c303030 = 0x0000c058; # can0_wake_paa6: rsvd0, pull-up, tristate-enable, input-enable
pinmux.0x0c303038 = 0x0000c048; # can0_err_paa7: rsvd0, pull-up, tristate-disable, input-enable
pinmux.0x0c303040 = 0x0000c054; # can1_stb_pbb0: rsvd0, pull-down, tristate-enable, input-enable
pinmux.0x0c303048 = 0x0000c054; # can1_en_pbb1: rsvd0, pull-down, tristate-enable, input-enable
pinmux.0x0c303050 = 0x0000c058; # can1_wake_pbb2: rsvd0, pull-up, tristate-enable, input-enable
pinmux.0x02430078 = 0x00000000; # soc_gpio05_pp5: rsvd0, tristate-disable, input-disable, lpdr-disable
pinmux.0x02430080 = 0x00000058; # soc_gpio06_pp6: rsvd0, pull-up, tristate-enable, input-enable, lpdr-disable
Regards,
Jon
[0] https://developer.nvidia.com/embedded/dlc/Tegra_Linux_Driver_Package_AGX_Xavier_Adaptation_Guide