I2S Microphone Devicetree Patch

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