Custom Carrier 4x MIPI CSI Device Tree

I have a custom carrier with 4 MIPI CSI Connectors. I2C is muxed with a tca9546. I have a basic device tree but it does not appear to be working.

jetson@jetson-nano:~$      dmesg | grep i2c                                                              reboot now
[sudo] password for jetson:
[    4.312949] i2c /dev entries driver
[    4.316644] tegra-i2c 3160000.i2c: Adding to iommu group 2
[    4.322434] tegra-i2c c240000.i2c: Adding to iommu group 2
[    4.328111] tegra-i2c 3180000.i2c: Adding to iommu group 2
[    4.333783] tegra-i2c 3190000.i2c: Adding to iommu group 2
[    4.339452] tegra-i2c 31b0000.i2c: Adding to iommu group 2
[    4.345124] tegra-i2c 31c0000.i2c: Adding to iommu group 2
[    4.350786] tegra-i2c c250000.i2c: Adding to iommu group 2
[    4.356458] tegra-i2c 31e0000.i2c: Adding to iommu group 2
[    8.556076] i2c i2c-2: Added multiplexed i2c bus 30
[    8.561832] i2c i2c-2: Added multiplexed i2c bus 31
[    8.567595] i2c i2c-2: Added multiplexed i2c bus 32
[    8.572701] i2c i2c-2: Added multiplexed i2c bus 33
[   13.897780]  i2c_device_probe+0xb0/0x2e0
[   13.897799]  i2c_register_driver+0x50/0xa0
[   13.921466]  i2c_device_probe+0xb0/0x2e0
[   13.921485]  i2c_register_driver+0x50/0xa0
[   13.947431]  i2c_device_probe+0xb0/0x2e0
[   13.947450]  i2c_register_driver+0x50/0xa0
[   13.968894]  i2c_device_probe+0xb0/0x2e0
[   13.968909]  i2c_register_driver+0x50/0xa0
[   13.998122]  i2c_device_probe+0xb0/0x2e0
[   13.998150]  i2c_register_driver+0x50/0xa0
[   14.022498]  i2c_device_probe+0xb0/0x2e0
[   14.022516]  i2c_register_driver+0x50/0xa0
[   14.057535]  i2c_device_probe+0xb0/0x2e0
[   14.057552]  i2c_register_driver+0x50/0xa0
[   14.075894]  i2c_device_probe+0xb0/0x2e0
[   14.075913]  i2c_register_driver+0x50/0xa0
[   14.103878]  i2c_device_probe+0xb0/0x2e0
[   14.103899]  i2c_register_driver+0x50/0xa0
[   14.126903]  i2c_device_probe+0xb0/0x2e0
[   14.126925]  i2c_register_driver+0x50/0xa0
[   14.148570]  i2c_device_probe+0xb0/0x2e0
[   14.148588]  i2c_register_driver+0x50/0xa0
[   14.185412]  i2c_device_probe+0xb0/0x2e0
[   14.185430]  i2c_register_driver+0x50/0xa0
[   14.218689]  i2c_device_probe+0xb0/0x2e0
[   14.218708]  i2c_register_driver+0x50/0xa0
[   14.238505]  i2c_device_probe+0xb0/0x2e0
[   14.238523]  i2c_register_driver+0x50/0xa0
[   14.260840]  i2c_device_probe+0xb0/0x2e0
[   14.260858]  i2c_register_driver+0x50/0xa0
[   14.280591]  i2c_device_probe+0xb0/0x2e0
[   14.280606]  i2c_register_driver+0x50/0xa0
[   14.314311]  i2c_device_probe+0xb0/0x2e0
[   14.314326]  i2c_register_driver+0x50/0xa0
[   14.332757]  i2c_device_probe+0xb0/0x2e0
[   14.332773]  i2c_register_driver+0x50/0xa0
jetson@jetson-nano:~$
jetson@jetson-nano:~$ sudo dmesg | grep imx
[   13.861604] imx274 30-001a: probing v4l2 sensor.
[   13.897679] Modules linked in: snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   13.897769]  init_module+0x2d4e68/0x2d5c18 [nv_imx274]
[   13.897777]  init_module+0x2d589c/0x2d5c18 [nv_imx274]
[   13.897802]  init_module+0x2c/0x1000 [nv_imx274]
[   13.921362] Modules linked in: snd_soc_tegra210_adsp(+) snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   13.921457]  init_module+0x2d4e70/0x2d5c18 [nv_imx274]
[   13.921463]  init_module+0x2d589c/0x2d5c18 [nv_imx274]
[   13.921487]  init_module+0x2c/0x1000 [nv_imx274]
[   13.928642] imx274 30-001a: tegracam sensor driver:imx274_v2.0.6
[   13.947324] Modules linked in: snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   13.947423]  init_module+0x2d5164/0x2d5c18 [nv_imx274]
[   13.947426]  init_module+0x2d59e0/0x2d5c18 [nv_imx274]
[   13.947453]  init_module+0x2c/0x1000 [nv_imx274]
[   13.968818] Modules linked in: sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   13.968888]  init_module+0x2d51c8/0x2d5c18 [nv_imx274]
[   13.968890]  init_module+0x2d59e0/0x2d5c18 [nv_imx274]
[   13.968911]  init_module+0x2c/0x1000 [nv_imx274]
[   13.979630] imx274 30-001a: Error -121 probe failed
[   13.997997] Modules linked in: sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   13.998110]  init_module+0x2d5004/0x2d5c18 [nv_imx274]
[   13.998112]  init_module+0x2d5ab0/0x2d5c18 [nv_imx274]
[   13.998152]  init_module+0x2c/0x1000 [nv_imx274]
[   14.022387] Modules linked in: aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.022486]  init_module+0x2d4d64/0x2d5c18 [nv_imx274]
[   14.022494]  init_module+0x2d5ac4/0x2d5c18 [nv_imx274]
[   14.022519]  init_module+0x2c/0x1000 [nv_imx274]
[   14.027972] imx274 30-001a: board setup failed
[   14.034871] imx274: probe of 30-001a failed with error -121
[   14.043314] imx274 31-001a: probing v4l2 sensor.
[   14.057423] Modules linked in: cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.057524]  init_module+0x2d4e68/0x2d5c18 [nv_imx274]
[   14.057531]  init_module+0x2d589c/0x2d5c18 [nv_imx274]
[   14.057554]  init_module+0x2c/0x1000 [nv_imx274]
[   14.075781] Modules linked in: cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.075883]  init_module+0x2d4e70/0x2d5c18 [nv_imx274]
[   14.075891]  init_module+0x2d589c/0x2d5c18 [nv_imx274]
[   14.075915]  init_module+0x2c/0x1000 [nv_imx274]
[   14.081771] imx274 31-001a: tegracam sensor driver:imx274_v2.0.6
[   14.103750] Modules linked in: aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.103870]  init_module+0x2d5164/0x2d5c18 [nv_imx274]
[   14.103872]  init_module+0x2d59e0/0x2d5c18 [nv_imx274]
[   14.103901]  init_module+0x2c/0x1000 [nv_imx274]
[   14.126779] Modules linked in: btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.126894]  init_module+0x2d51c8/0x2d5c18 [nv_imx274]
[   14.126897]  init_module+0x2d59e0/0x2d5c18 [nv_imx274]
[   14.126928]  init_module+0x2c/0x1000 [nv_imx274]
[   14.143239] imx274 31-001a: Error -121 probe failed
[   14.148471] Modules linked in: btusb btrtl btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.148563]  init_module+0x2d5004/0x2d5c18 [nv_imx274]
[   14.148565]  init_module+0x2d5ab0/0x2d5c18 [nv_imx274]
[   14.148590]  init_module+0x2c/0x1000 [nv_imx274]
[   14.173999] Modules linked in: mac80211 snd_soc_tegra210_sfc snd_soc_tegra_pcm btusb btrtl btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.185401]  init_module+0x2d4d64/0x2d5c18 [nv_imx274]
[   14.185409]  init_module+0x2d5ac4/0x2d5c18 [nv_imx274]
[   14.185432]  init_module+0x2c/0x1000 [nv_imx274]
[   14.193875] imx274 31-001a: board setup failed
[   14.198665] imx274: probe of 31-001a failed with error -121
[   14.204465] imx274 32-001a: probing v4l2 sensor.
[   14.218549] Modules linked in: snd_soc_tegra210_afc snd_soc_tegra210_mixer snd_soc_tegra210_admaif snd_soc_tegra210_dmic(+) snd_soc_tegra210_adx snd_soc_tegra210_amx iwlmvm(+) snd_soc_tegra210_i2s(+) mac80211 snd_soc_tegra210_sfc snd_soc_tegra_pcm btusb btrtl btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.218674]  init_module+0x2d4e68/0x2d5c18 [nv_imx274]
[   14.218684]  init_module+0x2d589c/0x2d5c18 [nv_imx274]
[   14.218710]  init_module+0x2c/0x1000 [nv_imx274]
[   14.238371] Modules linked in: snd_soc_tegra186_dspk(+) snd_soc_tegra186_asrc snd_soc_tegra210_ope snd_soc_tegra186_arad snd_soc_tegra210_mvc snd_soc_tegra210_afc snd_soc_tegra210_mixer snd_soc_tegra210_admaif snd_soc_tegra210_dmic snd_soc_tegra210_adx snd_soc_tegra210_amx iwlmvm(+) snd_soc_tegra210_i2s mac80211 snd_soc_tegra210_sfc snd_soc_tegra_pcm btusb btrtl btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.238494]  init_module+0x2d4e70/0x2d5c18 [nv_imx274]
[   14.238501]  init_module+0x2d589c/0x2d5c18 [nv_imx274]
[   14.238525]  init_module+0x2c/0x1000 [nv_imx274]
[   14.243492] imx274 32-001a: tegracam sensor driver:imx274_v2.0.6
[   14.260702] Modules linked in: snd_soc_tegra210_iqc snd_soc_tegra186_dspk snd_soc_tegra186_asrc snd_soc_tegra210_ope snd_soc_tegra186_arad snd_soc_tegra210_mvc snd_soc_tegra210_afc snd_soc_tegra210_mixer snd_soc_tegra210_admaif snd_soc_tegra210_dmic snd_soc_tegra210_adx snd_soc_tegra210_amx iwlmvm(+) snd_soc_tegra210_i2s mac80211 snd_soc_tegra210_sfc snd_soc_tegra_pcm btusb btrtl btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.260833]  init_module+0x2d5164/0x2d5c18 [nv_imx274]
[   14.260835]  init_module+0x2d59e0/0x2d5c18 [nv_imx274]
[   14.260860]  init_module+0x2c/0x1000 [nv_imx274]
[   14.280500] Modules linked in: snd_soc_tegra210_iqc snd_soc_tegra186_dspk snd_soc_tegra186_asrc snd_soc_tegra210_ope snd_soc_tegra186_arad snd_soc_tegra210_mvc snd_soc_tegra210_afc snd_soc_tegra210_mixer snd_soc_tegra210_admaif snd_soc_tegra210_dmic snd_soc_tegra210_adx snd_soc_tegra210_amx iwlmvm(+) snd_soc_tegra210_i2s mac80211 snd_soc_tegra210_sfc snd_soc_tegra_pcm btusb btrtl btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.280587]  init_module+0x2d51c8/0x2d5c18 [nv_imx274]
[   14.280588]  init_module+0x2d59e0/0x2d5c18 [nv_imx274]
[   14.280608]  init_module+0x2c/0x1000 [nv_imx274]
[   14.295926] imx274 32-001a: Error -121 probe failed
[   14.314219] Modules linked in: snd_soc_tegra210_iqc snd_soc_tegra186_dspk snd_soc_tegra186_asrc snd_soc_tegra210_ope snd_soc_tegra186_arad snd_soc_tegra210_mvc snd_soc_tegra210_afc snd_soc_tegra210_mixer snd_soc_tegra210_admaif snd_soc_tegra210_dmic snd_soc_tegra210_adx snd_soc_tegra210_amx iwlmvm(+) snd_soc_tegra210_i2s mac80211 snd_soc_tegra210_sfc snd_soc_tegra_pcm btusb btrtl btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp(+) snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.314306]  init_module+0x2d5004/0x2d5c18 [nv_imx274]
[   14.314308]  init_module+0x2d5ab0/0x2d5c18 [nv_imx274]
[   14.314328]  init_module+0x2c/0x1000 [nv_imx274]
[   14.332648] Modules linked in: snd_soc_tegra210_iqc snd_soc_tegra186_dspk snd_soc_tegra186_asrc snd_soc_tegra210_ope snd_soc_tegra186_arad snd_soc_tegra210_mvc snd_soc_tegra210_afc snd_soc_tegra210_mixer snd_soc_tegra210_admaif snd_soc_tegra210_dmic snd_soc_tegra210_adx snd_soc_tegra210_amx iwlmvm(+) snd_soc_tegra210_i2s mac80211 snd_soc_tegra210_sfc snd_soc_tegra_pcm btusb btrtl btbcm btintel aes_ce_blk crypto_simd cryptd aes_ce_cipher ghash_ce sha2_ce sha256_arm64 sha1_ce snd_soc_tegra210_adsp snd_soc_tegra_machine_driver snd_soc_spdif_tx snd_soc_tegra_utils nv_imx274(+) snd_soc_simple_card_utils nvadsp tegra_bpmp_thermal snd_soc_tegra210_ahub userspace_alert tegra210_adma snd_hda_codec_hdmi r8168 iwlwifi snd_hda_tegra snd_hda_codec cfg80211 snd_hda_core spi_tegra114 r8169 realtek nvidia(O) binfmt_misc ina3221 pwm_fan nvgpu nvmap ip_tables x_tables
[   14.332749]  init_module+0x2d4d64/0x2d5c18 [nv_imx274]
[   14.332755]  init_module+0x2d5ac4/0x2d5c18 [nv_imx274]
[   14.332776]  init_module+0x2c/0x1000 [nv_imx274]
[   14.337570] imx274 32-001a: board setup failed
[   14.342245] imx274: probe of 32-001a failed with error -121
jetson@jetson-nano:~$
#include "tegra234-camera-imx274-quad.dtsi"
#include "dt-bindings/clock/tegra234-clock.h"

#define CAM0_PWDN	TEGRA234_MAIN_GPIO(H, 6)
#define CAM1_PWDN	TEGRA234_MAIN_GPIO(AC, 0)
#define CAM2_PWDN	TEGRA234_MAIN_GPIO(Y, 4)
#define CAM3_PWDN	TEGRA234_AON_GPIO(CC, 3)
//#define CAM_I2C_MUX 	TEGRA234_AON_GPIO(CC, 3)
#define CAMERA_I2C_MUX_BUS(x) (0x1E + x)

/ {
	i2c@3180000 {
		tca9546@70 {
			compatible = "nxp,pca9546";
			reg = <0x70>;
			#address-cells = <1>;
			#size-cells = <0>;
			skip_mux_detect = "yes";
			force_bus_start = <CAMERA_I2C_MUX_BUS(0)>;

			i2c@0 {
				reg = <0>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				imx274_a@1a {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
					clocks = <&bpmp_clks TEGRA234_CLK_EXTPERIPH1>,
						 <&bpmp_clks TEGRA234_CLK_PLLP_OUT0>;
					clock-names = "extperiph1", "pllp_grtba";
					mclk = "extperiph1";
					pwdn-gpios = <&tegra_main_gpio CAM0_PWDN GPIO_ACTIVE_HIGH>;
				};
			};
			i2c@1 {
				reg = <1>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				imx274_b@1a {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
					clocks = <&bpmp_clks TEGRA234_CLK_EXTPERIPH2>,
						 <&bpmp_clks TEGRA234_CLK_PLLP_OUT0>;
					clock-names = "extperiph2", "pllp_grtba";
					mclk = "extperiph2";
					pwdn-gpios = <&tegra_main_gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
				};
			};
			i2c@2 {
				reg = <2>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				imx274_c@1a {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
					clocks = <&bpmp_clks TEGRA234_CLK_EXTPERIPH3>,
						 <&bpmp_clks TEGRA234_CLK_PLLP_OUT0>;
					clock-names = "extperiph3", "pllp_grtba";
					mclk = "extperiph3";
					pwdn-gpios = <&tegra_main_gpio CAM2_PWDN GPIO_ACTIVE_HIGH>;
				};
			};
			i2c@3 {
				reg = <2>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				imx274_d@1a {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
					clocks = <&bpmp_clks TEGRA234_CLK_EXTPERIPH4>,
						 <&bpmp_clks TEGRA234_CLK_PLLP_OUT0>;
					clock-names = "extperiph4", "pllp_grtba";
					mclk = "extperiph4";
					pwdn-gpios = <&tegra_main_gpio CAM3_PWDN GPIO_ACTIVE_HIGH>;
				};
			};
		};
	};

	gpio@2200000 {
		camera-control-output-low {
			gpio-hog;
			output-low;
			gpios = <CAM0_PWDN 0 CAM1_PWDN 0
				CAM2_PWDN 0 CAM3_PWDN 0>;
			label = "cam0-pwdn","cam1-pwdn",
				"cam2-pwdn", "cam3-pwdn";
		};
	};
};
/*
 * Copyright (c) 2017-2021, NVIDIA CORPORATION.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/ {
	tegra-capture-vi {
		num-channels = <4>;
		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			port@0 {
				reg = <0>;
				liimx274_vi_in0: endpoint {
					port-index = <0>;
					bus-width = <2>;
					remote-endpoint = <&liimx274_csi_out0>;
				};
			};
			port@1 {
				reg = <1>;
				liimx274_vi_in1: endpoint {
					port-index = <2>;
					bus-width = <2>;
					remote-endpoint = <&liimx274_csi_out1>;
				};
			};
			port@2 {
				reg = <2>;
				liimx274_vi_in2: endpoint {
					port-index = <4>;
					bus-width = <2>;
					remote-endpoint = <&liimx274_csi_out2>;
				};
			};
			port@3 {
				reg = <3>;
				liimx274_vi_in3: endpoint {
					port-index = <6>;
					bus-width = <2>;
					remote-endpoint = <&liimx274_csi_out3>;
				};
			};
		};
	};

	host1x@13e00000 {
		nvcsi@15a00000 {
			num-channels = <4>;
			#address-cells = <1>;
			#size-cells = <0>;
			channel@0 {
				reg = <0>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx274_csi_in0: endpoint@0 {
							port-index = <0>;
							bus-width = <2>;
							remote-endpoint = <&liimx274_imx274_out0>;
						};
					};
					port@1 {
						reg = <1>;
						liimx274_csi_out0: endpoint@1 {
							remote-endpoint = <&liimx274_vi_in0>;
						};
					};
				};
			};
			channel@1 {
				reg = <1>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx274_csi_in1: endpoint@2 {
							port-index = <2>;
							bus-width = <2>;
							remote-endpoint = <&liimx274_imx274_out1>;
						};
					};
					port@1 {
						reg = <1>;
						liimx274_csi_out1: endpoint@3 {
							remote-endpoint = <&liimx274_vi_in1>;
						};
					};
				};
			};
			channel@2 {
				reg = <2>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx274_csi_in2: endpoint@4 {
							port-index = <4>;
							bus-width = <2>;
							remote-endpoint = <&liimx274_imx274_out2>;
						};
					};
					port@1 {
						reg = <1>;
						liimx274_csi_out2: endpoint@5 {
							remote-endpoint = <&liimx274_vi_in2>;
						};
					};
				};
			};
			channel@3 {
				reg = <3>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx274_csi_in3: endpoint@6 {
							port-index = <6>;
							bus-width = <2>;
							remote-endpoint = <&liimx274_imx274_out3>;
						};
					};
					port@1 {
						reg = <1>;
						liimx274_csi_out3: endpoint@7 {
							remote-endpoint = <&liimx274_vi_in3>;
						};
					};
				};
			};
		};
	};

	i2c@3180000 {
		tca9546@70 {
			i2c@0 {
			imx274_a@1a {
				compatible = "sony,imx274";
				/* I2C device address */
				reg = <0x1a>;

				/* V4L2 device node location */
				devnode = "video0";

				/* Physical dimensions of sensor */
				physical_w = "3.674";
				physical_h = "2.738";

				sensor_model = "imx274";

				/* Define any required hw resources needed by driver */
				/* ie. clocks, io pins, power sources */
				avdd-reg = "vdd-3v3-sys";
				iovdd-reg = "vdd-3v3-sys";

				/* Defines number of frames to be dropped by driver internally after applying */
				/* sensor crop settings. Some sensors send corrupt frames after applying */
				/* crop co-ordinates */
				/*post_crop_frame_drop = "0";*/

				/* if true, delay gain setting by one frame to be in sync with exposure */
				delayed_gain = "true";

				has-eeprom;
				fuse_id_start_addr = <91>;

				/**
				* ==== Modes ====
				* A modeX node is required to support v4l2 driver
				* implementation with NVIDIA camera software stack
				*
				* == Signal properties ==
				*
				* phy_mode = "";
				* PHY mode used by the MIPI lanes for this device
				*
				* tegra_sinterface = "";
				* CSI Serial interface connected to tegra
				* Incase of virtual HW devices, use virtual
				* For SW emulated devices, use host
				*
				* pix_clk_hz = "";
				* Sensor pixel clock used for calculations like exposure and framerate
				*
				* readout_orientation = "0";
				* Based on camera module orientation.
				* Only change readout_orientation if you specifically
				* Program a different readout order for this mode
				*
				* == Image format Properties ==
				*
				* active_w = "";
				* Pixel active region width
				*
				* active_h = "";
				* Pixel active region height
				*
				* pixel_t = "";
				* The sensor readout pixel pattern
				*
				* line_length = "";
				* Pixel line length (width) for sensor mode.
				*
				* == Source Control Settings ==
				*
				* Gain factor used to convert fixed point integer to float
				* Gain range [min_gain/gain_factor, max_gain/gain_factor]
				* Gain step [step_gain/gain_factor is the smallest step that can be configured]
				* Default gain [Default gain to be initialized for the control.
                                       *     use min_gain_val as default for optimal results]
				* Framerate factor used to convert fixed point integer to float
				* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
				* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
				* Default Framerate [Default framerate to be initialized for the control.
                                       *     use max_framerate to get required performance]
				* Exposure factor used to convert fixed point integer to float
				* For convenience use 1 sec = 1000000us as conversion factor
				* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
				* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
				* Default Exposure Time [Default exposure to be initialized for the control.
                                       *     Set default exposure based on the default_framerate for optimal exposure settings]
				* For convenience use 1 sec = 1000000us as conversion factor
				*
				* gain_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_gain_val = ""; (ceil to integer)
				* max_gain_val = ""; (ceil to integer)
				* step_gain_val = ""; (ceil to integer)
				* default_gain = ""; (ceil to integer)
				* Gain limits for mode
				*
				* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_exp_time = ""; (ceil to integer)
				* max_exp_time = ""; (ceil to integer)
				* step_exp_time = ""; (ceil to integer)
				* default_exp_time = ""; (ceil to integer)
				* Exposure Time limits for mode (sec)
				*
				* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_framerate = ""; (ceil to integer)
				* max_framerate = ""; (ceil to integer)
				* step_framerate = ""; (ceil to integer)
				* default_framerate = ""; (ceil to integer)
				* Framerate limits for mode (fps)
				*
				* embedded_metadata_height = "";
				* Sensor embedded metadata height in units of rows.
				* If sensor does not support embedded metadata value should be 0.

				* num_of_exposure = "";
				* Digital overlap(Dol) frames
				*
				* num_of_ignored_lines = "";
				* Used for cropping, eg. OB lines + Ignored area of effective pixel lines
				*
				* num_of_lines_offset_0 = "";
				* Used for cropping, vertical blanking in front of short exposure data
				* If more Dol frames are used, it can be extended, eg. num_of_lines_offset_1
				*
				* num_of_ignored_pixels = "";
				* Used for cropping, The length of line info(pixels)
				*
				* num_of_left_margin_pixels = "";
				* Used for cropping, the size of the left edge margin before
				* the active pixel area (after ignored pixels)
				*
				* num_of_right_margin_pixels = "";
				* Used for cropping, the size of the right edge margin after
				* the active pixel area
				*
				*/
				mode0 { // IMX274_MODE_3840X2160
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";

					active_w = "3840";
					active_h = "2160";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "0";
					line_length = "4208";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "44400000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "44";
					max_exp_time = "478696";
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode1 { // IMX274_MODE_1920X1080
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer";
					pixel_phase = "rggb";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "4160";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "177000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "58";
					max_exp_time = "184611";
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode2 { // IMX274_MODE_3840X2160_DOL_30FPS
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer_wdr_dol";
					pixel_phase = "rggb";

					active_w = "3856";
					active_h = "4448";
					readout_orientation = "0";
					line_length = "4208";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "30000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "32";
					max_hdr_ratio = "32";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "30000000";
					step_framerate = "1";
					default_framerate= "30000000";
					exposure_factor = "1000000";
					min_exp_time = "864";
					max_exp_time = "20480";
					step_exp_time = "1";
					default_exp_time = "20480";/* us */
					embedded_metadata_height = "1";

					num_of_exposure = "2";
					num_of_ignored_lines = "14";
					num_of_lines_offset_0 = "50";
					num_of_ignored_pixels = "4";
					num_of_left_margin_pixels = "12";
					num_of_right_margin_pixels = "0";
				};
				mode3 { // IMX274_MODE_1920X1080_DOL_60FPS
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer_wdr_dol";
					pixel_phase = "rggb";

					active_w = "1936";
					active_h = "2264";
					readout_orientation = "0";
					line_length = "4160";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "177000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "32";
					max_hdr_ratio = "32";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "859";
					max_exp_time = "15649";
					step_exp_time = "1";
					default_exp_time = "15649";/* us */
					embedded_metadata_height = "1";

					/* WDR related settings */
					num_of_exposure = "2";
					num_of_ignored_lines = "14";
					num_of_lines_offset_0 = "38";
					num_of_ignored_pixels = "4";
					num_of_left_margin_pixels = "6";
					num_of_right_margin_pixels = "6";
				};
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx274_imx274_out0: endpoint {
							port-index = <0>;
							bus-width = <2>;
							remote-endpoint = <&liimx274_csi_in0>;
							};
						};
					};
				};
			};
			i2c@1 {
			imx274_b@1a {
				compatible = "sony,imx274";
				/* I2C device address */
				reg = <0x1a>;

				/* V4L2 device node location */
				devnode = "video1";

				/* Physical dimensions of sensor */
				physical_w = "3.674";
				physical_h = "2.738";

				sensor_model = "imx274";

				/* Define any required hw resources needed by driver */
				/* ie. clocks, io pins, power sources */
				avdd-reg = "vdd-3v3-sys";
				iovdd-reg = "vdd-3v3-sys";

				/* Defines number of frames to be dropped by driver internally after applying */
				/* sensor crop settings. Some sensors send corrupt frames after applying */
				/* crop co-ordinates */
				/*post_crop_frame_drop = "0";*/

				/* if true, delay gain setting by one frame to be in sync with exposure */
				delayed_gain = "true";

				has-eeprom;
				fuse_id_start_addr = <99>;

				/**
				* ==== Modes ====
				* A modeX node is required to support v4l2 driver
				* implementation with NVIDIA camera software stack
				*
				* == Signal properties ==
				*
				* phy_mode = "";
				* PHY mode used by the MIPI lanes for this device
				*
				* tegra_sinterface = "";
				* CSI Serial interface connected to tegra
				* Incase of virtual HW devices, use virtual
				* For SW emulated devices, use host
				*
				* pix_clk_hz = "";
				* Sensor pixel clock used for calculations like exposure and framerate
				*
				* readout_orientation = "0";
				* Based on camera module orientation.
				* Only change readout_orientation if you specifically
				* Program a different readout order for this mode
				*
				* == Image format Properties ==
				*
				* active_w = "";
				* Pixel active region width
				*
				* active_h = "";
				* Pixel active region height
				*
				* pixel_t = "";
				* The sensor readout pixel pattern
				*
				* line_length = "";
				* Pixel line length (width) for sensor mode.
				*
				* == Source Control Settings ==
				*
				* Gain factor used to convert fixed point integer to float
				* Gain range [min_gain/gain_factor, max_gain/gain_factor]
				* Gain step [step_gain/gain_factor is the smallest step that can be configured]
				* Default gain [Default gain to be initialized for the control.
                                       *     use min_gain_val as default for optimal results]
				* Framerate factor used to convert fixed point integer to float
				* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
				* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
				* Default Framerate [Default framerate to be initialized for the control.
                                       *     use max_framerate to get required performance]
				* Exposure factor used to convert fixed point integer to float
				* For convenience use 1 sec = 1000000us as conversion factor
				* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
				* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
				* Default Exposure Time [Default exposure to be initialized for the control.
                                       *     Set default exposure based on the default_framerate for optimal exposure settings]
				* For convenience use 1 sec = 1000000us as conversion factor
				*
				* gain_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_gain_val = ""; (ceil to integer)
				* max_gain_val = ""; (ceil to integer)
				* step_gain_val = ""; (ceil to integer)
				* default_gain = ""; (ceil to integer)
				* Gain limits for mode
				*
				* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_exp_time = ""; (ceil to integer)
				* max_exp_time = ""; (ceil to integer)
				* step_exp_time = ""; (ceil to integer)
				* default_exp_time = ""; (ceil to integer)
				* Exposure Time limits for mode (sec)
				*
				* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_framerate = ""; (ceil to integer)
				* max_framerate = ""; (ceil to integer)
				* step_framerate = ""; (ceil to integer)
				* default_framerate = ""; (ceil to integer)
				* Framerate limits for mode (fps)
				*
				* embedded_metadata_height = "";
				* Sensor embedded metadata height in units of rows.
				* If sensor does not support embedded metadata value should be 0.
				* num_of_exposure = "";

				* Digital overlap(Dol) frames
				*
				* num_of_ignored_lines = "";
				* Used for cropping, eg. OB lines + Ignored area of effective pixel lines
				*
				* num_of_lines_offset_0 = "";
				* Used for cropping, vertical blanking in front of short exposure data
				* If more Dol frames are used, it can be extended, eg. num_of_lines_offset_1
				*
				* num_of_ignored_pixels = "";
				* Used for cropping, The length of line info(pixels)
				*
				* num_of_left_margin_pixels = "";
				* Used for cropping, the size of the left edge margin before
				* the active pixel area (after ignored pixels)
				*
				* num_of_right_margin_pixels = "";
				* Used for cropping, the size of the right edge margin after
				* the active pixel area
				*
				*/
				mode0 { // IMX274_MODE_3840X2160
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";

					active_w = "3840";
					active_h = "2160";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "0";
					line_length = "4208";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "44400000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "44";
					max_exp_time = "478696";
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode1 { // IMX274_MODE_1920X1080
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer";
					pixel_phase = "rggb";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "4160";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "177000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "58";
					max_exp_time = "184611";
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode2 { // IMX274_MODE_3840X2160_DOL_30FPS
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer_wdr_dol";
					pixel_phase = "rggb";

					active_w = "3856";
					active_h = "4448";
					readout_orientation = "0";
					line_length = "4208";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "30000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "32";
					max_hdr_ratio = "32";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "30000000";
					step_framerate = "1";
					default_framerate= "30000000";
					exposure_factor = "1000000";
					min_exp_time = "864";
					max_exp_time = "20480";
					step_exp_time = "1";
					default_exp_time = "20480";/* us */
					embedded_metadata_height = "1";

					num_of_exposure = "2";
					num_of_ignored_lines = "14";
					num_of_lines_offset_0 = "50";
					num_of_ignored_pixels = "4";
					num_of_left_margin_pixels = "12";
					num_of_right_margin_pixels = "0";
				};
				mode3 { // IMX274_MODE_1920X1080_DOL_60FPS
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer_wdr_dol";
					pixel_phase = "rggb";

					active_w = "1936";
					active_h = "2264";
					readout_orientation = "0";
					line_length = "4160";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "177000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "32";
					max_hdr_ratio = "32";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "859";
					max_exp_time = "15649";
					step_exp_time = "1";
					default_exp_time = "15649";/* us */
					embedded_metadata_height = "1";

					/* WDR related settings */
					num_of_exposure = "2";
					num_of_ignored_lines = "14";
					num_of_lines_offset_0 = "38";
					num_of_ignored_pixels = "4";
					num_of_left_margin_pixels = "6";
					num_of_right_margin_pixels = "6";
				};
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx274_imx274_out1: endpoint {
							port-index = <2>;
							bus-width = <2>;
							remote-endpoint = <&liimx274_csi_in1>;
							};
						};
					};
				};
			};
			i2c@2 {
			imx274_c@1a {
				compatible = "sony,imx274";
				/* I2C device address */
				reg = <0x1a>;

				/* V4L2 device node location */
				devnode = "video2";

				/* Physical dimensions of sensor */
				physical_w = "3.674";
				physical_h = "2.738";

				sensor_model = "imx274";

				/* Define any required hw resources needed by driver */
				/* ie. clocks, io pins, power sources */
				avdd-reg = "vdd-3v3-sys";
				iovdd-reg = "vdd-3v3-sys";

				/* Defines number of frames to be dropped by driver internally after applying */
				/* sensor crop settings. Some sensors send corrupt frames after applying */
				/* crop co-ordinates */
				/*post_crop_frame_drop = "0";*/

				/* if true, delay gain setting by one frame to be in sync with exposure */
				delayed_gain = "true";

				has-eeprom;
				fuse_id_start_addr = <99>;

				/**
				* ==== Modes ====
				* A modeX node is required to support v4l2 driver
				* implementation with NVIDIA camera software stack
				*
				* == Signal properties ==
				*
				* phy_mode = "";
				* PHY mode used by the MIPI lanes for this device
				*
				* tegra_sinterface = "";
				* CSI Serial interface connected to tegra
				* Incase of virtual HW devices, use virtual
				* For SW emulated devices, use host
				*
				* pix_clk_hz = "";
				* Sensor pixel clock used for calculations like exposure and framerate
				*
				* readout_orientation = "0";
				* Based on camera module orientation.
				* Only change readout_orientation if you specifically
				* Program a different readout order for this mode
				*
				* == Image format Properties ==
				*
				* active_w = "";
				* Pixel active region width
				*
				* active_h = "";
				* Pixel active region height
				*
				* pixel_t = "";
				* The sensor readout pixel pattern
				*
				* line_length = "";
				* Pixel line length (width) for sensor mode.
				*
				* == Source Control Settings ==
				*
				* Gain factor used to convert fixed point integer to float
				* Gain range [min_gain/gain_factor, max_gain/gain_factor]
				* Gain step [step_gain/gain_factor is the smallest step that can be configured]
				* Default gain [Default gain to be initialized for the control.
                                       *     use min_gain_val as default for optimal results]
				* Framerate factor used to convert fixed point integer to float
				* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
				* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
				* Default Framerate [Default framerate to be initialized for the control.
                                       *     use max_framerate to get required performance]
				* Exposure factor used to convert fixed point integer to float
				* For convenience use 1 sec = 1000000us as conversion factor
				* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
				* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
				* Default Exposure Time [Default exposure to be initialized for the control.
                                       *     Set default exposure based on the default_framerate for optimal exposure settings]
				* For convenience use 1 sec = 1000000us as conversion factor
				*
				* gain_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_gain_val = ""; (ceil to integer)
				* max_gain_val = ""; (ceil to integer)
				* step_gain_val = ""; (ceil to integer)
				* default_gain = ""; (ceil to integer)
				* Gain limits for mode
				*
				* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_exp_time = ""; (ceil to integer)
				* max_exp_time = ""; (ceil to integer)
				* step_exp_time = ""; (ceil to integer)
				* default_exp_time = ""; (ceil to integer)
				* Exposure Time limits for mode (sec)
				*
				* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_framerate = ""; (ceil to integer)
				* max_framerate = ""; (ceil to integer)
				* step_framerate = ""; (ceil to integer)
				* default_framerate = ""; (ceil to integer)
				* Framerate limits for mode (fps)
				*
				* embedded_metadata_height = "";
				* Sensor embedded metadata height in units of rows.
				* If sensor does not support embedded metadata value should be 0.
				* num_of_exposure = "";

				* Digital overlap(Dol) frames
				*
				* num_of_ignored_lines = "";
				* Used for cropping, eg. OB lines + Ignored area of effective pixel lines
				*
				* num_of_lines_offset_0 = "";
				* Used for cropping, vertical blanking in front of short exposure data
				* If more Dol frames are used, it can be extended, eg. num_of_lines_offset_1
				*
				* num_of_ignored_pixels = "";
				* Used for cropping, The length of line info(pixels)
				*
				* num_of_left_margin_pixels = "";
				* Used for cropping, the size of the left edge margin before
				* the active pixel area (after ignored pixels)
				*
				* num_of_right_margin_pixels = "";
				* Used for cropping, the size of the right edge margin after
				* the active pixel area
				*
				*/
				mode0 { // IMX274_MODE_3840X2160
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";

					active_w = "3840";
					active_h = "2160";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "0";
					line_length = "4208";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "44400000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "44";
					max_exp_time = "478696";
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode1 { // IMX274_MODE_1920X1080
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer";
					pixel_phase = "rggb";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "4160";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "177000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "58";
					max_exp_time = "184611";
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode2 { // IMX274_MODE_3840X2160_DOL_30FPS
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer_wdr_dol";
					pixel_phase = "rggb";

					active_w = "3856";
					active_h = "4448";
					readout_orientation = "0";
					line_length = "4208";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "30000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "32";
					max_hdr_ratio = "32";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "30000000";
					step_framerate = "1";
					default_framerate= "30000000";
					exposure_factor = "1000000";
					min_exp_time = "864";
					max_exp_time = "20480";
					step_exp_time = "1";
					default_exp_time = "20480";/* us */
					embedded_metadata_height = "1";

					num_of_exposure = "2";
					num_of_ignored_lines = "14";
					num_of_lines_offset_0 = "50";
					num_of_ignored_pixels = "4";
					num_of_left_margin_pixels = "12";
					num_of_right_margin_pixels = "0";
				};
				mode3 { // IMX274_MODE_1920X1080_DOL_60FPS
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer_wdr_dol";
					pixel_phase = "rggb";

					active_w = "1936";
					active_h = "2264";
					readout_orientation = "0";
					line_length = "4160";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "177000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "32";
					max_hdr_ratio = "32";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "859";
					max_exp_time = "15649";
					step_exp_time = "1";
					default_exp_time = "15649";/* us */
					embedded_metadata_height = "1";

					/* WDR related settings */
					num_of_exposure = "2";
					num_of_ignored_lines = "14";
					num_of_lines_offset_0 = "38";
					num_of_ignored_pixels = "4";
					num_of_left_margin_pixels = "6";
					num_of_right_margin_pixels = "6";
				};
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx274_imx274_out2: endpoint {
							port-index = <4>;
							bus-width = <2>;
							remote-endpoint = <&liimx274_csi_in2>;
							};
						};
					};
				};
			};
			i2c@3 {
			imx274_d@1a {
				compatible = "sony,imx274";
				/* I2C device address */
				reg = <0x1a>;

				/* V4L2 device node location */
				devnode = "video3";

				/* Physical dimensions of sensor */
				physical_w = "3.674";
				physical_h = "2.738";

				sensor_model = "imx274";

				/* Define any required hw resources needed by driver */
				/* ie. clocks, io pins, power sources */
				avdd-reg = "vdd-3v3-sys";
				iovdd-reg = "vdd-3v3-sys";

				/* Defines number of frames to be dropped by driver internally after applying */
				/* sensor crop settings. Some sensors send corrupt frames after applying */
				/* crop co-ordinates */
				/*post_crop_frame_drop = "0";*/

				/* if true, delay gain setting by one frame to be in sync with exposure */
				delayed_gain = "true";

				has-eeprom;
				fuse_id_start_addr = <99>;

				/**
				* ==== Modes ====
				* A modeX node is required to support v4l2 driver
				* implementation with NVIDIA camera software stack
				*
				* == Signal properties ==
				*
				* phy_mode = "";
				* PHY mode used by the MIPI lanes for this device
				*
				* tegra_sinterface = "";
				* CSI Serial interface connected to tegra
				* Incase of virtual HW devices, use virtual
				* For SW emulated devices, use host
				*
				* pix_clk_hz = "";
				* Sensor pixel clock used for calculations like exposure and framerate
				*
				* readout_orientation = "0";
				* Based on camera module orientation.
				* Only change readout_orientation if you specifically
				* Program a different readout order for this mode
				*
				* == Image format Properties ==
				*
				* active_w = "";
				* Pixel active region width
				*
				* active_h = "";
				* Pixel active region height
				*
				* pixel_t = "";
				* The sensor readout pixel pattern
				*
				* line_length = "";
				* Pixel line length (width) for sensor mode.
				*
				* == Source Control Settings ==
				*
				* Gain factor used to convert fixed point integer to float
				* Gain range [min_gain/gain_factor, max_gain/gain_factor]
				* Gain step [step_gain/gain_factor is the smallest step that can be configured]
				* Default gain [Default gain to be initialized for the control.
                                       *     use min_gain_val as default for optimal results]
				* Framerate factor used to convert fixed point integer to float
				* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
				* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
				* Default Framerate [Default framerate to be initialized for the control.
                                       *     use max_framerate to get required performance]
				* Exposure factor used to convert fixed point integer to float
				* For convenience use 1 sec = 1000000us as conversion factor
				* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
				* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
				* Default Exposure Time [Default exposure to be initialized for the control.
                                       *     Set default exposure based on the default_framerate for optimal exposure settings]
				* For convenience use 1 sec = 1000000us as conversion factor
				*
				* gain_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_gain_val = ""; (ceil to integer)
				* max_gain_val = ""; (ceil to integer)
				* step_gain_val = ""; (ceil to integer)
				* default_gain = ""; (ceil to integer)
				* Gain limits for mode
				*
				* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_exp_time = ""; (ceil to integer)
				* max_exp_time = ""; (ceil to integer)
				* step_exp_time = ""; (ceil to integer)
				* default_exp_time = ""; (ceil to integer)
				* Exposure Time limits for mode (sec)
				*
				* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_framerate = ""; (ceil to integer)
				* max_framerate = ""; (ceil to integer)
				* step_framerate = ""; (ceil to integer)
				* default_framerate = ""; (ceil to integer)
				* Framerate limits for mode (fps)
				*
				* embedded_metadata_height = "";
				* Sensor embedded metadata height in units of rows.
				* If sensor does not support embedded metadata value should be 0.
				* num_of_exposure = "";

				* Digital overlap(Dol) frames
				*
				* num_of_ignored_lines = "";
				* Used for cropping, eg. OB lines + Ignored area of effective pixel lines
				*
				* num_of_lines_offset_0 = "";
				* Used for cropping, vertical blanking in front of short exposure data
				* If more Dol frames are used, it can be extended, eg. num_of_lines_offset_1
				*
				* num_of_ignored_pixels = "";
				* Used for cropping, The length of line info(pixels)
				*
				* num_of_left_margin_pixels = "";
				* Used for cropping, the size of the left edge margin before
				* the active pixel area (after ignored pixels)
				*
				* num_of_right_margin_pixels = "";
				* Used for cropping, the size of the right edge margin after
				* the active pixel area
				*
				*/
				mode0 { // IMX274_MODE_3840X2160
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";

					active_w = "3840";
					active_h = "2160";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "0";
					line_length = "4208";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "44400000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "44";
					max_exp_time = "478696";
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode1 { // IMX274_MODE_1920X1080
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer";
					pixel_phase = "rggb";

					active_w = "1920";
					active_h = "1080";
					readout_orientation = "0";
					line_length = "4160";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "177000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "58";
					max_exp_time = "184611";
					step_exp_time = "1";
					default_exp_time = "16667";/* us */
					embedded_metadata_height = "1";
				};
				mode2 { // IMX274_MODE_3840X2160_DOL_30FPS
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer_wdr_dol";
					pixel_phase = "rggb";

					active_w = "3856";
					active_h = "4448";
					readout_orientation = "0";
					line_length = "4208";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "30000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "32";
					max_hdr_ratio = "32";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "30000000";
					step_framerate = "1";
					default_framerate= "30000000";
					exposure_factor = "1000000";
					min_exp_time = "864";
					max_exp_time = "20480";
					step_exp_time = "1";
					default_exp_time = "20480";/* us */
					embedded_metadata_height = "1";

					num_of_exposure = "2";
					num_of_ignored_lines = "14";
					num_of_lines_offset_0 = "50";
					num_of_ignored_pixels = "4";
					num_of_left_margin_pixels = "12";
					num_of_right_margin_pixels = "0";
				};
				mode3 { // IMX274_MODE_1920X1080_DOL_60FPS
					mclk_khz = "24000";
					num_lanes = "4";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					dynamic_pixel_bit_depth = "10";
					csi_pixel_bit_depth = "10";
					mode_type = "bayer_wdr_dol";
					pixel_phase = "rggb";

					active_w = "1936";
					active_h = "2264";
					readout_orientation = "0";
					line_length = "4160";
					inherent_gain = "1";
					mclk_multiplier = "24";
					pix_clk_hz = "576000000";

					gain_factor = "1000000";
					min_gain_val = "1000000";
					max_gain_val = "177000000";
					step_gain_val = "1";
					default_gain = "1000000";
					min_hdr_ratio = "32";
					max_hdr_ratio = "32";
					framerate_factor = "1000000";
					min_framerate = "1500000";
					max_framerate = "60000000";
					step_framerate = "1";
					default_framerate= "60000000";
					exposure_factor = "1000000";
					min_exp_time = "859";
					max_exp_time = "15649";
					step_exp_time = "1";
					default_exp_time = "15649";/* us */
					embedded_metadata_height = "1";

					/* WDR related settings */
					num_of_exposure = "2";
					num_of_ignored_lines = "14";
					num_of_lines_offset_0 = "38";
					num_of_ignored_pixels = "4";
					num_of_left_margin_pixels = "6";
					num_of_right_margin_pixels = "6";
				};
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						liimx274_imx274_out3: endpoint {
							port-index = <6>;
							bus-width = <2>;
							remote-endpoint = <&liimx274_csi_in3>;
							};
						};
					};
				};
			};
		};
	};
	lens_imx274@A6V26 {
		min_focus_distance = "0.0";
		hyper_focal = "0.0";
		focal_length = "5.00";
		f_number = "2.0";
		aperture = "2.2";
	};
};



/ {

	tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		/**
		* Physical settings to calculate max ISO BW
		*
		* num_csi_lanes = <>;
		* Total number of CSI lanes when all cameras are active
		*
		* max_lane_speed = <>;
		* Max lane speed in Kbit/s
		*
		* min_bits_per_pixel = <>;
		* Min bits per pixel
		*
		* vi_peak_byte_per_pixel = <>;
		* Max byte per pixel for the VI ISO case
		*
		* vi_bw_margin_pct = <>;
		* Vi bandwidth margin in percentage
		*
		* max_pixel_rate = <>;
		* Max pixel rate in Kpixel/s for the ISP ISO case
		*
		* isp_peak_byte_per_pixel = <>;
		* Max byte per pixel for the ISP ISO case
		*
		* isp_bw_margin_pct = <>;
		* Isp bandwidth margin in percentage
		*/
		num_csi_lanes = <8>;
		max_lane_speed = <1500000>;
		min_bits_per_pixel = <10>;
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
		max_pixel_rate = <750000>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;

		/**
		 * The general guideline for naming badge_info contains 3 parts, and is as follows,
		 * The first part is the camera_board_id for the module; if the module is in a FFD
		 * platform, then use the platform name for this part.
		 * The second part contains the position of the module, ex. "rear" or "front".
		 * The third part contains the last 6 characters of a part number which is found
		 * in the module's specsheet from the vender.
		 */
		modules {
			module0 {
				badge = "imx274_bottom_A6V26";
				position = "bottom";
				orientation = "1";
				drivernode0 {
					/* Declare PCL support driver (classically known as guid)  */
					pcl_id = "v4l2_sensor";
					/* Driver v4l2 device name */
					devname = "imx274 30-001a";
					/* Declare the device-tree hierarchy to driver instance */
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/imx274_a@1a";
				};
				drivernode1 {
					/* Declare PCL support driver (classically known as guid)  */
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx274@A6V26/";
				};
			};
			module1 {
				badge = "imx274_top_A6V26";
				position = "top";
				orientation = "1";
				drivernode0 {
					/* Declare PCL support driver (classically known as guid)  */
					pcl_id = "v4l2_sensor";
					/* Driver v4l2 device name */
					devname = "imx274 31-001a";
					/* Declare the device-tree hierarchy to driver instance */
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@1/imx274_c@1a";
				};
				drivernode1 {
					/* Declare PCL support driver (classically known as guid)  */
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx274@A6V26/";
				};
			};
		};
	};
};

hello AlexKlimaj,

please check those error logs, it’s reporting errors from tegracam_device_register.
you may dig into kernel driver, for instance,
$public_sources/kernel_src/kernel/nvidia/drivers/media/platform/tegra/camera/tegracam_core.c

since it’s a customize board, please also review the schematic to check you’ve given regulator settings correctly.

I realized I am using imx219 and not imx274. I am a bit closer but they still aren’t fully working.

tegra234-p3768-camera-rbpcv2-imx219.dtsi (3.4 KB)
tegra234-p3768-0000-a0.dtsi (9.2 KB)
tegra234-camera-rbpcv2-imx219.dtsi (52.0 KB)

jetson@jetson-nano:~$ sudo dmesg | grep i2c
[    4.396931] i2c /dev entries driver
[    4.400613] tegra-i2c 3160000.i2c: Adding to iommu group 2
[    4.406405] tegra-i2c c240000.i2c: Adding to iommu group 2
[    4.412078] tegra-i2c 3180000.i2c: Adding to iommu group 2
[    4.417743] tegra-i2c 3190000.i2c: Adding to iommu group 2
[    4.423413] tegra-i2c 31b0000.i2c: Adding to iommu group 2
[    4.429080] tegra-i2c 31c0000.i2c: Adding to iommu group 2
[    4.434756] tegra-i2c c250000.i2c: Adding to iommu group 2
[    4.440416] tegra-i2c 31e0000.i2c: Adding to iommu group 2
[    8.886697] i2c i2c-2: Added multiplexed i2c bus 30
[    8.892395] i2c i2c-2: Added multiplexed i2c bus 31
[    8.898110] i2c i2c-2: Added multiplexed i2c bus 32
[    8.903675] i2c i2c-2: Added multiplexed i2c bus 33
[    8.916523] i2c i2c-2: of_i2c: modalias failure on /i2c@3180000/i2c@0
[    8.923143] i2c i2c-2: Failed to create I2C device for /i2c@3180000/i2c@0
[    8.930122] i2c i2c-2: of_i2c: modalias failure on /i2c@3180000/i2c@1
[    8.936735] i2c i2c-2: Failed to create I2C device for /i2c@3180000/i2c@1
[    8.943712] i2c i2c-2: of_i2c: modalias failure on /i2c@3180000/i2c@2
[    8.950333] i2c i2c-2: Failed to create I2C device for /i2c@3180000/i2c@2
[    8.957318] i2c i2c-2: of_i2c: modalias failure on /i2c@3180000/i2c@3
[    8.963932] i2c i2c-2: Failed to create I2C device for /i2c@3180000/i2c@3
jetson@jetson-nano:~$
jetson@jetson-nano:~$ sudo dmesg | grep imx
[   14.240932] imx219 30-0010: tegracam sensor driver:imx219_v2.0.6
[   14.265408] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx219 30-0010 bound
[   14.268855] imx219 31-0010: tegracam sensor driver:imx219_v2.0.6
[   14.301211] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx219 31-0010 bound
[   14.344543] debugfs: Directory 'imx219_a' with parent '/' already present!
[   14.352049] imx219 32-0010: tegracam sensor driver:imx219_v2.0.6
[   14.377114] tegra-camrtc-capture-vi tegra-capture-vi: subdev imx219 32-0010 bound
jetson@jetson-nano:~$

When I try to run ffplay

[   67.429021] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.476213] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.523469] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.570612] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.617818] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.664999] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.712222] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.759410] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.806755] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.853818] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.901056] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.948225] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   67.995413] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.042626] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.089825] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.137012] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.184217] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.231399] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.278636] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.325811] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.373019] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.420213] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.467421] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.514626] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.561799] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.609013] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.656518] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.703416] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.750605] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.797796] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.844997] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   68.892192] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   76.393207] bwmgr API not supported
[   78.091238] bwmgr API not supported
[   78.218249] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.265432] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.312669] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.359842] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.407046] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.454247] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.501452] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.548647] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.595854] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.643047] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.690556] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.737454] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.784649] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.831865] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.879035] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.926229] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   78.973458] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.020655] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.067852] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.115031] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.162250] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.209432] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.256661] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.303853] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.351050] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.398343] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.445440] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.492656] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.539846] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.587036] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.634235] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   79.681433] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[   86.438175] bwmgr API not supported
[   90.188170] bwmgr API not supported
[   92.881544] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[   92.894326] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   92.904805] (NULL device *): vi_capture_control_message: NULL VI channel received
[   92.912557] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[   92.923285] (NULL device *): vi_capture_control_message: NULL VI channel received
[   92.931041] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[   92.941927] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   95.697544] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[   95.706835] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   95.716720] (NULL device *): vi_capture_control_message: NULL VI channel received
[   95.724471] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[   95.735206] (NULL device *): vi_capture_control_message: NULL VI channel received
[   95.742969] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[   95.753819] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   98.289540] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[   98.298680] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[   98.309020] (NULL device *): vi_capture_control_message: NULL VI channel received
[   98.316746] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[   98.327383] (NULL device *): vi_capture_control_message: NULL VI channel received
[   98.335092] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[   98.345852] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[   98.359370] bwmgr API not supported
[  101.597941] bwmgr API not supported
[  104.149494] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[  104.162248] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[  104.172934] (NULL device *): vi_capture_control_message: NULL VI channel received
[  104.180655] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=4, csi_port=4
[  104.191311] (NULL device *): vi_capture_control_message: NULL VI channel received
[  104.199017] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 4 vc- 0
[  104.209799] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[  106.961519] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[  106.970665] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[  106.980738] (NULL device *): vi_capture_control_message: NULL VI channel received
[  106.988462] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=4, csi_port=4
[  106.999137] (NULL device *): vi_capture_control_message: NULL VI channel received
[  107.006856] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 4 vc- 0
[  107.017637] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[  109.529513] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[  109.538652] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[  109.549287] (NULL device *): vi_capture_control_message: NULL VI channel received
[  109.557007] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=4, csi_port=4
[  109.567646] (NULL device *): vi_capture_control_message: NULL VI channel received
[  109.575349] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 4 vc- 0
[  109.586106] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

it means there’s an error during the capture, the buffer has dropped and requeue.
could you please also check developer guide, Applications Using V4L2 IOCTL Directly, please test the stream with v4l standard IOCTL.

Running that command doesn’t appear to work. Can you check my device tree configuration?

camera schematic.pdf (275.2 KB)

jetson@jetson-nano:~$ v4l2-ctl --list-devices
NVIDIA Tegra Video Input Device (platform:tegra-camrtc-ca):
        /dev/media0

vi-output, imx219 30-0010 (platform:tegra-capture-vi:0):
        /dev/video0

vi-output, imx219 31-0010 (platform:tegra-capture-vi:2):
        /dev/video1

vi-output, imx219 32-0010 (platform:tegra-capture-vi:4):
        /dev/video2

jetson@jetson-nano:~$
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --stream-mmap --stream-count=1 -d /dev/video0 --stream-to=ov5693.raw

jetson@jetson-nano:~$ [ 1528.095895] bwmgr API not supported
[ 1546.098496] bwmgr API not supported
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --stream-mmap --stream-count=1 -d /dev/video1 --stream-to=ov5693.raw

jetson@jetson-nano:~$ [ 1546.324085] bwmgr API not supported
[ 1602.564791] bwmgr API not supported
[ 1605.068099] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 1605.080831] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 1605.091930] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1605.099654] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 1605.110306] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1605.118019] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 1605.128778] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 1607.884234] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 1607.893384] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 1607.903798] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1607.911533] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 1607.922205] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1607.929912] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 1607.940679] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 1610.476144] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 1610.485300] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 1610.495844] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1610.503570] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=2, csi_port=2
[ 1610.514226] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1610.521939] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 2 vc- 0
[ 1610.532694] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
v4l2-ctl --set-fmt-video=width=1920,height=1080,pixelformat=RG10 --stream-mmap --stream-count=1 -d /dev/video2 --stream-to=ov5693.raw

jetson@jetson-nano:~$ [ 1610.545959] bwmgr API not supported
[ 1643.065898] bwmgr API not supported
[ 1645.771307] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 1645.784047] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 1645.794807] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1645.802520] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=4, csi_port=4
[ 1645.813180] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1645.820888] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 4 vc- 0
[ 1645.831656] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 1648.587173] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 1648.596331] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 1648.606793] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1648.614504] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=4, csi_port=4
[ 1648.625160] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1648.632873] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 4 vc- 0
[ 1648.643709] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel
[ 1651.179107] tegra-camrtc-capture-vi tegra-capture-vi: uncorr_err: request timed out after 2500 ms
[ 1651.188256] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: attempting to reset the capture channel
[ 1651.199065] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1651.206813] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_close: Error in closing stream_id=4, csi_port=4
[ 1651.217476] (NULL device *): vi_capture_control_message: NULL VI channel received
[ 1651.225197] t194-nvcsi 13e40000.host1x:nvcsi@15a00000: csi5_stream_open: VI channel not found for stream- 4 vc- 0
[ 1651.235954] tegra-camrtc-capture-vi tegra-capture-vi: err_rec: successfully reset the capture channel

please disassembler the dtb file into text file, sharing the content for examination.
for example, $ dtc -I dtb -O dts -o temp.txt tegra234-xxx.dtb
you may also check /boot/extlinux/extlinux.conf, it’s FDT entry for the dtb file your board were using.

See attached.

temp.txt (441.5 KB)

hello AlexKlimaj,

according to camera schematic.pdf, it seems you have four 2-lane cameras they’re using CSI-0/ CSI-1/ CSI-2/ CSI-3 separately.
however, it looks the settings were incorrect by reviewing the dtb file.
please refer to Port Index section.
you should revise port bindings for the NVCSI/VI/Sensor, it should uses CSI-A/B/C/D.
note, it’s CSI0 D1 and CSI1 D0 P/N will always been swizzled for P/N. please configure lane_polarity for your CSI-A and CSI-B sesors.

Thanks. I attempted to change the port bindings but caused build errors in what I thought were non-related camera files.

hello AlexKlimaj,

what’s the error reported? could you please see-also Kernel Customization chapter for reference.

anyways,
you may have an alternative ways to revise the device tree content directly.
for example,
as you can running below to disassembler the dtb file into text file.
$ dtc -I dtb -O dts -o temp.dts tegra234-xxx.dtb
you may revise the content, and convert the dts into a new device tree blob for quick testing.
$ dtc -I dts -O dtb -o new-output.dtb temp.dts

I’m just compiling the dtb from source. Attempted to change the port bindings but it still doesn’t appear to be working.

temp.dts (441.2 KB)

jetson@jetson-nano:~$ sudo media-ctl -p -d /dev/media0
Media controller API version 5.10.104

Media device information
------------------------
driver          tegra-camrtc-ca
model           NVIDIA Tegra Video Input Device
serial
bus info
hw revision     0x3
driver version  5.10.104

Device topology
- entity 1: 13e40000.host1x:nvcsi@15a00000- (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev0
        pad0: Sink
                <- "imx219 30-0010":0 [ENABLED]
        pad1: Source
                -> "vi-output, imx219 30-0010":0 [ENABLED]

- entity 4: 13e40000.host1x:nvcsi@15a00000- (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev1
        pad0: Sink
                <- "imx219 31-0010":0 [ENABLED]
        pad1: Source
                -> "vi-output, imx219 31-0010":0 [ENABLED]

- entity 7: 13e40000.host1x:nvcsi@15a00000- (2 pads, 2 links)
            type V4L2 subdev subtype Unknown flags 0
            device node name /dev/v4l-subdev2
        pad0: Sink
                <- "imx219 32-0010":0 [ENABLED]
        pad1: Source
                -> "vi-output, imx219 32-0010":0 [ENABLED]

- entity 10: 13e40000.host1x:nvcsi@15a00000- (2 pads, 0 link)
             type V4L2 subdev subtype Unknown flags 0
             device node name /dev/v4l-subdev3
        pad0: Sink
        pad1: Source

- entity 13: imx219 30-0010 (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev4
        pad0: Source
                [fmt:SRGGB10_1X10/3280x2464 field:none colorspace:srgb]
                -> "13e40000.host1x:nvcsi@15a00000-":0 [ENABLED]

- entity 15: vi-output, imx219 30-0010 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video0
        pad0: Sink
                <- "13e40000.host1x:nvcsi@15a00000-":1 [ENABLED]

- entity 33: imx219 31-0010 (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev5
        pad0: Source
                [fmt:SRGGB10_1X10/3280x2464 field:none colorspace:srgb]
                -> "13e40000.host1x:nvcsi@15a00000-":0 [ENABLED]

- entity 35: vi-output, imx219 31-0010 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video1
        pad0: Sink
                <- "13e40000.host1x:nvcsi@15a00000-":1 [ENABLED]

- entity 45: imx219 32-0010 (1 pad, 1 link)
             type V4L2 subdev subtype Sensor flags 0
             device node name /dev/v4l-subdev6
        pad0: Source
                [fmt:SRGGB10_1X10/3280x2464 field:none colorspace:srgb]
                -> "13e40000.host1x:nvcsi@15a00000-":0 [ENABLED]

- entity 47: vi-output, imx219 32-0010 (1 pad, 1 link)
             type Node subtype V4L flags 0
             device node name /dev/video2
        pad0: Sink
                <- "13e40000.host1x:nvcsi@15a00000-":1 [ENABLED]

jetson@jetson-nano:~$

is it still shows the error as NULL VI channel received?
could you please also execute v4l2-compliance test for checking?

jetson@orin-nx:~$ v4l2-compliance -d /dev/video0
v4l2-compliance SHA: not available, 64 bits

Compliance test for tegra-video device /dev/video0:

Driver Info:
        Driver name      : tegra-video
        Card type        : vi-output, imx219 30-0010
        Bus info         : platform:tegra-capture-vi:0
        Driver version   : 5.10.104
        Capabilities     : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : tegra-camrtc-ca
        Model            : NVIDIA Tegra Video Input Device
        Serial           :
        Bus info         :
        Media version    : 5.10.104
        Hardware revision: 0x00000003 (3)
        Driver version   : 5.10.104
Interface Info:
        ID               : 0x03000011
        Type             : V4L Video
Entity Info:
        ID               : 0x0000000f (15)
        Name             : vi-output, imx219 30-0010
        Function         : V4L2 I/O
        Pad 0x01000010   : 0: Sink
          Link 0x02000015: from remote pad 0x1000003 of entity '13e40000.host1x:nvcsi@15a00000-': Data, Enabled

Required ioctls:
        test MC information (see 'Media Driver Info' above): OK
        test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
        test second /dev/video0 open: OK
        test VIDIOC_QUERYCAP: OK
        test VIDIOC_G/S_PRIORITY: OK
        test for unlimited opens: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
        test VIDIOC_LOG_STATUS: OK

Input ioctls:
        test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
        test VIDIOC_ENUMAUDIO: OK (Not Supported)
        test VIDIOC_G/S/ENUMINPUT: OK
        test VIDIOC_G/S_AUDIO: OK (Not Supported)
        Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
        test VIDIOC_G/S_MODULATOR: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_ENUMAUDOUT: OK (Not Supported)
        test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDOUT: OK (Not Supported)
        Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
        test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
        test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
        test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
        test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls (Input 0):
        test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
        test VIDIOC_QUERYCTRL: OK
        test VIDIOC_G/S_CTRL: OK
        test VIDIOC_G/S/TRY_EXT_CTRLS: OK
        test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
        test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
        Standard Controls: 1 Private Controls: 20

Format ioctls (Input 0):
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
                fail: v4l2-test-formats.cpp(1280): ret && node->has_frmintervals
        test VIDIOC_G/S_PARM: FAIL
        test VIDIOC_G_FBUF: OK (Not Supported)
        test VIDIOC_G_FMT: OK
        test VIDIOC_TRY_FMT: OK
        test VIDIOC_S_FMT: OK
        test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
        test Cropping: OK (Not Supported)
        test Composing: OK (Not Supported)
        test Scaling: OK (Not Supported)

Codec ioctls (Input 0):
        test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
        test VIDIOC_G_ENC_INDEX: OK (Not Supported)
        test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

Buffer ioctls (Input 0):
                fail: v4l2-test-buffers.cpp(715): q.create_bufs(node, 1, &fmt) != EINVAL
        test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
        test VIDIOC_EXPBUF: OK
        test Requests: OK (Not Supported)

Total for tegra-video device /dev/video0: 45, Succeeded: 43, Failed: 2, Warnings: 0
jetson@orin-nx:~$ v4l2-compliance -d /dev/video1
v4l2-compliance SHA: not available, 64 bits

Compliance test for tegra-video device /dev/video1:

Driver Info:
        Driver name      : tegra-video
        Card type        : vi-output, imx219 31-0010
        Bus info         : platform:tegra-capture-vi:1
        Driver version   : 5.10.104
        Capabilities     : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : tegra-camrtc-ca
        Model            : NVIDIA Tegra Video Input Device
        Serial           :
        Bus info         :
        Media version    : 5.10.104
        Hardware revision: 0x00000003 (3)
        Driver version   : 5.10.104
Interface Info:
        ID               : 0x03000025
        Type             : V4L Video
Entity Info:
        ID               : 0x00000023 (35)
        Name             : vi-output, imx219 31-0010
        Function         : V4L2 I/O
        Pad 0x01000024   : 0: Sink
          Link 0x02000029: from remote pad 0x1000006 of entity '13e40000.host1x:nvcsi@15a00000-': Data, Enabled

Required ioctls:
        test MC information (see 'Media Driver Info' above): OK
        test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
        test second /dev/video1 open: OK
        test VIDIOC_QUERYCAP: OK
        test VIDIOC_G/S_PRIORITY: OK
        test for unlimited opens: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
        test VIDIOC_LOG_STATUS: OK

Input ioctls:
        test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
        test VIDIOC_ENUMAUDIO: OK (Not Supported)
        test VIDIOC_G/S/ENUMINPUT: OK
        test VIDIOC_G/S_AUDIO: OK (Not Supported)
        Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
        test VIDIOC_G/S_MODULATOR: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_ENUMAUDOUT: OK (Not Supported)
        test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDOUT: OK (Not Supported)
        Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
        test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
        test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
        test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
        test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls (Input 0):
        test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
        test VIDIOC_QUERYCTRL: OK
        test VIDIOC_G/S_CTRL: OK
        test VIDIOC_G/S/TRY_EXT_CTRLS: OK
        test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
        test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
        Standard Controls: 1 Private Controls: 20

Format ioctls (Input 0):
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
                fail: v4l2-test-formats.cpp(1280): ret && node->has_frmintervals
        test VIDIOC_G/S_PARM: FAIL
        test VIDIOC_G_FBUF: OK (Not Supported)
        test VIDIOC_G_FMT: OK
        test VIDIOC_TRY_FMT: OK
        test VIDIOC_S_FMT: OK
        test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
        test Cropping: OK (Not Supported)
        test Composing: OK (Not Supported)
        test Scaling: OK (Not Supported)

Codec ioctls (Input 0):
        test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
        test VIDIOC_G_ENC_INDEX: OK (Not Supported)
        test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

Buffer ioctls (Input 0):
                fail: v4l2-test-buffers.cpp(715): q.create_bufs(node, 1, &fmt) != EINVAL
        test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
        test VIDIOC_EXPBUF: OK
        test Requests: OK (Not Supported)

Total for tegra-video device /dev/video1: 45, Succeeded: 43, Failed: 2, Warnings: 0
jetson@orin-nx:~$ v4l2-compliance -d /dev/video2
v4l2-compliance SHA: not available, 64 bits

Compliance test for tegra-video device /dev/video2:

Driver Info:
        Driver name      : tegra-video
        Card type        : vi-output, imx219 32-0010
        Bus info         : platform:tegra-capture-vi:2
        Driver version   : 5.10.104
        Capabilities     : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : tegra-camrtc-ca
        Model            : NVIDIA Tegra Video Input Device
        Serial           :
        Bus info         :
        Media version    : 5.10.104
        Hardware revision: 0x00000003 (3)
        Driver version   : 5.10.104
Interface Info:
        ID               : 0x03000031
        Type             : V4L Video
Entity Info:
        ID               : 0x0000002f (47)
        Name             : vi-output, imx219 32-0010
        Function         : V4L2 I/O
        Pad 0x01000030   : 0: Sink
          Link 0x02000035: from remote pad 0x1000009 of entity '13e40000.host1x:nvcsi@15a00000-': Data, Enabled

Required ioctls:
        test MC information (see 'Media Driver Info' above): OK
        test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
        test second /dev/video2 open: OK
        test VIDIOC_QUERYCAP: OK
        test VIDIOC_G/S_PRIORITY: OK
        test for unlimited opens: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
        test VIDIOC_LOG_STATUS: OK

Input ioctls:
        test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
        test VIDIOC_ENUMAUDIO: OK (Not Supported)
        test VIDIOC_G/S/ENUMINPUT: OK
        test VIDIOC_G/S_AUDIO: OK (Not Supported)
        Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
        test VIDIOC_G/S_MODULATOR: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_ENUMAUDOUT: OK (Not Supported)
        test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDOUT: OK (Not Supported)
        Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
        test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
        test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
        test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
        test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls (Input 0):
        test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
        test VIDIOC_QUERYCTRL: OK
        test VIDIOC_G/S_CTRL: OK
        test VIDIOC_G/S/TRY_EXT_CTRLS: OK
        test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
        test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
        Standard Controls: 1 Private Controls: 20

Format ioctls (Input 0):
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
                fail: v4l2-test-formats.cpp(1280): ret && node->has_frmintervals
        test VIDIOC_G/S_PARM: FAIL
        test VIDIOC_G_FBUF: OK (Not Supported)
        test VIDIOC_G_FMT: OK
        test VIDIOC_TRY_FMT: OK
        test VIDIOC_S_FMT: OK
        test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
        test Cropping: OK (Not Supported)
        test Composing: OK (Not Supported)
        test Scaling: OK (Not Supported)

Codec ioctls (Input 0):
        test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
        test VIDIOC_G_ENC_INDEX: OK (Not Supported)
        test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

Buffer ioctls (Input 0):
                fail: v4l2-test-buffers.cpp(715): q.create_bufs(node, 1, &fmt) != EINVAL
        test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
        test VIDIOC_EXPBUF: OK
        test Requests: OK (Not Supported)

Total for tegra-video device /dev/video2: 45, Succeeded: 43, Failed: 2, Warnings: 0
jetson@orin-nx:~$

hello AlexKlimaj,

below test failure looks harmful.

had you validate the sensor functionality before?
did you port this to kernel-5.10? please see-also Camera Driver Porting to review the driver implementation.
thanks

Yes on a raspberry pi. These are just the Pi cams with the imx219 sensor. Shouldn’t need any drive porting.

I’m guessing my device tree I’ve linked is not correct. I have not seen a comparable example using the tca9546 i2c mux with 4x 2 lane CSI.

there’re only 2-cam configuration by default.
you’ll need some development to extend the number of cameras.

Okay ignore 4 cameras for the moment. Can you help with a device tree with 2 - 2 lane cameras and the tca9546 i2c mux? This should just be a device tree configuration.

Here is the latest device tree I’m testing.
temp.txt (442.0 KB)

I’m confused about tegra_sinterface. Should cameras 0, 1, 2, and 3 be serial_a, serial_b, serial_c, and serial_d respectively?

jetson@orin-nx:~$ v4l2-compliance -d /dev/video0
v4l2-compliance SHA: not available, 64 bits

Compliance test for tegra-video device /dev/video0:

Driver Info:
        Driver name      : tegra-video
        Card type        : vi-output, imx219 30-0010
        Bus info         : platform:tegra-capture-vi:0
        Driver version   : 5.10.104
        Capabilities     : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : tegra-camrtc-ca
        Model            : NVIDIA Tegra Video Input Device
        Serial           :
        Bus info         :
        Media version    : 5.10.104
        Hardware revision: 0x00000003 (3)
        Driver version   : 5.10.104
Interface Info:
        ID               : 0x03000011
        Type             : V4L Video
Entity Info:
        ID               : 0x0000000f (15)
        Name             : vi-output, imx219 30-0010
        Function         : V4L2 I/O
        Pad 0x01000010   : 0: Sink
          Link 0x02000015: from remote pad 0x1000003 of entity '13e40000.host1x:nvcsi@15a00000-': Data, Enabled

Required ioctls:
        test MC information (see 'Media Driver Info' above): OK
        test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
        test second /dev/video0 open: OK
        test VIDIOC_QUERYCAP: OK
        test VIDIOC_G/S_PRIORITY: OK
        test for unlimited opens: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
[  335.502310] bwmgr API not supported
        test VIDIOC_LOG_STATUS: OK

Input ioctls:
        test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
        test VIDIOC_ENUMAUDIO: OK (Not Supported)
        test VIDIOC_G/S/ENUMINPUT: OK
        test VIDIOC_G/S_AUDIO: OK (Not Supported)
        Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
        test VIDIOC_G/S_MODULATOR: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_ENUMAUDOUT: OK (Not Supported)
        test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDOUT: OK (Not Supported)
        Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
        test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
        test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
        test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
        test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls (Input 0):
        test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
        test VIDIOC_QUERYCTRL: OK
        test VIDIOC_G/S_CTRL: OK
        test VIDIOC_G/S/TRY_EXT_CTRLS: OK
        test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
        test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
        Standard Controls: 1 Private Controls: 20

Format ioctls (Input 0):
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
                fail: v4l2-test-formats.cpp(1280): ret && node->has_frmintervals
        test VIDIOC_G/S_PARM: FAIL
        test VIDIOC_G_FBUF: OK (Not Supported)
        test VIDIOC_G_FMT: OK
        test VIDIOC_TRY_FMT: OK
        test VIDIOC_S_FMT: OK
        test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
        test Cropping: OK (Not Supported)
        test Composing: OK (Not Supported)
        test Scaling: OK (Not Supported)

Codec ioctls (Input 0):
        test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
        test VIDIOC_G_ENC_INDEX: OK (Not Supported)
        test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

Buffer ioctls (Input 0):
                fail: v4l2-test-buffers.cpp(715): q.create_bufs(node, 1, &fmt) != EINVAL
        test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
        test VIDIOC_EXPBUF: OK
        test Requests: OK (Not Supported)

Total for tegra-video device /dev/video0: 45, Succeeded: 43, Failed: 2, Warnings: 0
jetson@orin-nx:~$ v4l2-compliance -d /dev/video1
v4l2-compliance SHA: not available, 64 bits

Compliance test for tegra-video device /dev/video1:

Driver Info:
        Driver name      : tegra-video
        Card type        : vi-output, imx219 31-0010
        Bus info         : platform:tegra-capture-vi:1
        Driver version   : 5.10.104
        Capabilities     : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : tegra-camrtc-ca
        Model            : NVIDIA Tegra Video Input Device
        Serial           :
        Bus info         :
        Media version    : 5.10.104
        Hardware revision: 0x00000003 (3)
        Driver version   : 5.10.104
Interface Info:
        ID               : 0x03000025
        Type             : V4L Video
Entity Info:
        ID               : 0x00000023 (35)
        Name             : vi-output, imx219 31-0010
        Function         : V4L2 I/O
        Pad 0x01000024   : 0: Sink
          Link 0x02000029: from remote pad 0x1000006 of entity '13e40000.host1x:nvcsi@15a00000-': Data, Enabled

Required ioctls:
        test MC information (see 'Media Driver Info' above): OK
        test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
        test second /dev/video1 open: OK
        test VIDIOC_QUERYCAP: OK
        test VIDIOC_G/S_PRIORITY: OK
        test for unlimited opens: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
        test VIDIOC_LOG_STATUS: OK

Input ioctls:
        test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
        test VIDIOC_ENUMAUDIO: OK (Not Supported)
        test VIDIOC_G/S/ENUMINPUT: OK
        test VIDIOC_G/S_AUDIO: OK (Not Supported)
        Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
        test VIDIOC_G/S_MODULATOR: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_ENUMAUDOUT: OK (Not Supported)
        test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDOUT: OK (Not Supported)
        Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
        test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
        test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
        test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
        test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls (Input 0):
        test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
        test VIDIOC_QUERYCTRL: OK
        test VIDIOC_G/S_CTRL: OK
        test VIDIOC_G/S/TRY_EXT_CTRLS: OK
        test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
        test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
        Standard Controls: 1 Private Controls: 20

Format ioctls (Input 0):
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
                fail: v4l2-test-formats.cpp(1280): ret && node->has_frmintervals
        test VIDIOC_G/S_PARM: FAIL
        test VIDIOC_G_FBUF: OK (Not Supported)
        test VIDIOC_G_FMT: OK
        test VIDIOC_TRY_FMT: OK
        test VIDIOC_S_FMT: OK
        test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
        test Cropping: OK (Not Supported)
        test Composing: OK (Not Supported)
        test Scaling: OK (Not Supported)

Codec ioctls (Input 0):
        test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
        test VIDIOC_G_ENC_INDEX: OK (Not Supported)
        test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

Buffer ioctls (Input 0):
                fail: v4l2-test-buffers.cpp(715): q.create_bufs(node, 1, &fmt) != EINVAL
        test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
        test VIDIOC_EXPBUF: OK
        test Requests: OK (Not Supported)

Total for tegra-video device /dev/video1: 45, Succeeded: 43, Failed: 2, Warnings: 0
jetson@orin-nx:~$ v4l2-compliance -d /dev/video2
v4l2-compliance SHA: not available, 64 bits

Compliance test for tegra-video device /dev/video2:

Driver Info:
        Driver name      : tegra-video
        Card type        : vi-output, imx219 33-0010
        Bus info         : platform:tegra-capture-vi:3
        Driver version   : 5.10.104
        Capabilities     : 0x84200001
                Video Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : tegra-camrtc-ca
        Model            : NVIDIA Tegra Video Input Device
        Serial           :
        Bus info         :
        Media version    : 5.10.104
        Hardware revision: 0x00000003 (3)
        Driver version   : 5.10.104
Interface Info:
        ID               : 0x03000031
        Type             : V4L Video
Entity Info:
        ID               : 0x0000002f (47)
        Name             : vi-output, imx219 33-0010
        Function         : V4L2 I/O
        Pad 0x01000030   : 0: Sink
          Link 0x02000035: from remote pad 0x100000c of entity '13e40000.host1x:nvcsi@15a00000-': Data, Enabled

Required ioctls:
        test MC information (see 'Media Driver Info' above): OK
        test VIDIOC_QUERYCAP: OK

Allow for multiple opens:
        test second /dev/video2 open: OK
        test VIDIOC_QUERYCAP: OK
        test VIDIOC_G/S_PRIORITY: OK
        test for unlimited opens: OK

Debug ioctls:
        test VIDIOC_DBG_G/S_REGISTER: OK (Not Supported)
        test VIDIOC_LOG_STATUS: OK

Input ioctls:
        test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
        test VIDIOC_ENUMAUDIO: OK (Not Supported)
        test VIDIOC_G/S/ENUMINPUT: OK
        test VIDIOC_G/S_AUDIO: OK (Not Supported)
        Inputs: 1 Audio Inputs: 0 Tuners: 0

Output ioctls:
        test VIDIOC_G/S_MODULATOR: OK (Not Supported)
        test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
        test VIDIOC_ENUMAUDOUT: OK (Not Supported)
        test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
        test VIDIOC_G/S_AUDOUT: OK (Not Supported)
        Outputs: 0 Audio Outputs: 0 Modulators: 0

Input/Output configuration ioctls:
        test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
        test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
        test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
        test VIDIOC_G/S_EDID: OK (Not Supported)

Control ioctls (Input 0):
        test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
        test VIDIOC_QUERYCTRL: OK
        test VIDIOC_G/S_CTRL: OK
        test VIDIOC_G/S/TRY_EXT_CTRLS: OK
        test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
        test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
        Standard Controls: 1 Private Controls: 20

Format ioctls (Input 0):
        test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK
                fail: v4l2-test-formats.cpp(1280): ret && node->has_frmintervals
        test VIDIOC_G/S_PARM: FAIL
        test VIDIOC_G_FBUF: OK (Not Supported)
        test VIDIOC_G_FMT: OK
        test VIDIOC_TRY_FMT: OK
        test VIDIOC_S_FMT: OK
        test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
        test Cropping: OK (Not Supported)
        test Composing: OK (Not Supported)
        test Scaling: OK (Not Supported)

Codec ioctls (Input 0):
        test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
        test VIDIOC_G_ENC_INDEX: OK (Not Supported)
        test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)

Buffer ioctls (Input 0):
                fail: v4l2-test-buffers.cpp(715): q.create_bufs(node, 1, &fmt) != EINVAL
        test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: FAIL
        test VIDIOC_EXPBUF: OK
        test Requests: OK (Not Supported)

Total for tegra-video device /dev/video2: 45, Succeeded: 43, Failed: 2, Warnings: 0
jetson@orin-nx:~$
jetson@orin-nx:~$ v4l2-ctl -d /dev/video0 --stream-mmap
<<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<^C[ 1019.292859] bwmgr API not supported

jetson@orin-nx:~$ v4l2-ctl -d /dev/video1
jetson@orin-nx:~$ v4l2-ctl -d /dev/video1 --stream-mmap
[ 1041.036710] bwmgr API not supported
<<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<^C[ 1050.936894] bwmgr API not supported

jetson@orin-nx:~$ v4l2-ctl -d /dev/video2 --stream-mmap
[ 1057.580966] bwmgr API not supported
<<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<<<<<<<<<<<<<<<<<<<< 21.19 fps
<<^C[ 1060.896627] bwmgr API not supported

jetson@orin-nx:~$

please refer to Port Index session.

this looks promising. it’s v4l2 standard control to parse the frame and reporting the frame-rate for every second.

Okay based on that
CSI0 is serial_a Port 0 Steam 0
CSI1 is serial_b Port 1 Stream 1
CSI2 is serial_c Port 2 Stream 2
CSI3 is serial_d Port 3 Stream 3

Is this correct?

Then serial_a and serial_b lane_polarity should be 6 and serial_c and serial_d should be lane_polarity 0?

#include <dt-bindings/media/camera.h>

/ {
	tegra-capture-vi  {
		num-channels = <4>;
		ports {
			#address-cells = <1>;
			#size-cells = <0>;
			vi_port0: port@0 {
				reg = <0>;
				rbpcv2_imx219_vi_in0: endpoint {
					port-index = <0>;
					bus-width = <2>;
					remote-endpoint = <&rbpcv2_imx219_csi_out0>;
				};
			};
			vi_port1: port@1 {
				reg = <1>;
				rbpcv2_imx219_vi_in1: endpoint {
					port-index = <1>;
					bus-width = <2>;
					remote-endpoint = <&rbpcv2_imx219_csi_out1>;
				};
			};
			vi_port2: port@2 {
				reg = <2>;
				rbpcv2_imx219_vi_in2: endpoint {
					port-index = <2>;
					bus-width = <2>;
					remote-endpoint = <&rbpcv2_imx219_csi_out2>;
				};
			};
			vi_port3: port@3 {
				reg = <3>;
				rbpcv2_imx219_vi_in3: endpoint {
					port-index = <3>;
					bus-width = <2>;
					remote-endpoint = <&rbpcv2_imx219_csi_out3>;
				};
			};
		};
	};

	host1x@13e00000 {
		nvcsi@15a00000 {
			num-channels = <4>;
			#address-cells = <1>;
			#size-cells = <0>;
			csi_chan0: channel@0 {
				reg = <0>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					csi_chan0_port0: port@0 {
						reg = <0>;
						rbpcv2_imx219_csi_in0: endpoint@0 {
							port-index = <0>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_out0>;
						};
					};
					csi_chan0_port1: port@1 {
						reg = <1>;
						rbpcv2_imx219_csi_out0: endpoint@1 {
							remote-endpoint = <&rbpcv2_imx219_vi_in0>;
						};
					};
				};
			};
			csi_chan1: channel@1 {
				reg = <1>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					csi_chan1_port0: port@0 {
						reg = <0>;
						rbpcv2_imx219_csi_in1: endpoint@2 {
							port-index = <1>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_out1>;
						};
					};
					csi_chan1_port1: port@1 {
						reg = <1>;
						rbpcv2_imx219_csi_out1: endpoint@3 {
							remote-endpoint = <&rbpcv2_imx219_vi_in1>;
						};
					};
				};
			};
			csi_chan2: channel@2 {
				reg = <2>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					csi_chan2_port0: port@0 {
						reg = <0>;
						rbpcv2_imx219_csi_in2: endpoint@4 {
							port-index = <2>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_out2>;
						};
					};
					csi_chan2_port1: port@1 {
						reg = <1>;
						rbpcv2_imx219_csi_out2: endpoint@5 {
							remote-endpoint = <&rbpcv2_imx219_vi_in2>;
						};
					};
				};
			};
			csi_chan3: channel@3 {
				reg = <3>;
				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					csi_chan3_port0: port@0 {
						reg = <0>;
						rbpcv2_imx219_csi_in3: endpoint@6 {
							port-index = <3>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_out3>;
						};
					};
					csi_chan3_port1: port@1 {
						reg = <1>;
						rbpcv2_imx219_csi_out3: endpoint@7 {
							remote-endpoint = <&rbpcv2_imx219_vi_in3>;
						};
					};
				};
			};
		};
	};

	i2c@3180000 {
		tca9546@70 {
			i2c@0 {
			imx219_cam0: rbpcv2_imx219_a@10 {
				compatible = "sony,imx219";
				/* I2C device address */
				reg = <0x10>;

				/* V4L2 device node location */
				devnode = "video0";

				/* Physical dimensions of sensor */
				physical_w = "3.680";
				physical_h = "2.760";

				sensor_model = "imx219";

				use_sensor_mode_id = "true";

				/**
				* ==== Modes ====
				* A modeX node is required to support v4l2 driver
				* implementation with NVIDIA camera software stack
				*
				* == Signal properties ==
				*
				* phy_mode = "";
				* PHY mode used by the MIPI lanes for this device
				*
				* tegra_sinterface = "";
				* CSI Serial interface connected to tegra
				* Incase of virtual HW devices, use virtual
				* For SW emulated devices, use host
				*
				* pix_clk_hz = "";
				* Sensor pixel clock used for calculations like exposure and framerate
				*
				* readout_orientation = "0";
				* Based on camera module orientation.
				* Only change readout_orientation if you specifically
				* Program a different readout order for this mode
				*
				* lane_polarity
				* Based on the camera connector pin.
				* CSIx_D0 | CSIx_D1 | CSI(X+1)_D0 | CSI(X+1)CSIx_D1
				*    LSB  |   BIT1  |     BIT2    |      MSB
				* if there is a polarity swap on any lane, the bit corrsponding
				* to the lane should be set
				* e.g. polarity swap on CSIx_D0 only -> lane_polarity = "1"; 0001
				* e.g. polarity swap on CSIx_D1 and CSI(X+1)_D0 -> lane_polarity = "6"; 0110
				*
				* == Image format Properties ==
				*
				* active_w = "";
				* Pixel active region width
				*
				* active_h = "";
				* Pixel active region height
				*
				* pixel_t = "";
				* The sensor readout pixel pattern
				*
				* line_length = "";
				* Pixel line length (width) for sensor mode.
				*
				* == Source Control Settings ==
				*
				* Gain factor used to convert fixed point integer to float
				* Gain range [min_gain/gain_factor, max_gain/gain_factor]
				* Gain step [step_gain/gain_factor is the smallest step that can be configured]
				* Default gain [Default gain to be initialized for the control.
				*     use min_gain_val as default for optimal results]
				* Framerate factor used to convert fixed point integer to float
				* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
				* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
				* Default Framerate [Default framerate to be initialized for the control.
				*     use max_framerate to get required performance]
				* Exposure factor used to convert fixed point integer to float
				* For convenience use 1 sec = 1000000us as conversion factor
				* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
				* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
				* Default Exposure Time [Default exposure to be initialized for the control.
				*     Set default exposure based on the default_framerate for optimal exposure settings]
				*
				* gain_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_gain_val = ""; (ceil to integer)
				* max_gain_val = ""; (ceil to integer)
				* step_gain_val = ""; (ceil to integer)
				* default_gain = ""; (ceil to integer)
				* Gain limits for mode
				*
				* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_exp_time = ""; (ceil to integer)
				* max_exp_time = ""; (ceil to integer)
				* step_exp_time = ""; (ceil to integer)
				* default_exp_time = ""; (ceil to integer)
				* Exposure Time limits for mode (sec)
				*
				* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_framerate = ""; (ceil to integer)
				* max_framerate = ""; (ceil to integer)
				* step_framerate = ""; (ceil to integer)
				* default_framerate = ""; (ceil to integer)
				* Framerate limits for mode (fps)
				*
				* embedded_metadata_height = "";
				* Sensor embedded metadata height in units of rows.
				* If sensor does not support embedded metadata value should be 0.
				*/
				mode0 { /* IMX219_MODE_3280x2464_21FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "3280";
					active_h = "2464";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "21000000"; /* 21.0 fps */
					step_framerate = "1";
					default_framerate = "21000000"; /* 21.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode1 { /* IMX219_MODE_3280x1848_28FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "3280";
					active_h = "1848";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "28000000"; /* 28.0 fps */
					step_framerate = "1";
					default_framerate = "28000000"; /* 28.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode2 { /* IMX219_MODE_1920x1080_30FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "1920";
					active_h = "1080";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "30000000"; /* 30.0 fps */
					step_framerate = "1";
					default_framerate = "30000000"; /* 30.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};

				mode3 { /* IMX219_MODE_1640x1232_30FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "1640";
					active_h = "1232";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "30000000"; /* 60.0 fps */
					step_framerate = "1";
					default_framerate = "30000000"; /* 60.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};

				mode4 { /* IMX219_MODE_1280x720_60FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_a";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "1280";
					active_h = "720";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "60000000"; /* 60.0 fps */
					step_framerate = "1";
					default_framerate = "60000000"; /* 60.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				/*
				*mode5 {  IMX219_MODE_1280x720_120FPS
					* mclk_khz = "24000";
					* num_lanes = "2";
					* tegra_sinterface = "serial_a";
					* phy_mode = "DPHY";
					* discontinuous_clk = "yes";
					* dpcm_enable = "false";
					* cil_settletime = "0";
					* lane_polarity = "6";

					* active_w = "1280";
					* active_h = "720";
					* mode_type = "bayer";
					* pixel_phase = "rggb";
					* csi_pixel_bit_depth = "10";
					* readout_orientation = "90";
					* line_length = "3560";
					* inherent_gain = "1";
					* mclk_multiplier = "9.33";
					* pix_clk_hz = "169600000";

					* gain_factor = "16";
					* framerate_factor = "1000000";
					* exposure_factor = "1000000";
					* min_gain_val = "16"; // 1.00x
					* max_gain_val = "170"; // 10.66x
					* step_gain_val = "1";
					* default_gain = "16"; // 1.00x
					* min_hdr_ratio = "1";
					* max_hdr_ratio = "1";
					* min_framerate = "2000000"; // 2.0 fps
					* max_framerate = "120000000"; // 120.0 fps
					* step_framerate = "1";
					* default_framerate = "120000000"; // 120.0 fps
					* min_exp_time = "13"; // us
					* max_exp_time = "683709"; // us
					* step_exp_time = "1";
					* default_exp_time = "2495"; // us

					* embedded_metadata_height = "2";
				*};
				*/

				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						rbpcv2_imx219_out0: endpoint {
							status = "okay";
							port-index = <0>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_csi_in0>;
						};
					};
				};
			};
		};
		i2c@1 {
			imx219_cam1: rbpcv2_imx219_b@10 {
				compatible = "sony,imx219";
				/* I2C device address */
				reg = <0x10>;

				/* V4L2 device node location */
				devnode = "video1";

				/* Physical dimensions of sensor */
				physical_w = "3.680";
				physical_h = "2.760";

				sensor_model = "imx219";

				use_sensor_mode_id = "true";

				/**
				* ==== Modes ====
				* A modeX node is required to support v4l2 driver
				* implementation with NVIDIA camera software stack
				*
				* == Signal properties ==
				*
				* phy_mode = "";
				* PHY mode used by the MIPI lanes for this device
				*
				* tegra_sinterface = "";
				* CSI Serial interface connected to tegra
				* Incase of virtual HW devices, use virtual
				* For SW emulated devices, use host
				*
				* pix_clk_hz = "";
				* Sensor pixel clock used for calculations like exposure and framerate
				*
				* readout_orientation = "0";
				* Based on camera module orientation.
				* Only change readout_orientation if you specifically
				* Program a different readout order for this mode
				*
				* == Image format Properties ==
				*
				* active_w = "";
				* Pixel active region width
				*
				* active_h = "";
				* Pixel active region height
				*
				* pixel_t = "";
				* The sensor readout pixel pattern
				*
				* line_length = "";
				* Pixel line length (width) for sensor mode.
				*
				* == Source Control Settings ==
				*
				* Gain factor used to convert fixed point integer to float
				* Gain range [min_gain/gain_factor, max_gain/gain_factor]
				* Gain step [step_gain/gain_factor is the smallest step that can be configured]
				* Default gain [Default gain to be initialized for the control.
				*     use min_gain_val as default for optimal results]
				* Framerate factor used to convert fixed point integer to float
				* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
				* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
				* Default Framerate [Default framerate to be initialized for the control.
				*     use max_framerate to get required performance]
				* Exposure factor used to convert fixed point integer to float
				* For convenience use 1 sec = 1000000us as conversion factor
				* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
				* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
				* Default Exposure Time [Default exposure to be initialized for the control.
				*     Set default exposure based on the default_framerate for optimal exposure settings]
				*
				* gain_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_gain_val = ""; (ceil to integer)
				* max_gain_val = ""; (ceil to integer)
				* step_gain_val = ""; (ceil to integer)
				* default_gain = ""; (ceil to integer)
				* Gain limits for mode
				*
				* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_exp_time = ""; (ceil to integer)
				* max_exp_time = ""; (ceil to integer)
				* step_exp_time = ""; (ceil to integer)
				* default_exp_time = ""; (ceil to integer)
				* Exposure Time limits for mode (sec)
				*
				* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_framerate = ""; (ceil to integer)
				* max_framerate = ""; (ceil to integer)
				* step_framerate = ""; (ceil to integer)
				* default_framerate = ""; (ceil to integer)
				* Framerate limits for mode (fps)
				*
				* embedded_metadata_height = "";
				* Sensor embedded metadata height in units of rows.
				* If sensor does not support embedded metadata value should be 0.
				*/
				mode0 { /* IMX219_MODE_3280x2464_21FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_b";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "3280";
					active_h = "2464";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "21000000"; /* 21.0 fps */
					step_framerate = "1";
					default_framerate = "21000000"; /* 21.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode1 { /* IMX219_MODE_3280x1848_28FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_b";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "3280";
					active_h = "1848";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "28000000"; /* 28.0 fps */
					step_framerate = "1";
					default_framerate = "28000000"; /* 28.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode2 { /* IMX219_MODE_1920x1080_30FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_b";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "1920";
					active_h = "1080";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "30000000"; /* 30.0 fps */
					step_framerate = "1";
					default_framerate = "30000000"; /* 30.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode3 { /* IMX219_MODE_1640x1232_30FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_b";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "1640";
					active_h = "1232";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "30000000"; /* 60.0 fps */
					step_framerate = "1";
					default_framerate = "30000000"; /* 60.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode4 { /* IMX219_MODE_1280x720_60FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_b";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "6";

					active_w = "1280";
					active_h = "720";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "60000000"; /* 60.0 fps */
					step_framerate = "1";
					default_framerate = "60000000"; /* 60.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				/*
				*mode5 { // IMX219_MODE_1280x720_120FPS
				*	mclk_khz = "24000";
				*	num_lanes = "2";
				*	tegra_sinterface = "serial_b";
				*	phy_mode = "DPHY";
				*	discontinuous_clk = "yes";
				*	dpcm_enable = "false";
				*	cil_settletime = "0";
				*	lane_polarity = "6";

				*	active_w = "1280";
				*	active_h = "720";
				*	mode_type = "bayer";
				*	pixel_phase = "rggb";
				*	csi_pixel_bit_depth = "10";
				*	readout_orientation = "90";
				*	line_length = "3560";
				*	inherent_gain = "1";
				*	mclk_multiplier = "9.33";
				*	pix_clk_hz = "169600000";

				*	gain_factor = "16";
				*	framerate_factor = "1000000";
				*	exposure_factor = "1000000";
				*	min_gain_val = "16"; // 1.00x
				*	max_gain_val = "170"; // 10.66x
				*	step_gain_val = "1";
				*	default_gain = "16"; // 1.00x
				*	min_hdr_ratio = "1";
				*	max_hdr_ratio = "1";
				*	min_framerate = "2000000"; // 2.0 fps
				*	max_framerate = "120000000"; // 120.0 fps
				*	step_framerate = "1";
				*	default_framerate = "120000000"; // 120.0 fps
				*	min_exp_time = "13"; // us
				*	max_exp_time = "683709"; // us
				*	step_exp_time = "1";
				*	default_exp_time = "2495"; // us

				*	embedded_metadata_height = "2";
				*};
				*/

				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						rbpcv2_imx219_out1: endpoint {
							status = "okay";
							port-index = <1>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_csi_in1>;
						};
					};
				};
			};
		};
		i2c@2 {
			imx219_cam2: rbpcv2_imx219_c@10 {
				compatible = "sony,imx219";
				/* I2C device address */
				reg = <0x10>;

				/* V4L2 device node location */
				devnode = "video2";

				/* Physical dimensions of sensor */
				physical_w = "3.680";
				physical_h = "2.760";

				sensor_model = "imx219";

				use_sensor_mode_id = "true";

				/**
				* ==== Modes ====
				* A modeX node is required to support v4l2 driver
				* implementation with NVIDIA camera software stack
				*
				* == Signal properties ==
				*
				* phy_mode = "";
				* PHY mode used by the MIPI lanes for this device
				*
				* tegra_sinterface = "";
				* CSI Serial interface connected to tegra
				* Incase of virtual HW devices, use virtual
				* For SW emulated devices, use host
				*
				* pix_clk_hz = "";
				* Sensor pixel clock used for calculations like exposure and framerate
				*
				* readout_orientation = "0";
				* Based on camera module orientation.
				* Only change readout_orientation if you specifically
				* Program a different readout order for this mode
				*
				* lane_polarity
				* Based on the camera connector pin.
				* CSIx_D0 | CSIx_D1 | CSI(X+1)_D0 | CSI(X+1)CSIx_D1
				*    LSB  |   BIT1  |     BIT2    |      MSB
				* if there is a polarity swap on any lane, the bit corrsponding
				* to the lane should be set
				* e.g. polarity swap on CSIx_D0 only -> lane_polarity = "1"; 0001
				* e.g. polarity swap on CSIx_D1 and CSI(X+1)_D0 -> lane_polarity = "6"; 0110
				*
				* == Image format Properties ==
				*
				* active_w = "";
				* Pixel active region width
				*
				* active_h = "";
				* Pixel active region height
				*
				* pixel_t = "";
				* The sensor readout pixel pattern
				*
				* line_length = "";
				* Pixel line length (width) for sensor mode.
				*
				* == Source Control Settings ==
				*
				* Gain factor used to convert fixed point integer to float
				* Gain range [min_gain/gain_factor, max_gain/gain_factor]
				* Gain step [step_gain/gain_factor is the smallest step that can be configured]
				* Default gain [Default gain to be initialized for the control.
				*     use min_gain_val as default for optimal results]
				* Framerate factor used to convert fixed point integer to float
				* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
				* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
				* Default Framerate [Default framerate to be initialized for the control.
				*     use max_framerate to get required performance]
				* Exposure factor used to convert fixed point integer to float
				* For convenience use 1 sec = 1000000us as conversion factor
				* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
				* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
				* Default Exposure Time [Default exposure to be initialized for the control.
				*     Set default exposure based on the default_framerate for optimal exposure settings]
				*
				* gain_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_gain_val = ""; (ceil to integer)
				* max_gain_val = ""; (ceil to integer)
				* step_gain_val = ""; (ceil to integer)
				* default_gain = ""; (ceil to integer)
				* Gain limits for mode
				*
				* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_exp_time = ""; (ceil to integer)
				* max_exp_time = ""; (ceil to integer)
				* step_exp_time = ""; (ceil to integer)
				* default_exp_time = ""; (ceil to integer)
				* Exposure Time limits for mode (sec)
				*
				* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_framerate = ""; (ceil to integer)
				* max_framerate = ""; (ceil to integer)
				* step_framerate = ""; (ceil to integer)
				* default_framerate = ""; (ceil to integer)
				* Framerate limits for mode (fps)
				*
				* embedded_metadata_height = "";
				* Sensor embedded metadata height in units of rows.
				* If sensor does not support embedded metadata value should be 0.
				*/
				mode0 { /* IMX219_MODE_3280x2464_21FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "3280";
					active_h = "2464";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "21000000"; /* 21.0 fps */
					step_framerate = "1";
					default_framerate = "21000000"; /* 21.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode1 { /* IMX219_MODE_3280x1848_28FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "3280";
					active_h = "1848";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "28000000"; /* 28.0 fps */
					step_framerate = "1";
					default_framerate = "28000000"; /* 28.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode2 { /* IMX219_MODE_1920x1080_30FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "1920";
					active_h = "1080";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "30000000"; /* 30.0 fps */
					step_framerate = "1";
					default_framerate = "30000000"; /* 30.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};

				mode3 { /* IMX219_MODE_1640x1232_30FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "1640";
					active_h = "1232";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "30000000"; /* 60.0 fps */
					step_framerate = "1";
					default_framerate = "30000000"; /* 60.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};

				mode4 { /* IMX219_MODE_1280x720_60FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_c";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "1280";
					active_h = "720";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "60000000"; /* 60.0 fps */
					step_framerate = "1";
					default_framerate = "60000000"; /* 60.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				/*
				*mode5 {  IMX219_MODE_1280x720_120FPS
					* mclk_khz = "24000";
					* num_lanes = "2";
					* tegra_sinterface = "serial_c";
					* phy_mode = "DPHY";
					* discontinuous_clk = "yes";
					* dpcm_enable = "false";
					* cil_settletime = "0";
					* lane_polarity = "0";

					* active_w = "1280";
					* active_h = "720";
					* mode_type = "bayer";
					* pixel_phase = "rggb";
					* csi_pixel_bit_depth = "10";
					* readout_orientation = "90";
					* line_length = "3560";
					* inherent_gain = "1";
					* mclk_multiplier = "9.33";
					* pix_clk_hz = "169600000";

					* gain_factor = "16";
					* framerate_factor = "1000000";
					* exposure_factor = "1000000";
					* min_gain_val = "16"; // 1.00x
					* max_gain_val = "170"; // 10.66x
					* step_gain_val = "1";
					* default_gain = "16"; // 1.00x
					* min_hdr_ratio = "1";
					* max_hdr_ratio = "1";
					* min_framerate = "2000000"; // 2.0 fps
					* max_framerate = "120000000"; // 120.0 fps
					* step_framerate = "1";
					* default_framerate = "120000000"; // 120.0 fps
					* min_exp_time = "13"; // us
					* max_exp_time = "683709"; // us
					* step_exp_time = "1";
					* default_exp_time = "2495"; // us

					* embedded_metadata_height = "2";
				*};
				*/

				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						rbpcv2_imx219_out2: endpoint {
							status = "okay";
							port-index = <2>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_csi_in2>;
						};
					};
				};
			};
		};
		i2c@3 {
			imx219_cam3: rbpcv2_imx219_d@10 {
				compatible = "sony,imx219";
				/* I2C device address */
				reg = <0x10>;

				/* V4L2 device node location */
				devnode = "video3";

				/* Physical dimensions of sensor */
				physical_w = "3.680";
				physical_h = "2.760";

				sensor_model = "imx219";

				use_sensor_mode_id = "true";

				/**
				* ==== Modes ====
				* A modeX node is required to support v4l2 driver
				* implementation with NVIDIA camera software stack
				*
				* == Signal properties ==
				*
				* phy_mode = "";
				* PHY mode used by the MIPI lanes for this device
				*
				* tegra_sinterface = "";
				* CSI Serial interface connected to tegra
				* Incase of virtual HW devices, use virtual
				* For SW emulated devices, use host
				*
				* pix_clk_hz = "";
				* Sensor pixel clock used for calculations like exposure and framerate
				*
				* readout_orientation = "0";
				* Based on camera module orientation.
				* Only change readout_orientation if you specifically
				* Program a different readout order for this mode
				*
				* lane_polarity
				* Based on the camera connector pin.
				* CSIx_D0 | CSIx_D1 | CSI(X+1)_D0 | CSI(X+1)CSIx_D1
				*    LSB  |   BIT1  |     BIT2    |      MSB
				* if there is a polarity swap on any lane, the bit corrsponding
				* to the lane should be set
				* e.g. polarity swap on CSIx_D0 only -> lane_polarity = "1"; 0001
				* e.g. polarity swap on CSIx_D1 and CSI(X+1)_D0 -> lane_polarity = "6"; 0110
				*
				* == Image format Properties ==
				*
				* active_w = "";
				* Pixel active region width
				*
				* active_h = "";
				* Pixel active region height
				*
				* pixel_t = "";
				* The sensor readout pixel pattern
				*
				* line_length = "";
				* Pixel line length (width) for sensor mode.
				*
				* == Source Control Settings ==
				*
				* Gain factor used to convert fixed point integer to float
				* Gain range [min_gain/gain_factor, max_gain/gain_factor]
				* Gain step [step_gain/gain_factor is the smallest step that can be configured]
				* Default gain [Default gain to be initialized for the control.
				*     use min_gain_val as default for optimal results]
				* Framerate factor used to convert fixed point integer to float
				* Framerate range [min_framerate/framerate_factor, max_framerate/framerate_factor]
				* Framerate step [step_framerate/framerate_factor is the smallest step that can be configured]
				* Default Framerate [Default framerate to be initialized for the control.
				*     use max_framerate to get required performance]
				* Exposure factor used to convert fixed point integer to float
				* For convenience use 1 sec = 1000000us as conversion factor
				* Exposure range [min_exp_time/exposure_factor, max_exp_time/exposure_factor]
				* Exposure step [step_exp_time/exposure_factor is the smallest step that can be configured]
				* Default Exposure Time [Default exposure to be initialized for the control.
				*     Set default exposure based on the default_framerate for optimal exposure settings]
				*
				* gain_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_gain_val = ""; (ceil to integer)
				* max_gain_val = ""; (ceil to integer)
				* step_gain_val = ""; (ceil to integer)
				* default_gain = ""; (ceil to integer)
				* Gain limits for mode
				*
				* exposure_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_exp_time = ""; (ceil to integer)
				* max_exp_time = ""; (ceil to integer)
				* step_exp_time = ""; (ceil to integer)
				* default_exp_time = ""; (ceil to integer)
				* Exposure Time limits for mode (sec)
				*
				* framerate_factor = ""; (integer factor used for floating to fixed point conversion)
				* min_framerate = ""; (ceil to integer)
				* max_framerate = ""; (ceil to integer)
				* step_framerate = ""; (ceil to integer)
				* default_framerate = ""; (ceil to integer)
				* Framerate limits for mode (fps)
				*
				* embedded_metadata_height = "";
				* Sensor embedded metadata height in units of rows.
				* If sensor does not support embedded metadata value should be 0.
				*/
				mode0 { /* IMX219_MODE_3280x2464_21FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_d";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "3280";
					active_h = "2464";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "21000000"; /* 21.0 fps */
					step_framerate = "1";
					default_framerate = "21000000"; /* 21.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode1 { /* IMX219_MODE_3280x1848_28FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_d";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "3280";
					active_h = "1848";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "28000000"; /* 28.0 fps */
					step_framerate = "1";
					default_framerate = "28000000"; /* 28.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				mode2 { /* IMX219_MODE_1920x1080_30FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_d";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "1920";
					active_h = "1080";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "30000000"; /* 30.0 fps */
					step_framerate = "1";
					default_framerate = "30000000"; /* 30.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};

				mode3 { /* IMX219_MODE_1640x1232_30FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_d";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "1640";
					active_h = "1232";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "30000000"; /* 60.0 fps */
					step_framerate = "1";
					default_framerate = "30000000"; /* 60.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};

				mode4 { /* IMX219_MODE_1280x720_60FPS */
					mclk_khz = "24000";
					num_lanes = "2";
					tegra_sinterface = "serial_d";
					phy_mode = "DPHY";
					discontinuous_clk = "yes";
					dpcm_enable = "false";
					cil_settletime = "0";
					lane_polarity = "0";

					active_w = "1280";
					active_h = "720";
					mode_type = "bayer";
					pixel_phase = "rggb";
					csi_pixel_bit_depth = "10";
					readout_orientation = "90";
					line_length = "3448";
					inherent_gain = "1";
					mclk_multiplier = "9.33";
					pix_clk_hz = "182400000";

					gain_factor = "16";
					framerate_factor = "1000000";
					exposure_factor = "1000000";
					min_gain_val = "16"; /* 1.00x */
					max_gain_val = "170"; /* 10.66x */
					step_gain_val = "1";
					default_gain = "16"; /* 1.00x */
					min_hdr_ratio = "1";
					max_hdr_ratio = "1";
					min_framerate = "2000000"; /* 2.0 fps */
					max_framerate = "60000000"; /* 60.0 fps */
					step_framerate = "1";
					default_framerate = "60000000"; /* 60.0 fps */
					min_exp_time = "13"; /* us */
					max_exp_time = "683709"; /* us */
					step_exp_time = "1";
					default_exp_time = "2495"; /* us */

					embedded_metadata_height = "2";
				};
				/*
				*mode5 {  IMX219_MODE_1280x720_120FPS
					* mclk_khz = "24000";
					* num_lanes = "2";
					* tegra_sinterface = "serial_d";
					* phy_mode = "DPHY";
					* discontinuous_clk = "yes";
					* dpcm_enable = "false";
					* cil_settletime = "0";
					* lane_polarity = "0";

					* active_w = "1280";
					* active_h = "720";
					* mode_type = "bayer";
					* pixel_phase = "rggb";
					* csi_pixel_bit_depth = "10";
					* readout_orientation = "90";
					* line_length = "3560";
					* inherent_gain = "1";
					* mclk_multiplier = "9.33";
					* pix_clk_hz = "169600000";

					* gain_factor = "16";
					* framerate_factor = "1000000";
					* exposure_factor = "1000000";
					* min_gain_val = "16"; // 1.00x
					* max_gain_val = "170"; // 10.66x
					* step_gain_val = "1";
					* default_gain = "16"; // 1.00x
					* min_hdr_ratio = "1";
					* max_hdr_ratio = "1";
					* min_framerate = "2000000"; // 2.0 fps
					* max_framerate = "120000000"; // 120.0 fps
					* step_framerate = "1";
					* default_framerate = "120000000"; // 120.0 fps
					* min_exp_time = "13"; // us
					* max_exp_time = "683709"; // us
					* step_exp_time = "1";
					* default_exp_time = "2495"; // us

					* embedded_metadata_height = "2";
				*};
				*/

				ports {
					#address-cells = <1>;
					#size-cells = <0>;
					port@0 {
						reg = <0>;
						rbpcv2_imx219_out3: endpoint {
							status = "okay";
							port-index = <3>;
							bus-width = <2>;
							remote-endpoint = <&rbpcv2_imx219_csi_in3>;
						};
					};
				};
			};
		};
		};
	};

	lens_imx219@RBPCV2 {
		min_focus_distance = "0.0";
		hyper_focal = "0.0";
		focal_length = "3.04";
		f_number = "2.0";
		aperture = "0.0";
	};
};
/ {
	tcp: tegra-camera-platform {
		compatible = "nvidia, tegra-camera-platform";
		/**
		* Physical settings to calculate max ISO BW
		*
		* num_csi_lanes = <>;
		* Total number of CSI lanes when all cameras are active
		*
		* max_lane_speed = <>;
		* Max lane speed in Kbit/s
		*
		* min_bits_per_pixel = <>;
		* Min bits per pixel
		*
		* vi_peak_byte_per_pixel = <>;
		* Max byte per pixel for the VI ISO case
		*
		* vi_bw_margin_pct = <>;
		* Vi bandwidth margin in percentage
		*
		* max_pixel_rate = <>;
		* Max pixel rate in Kpixel/s for the ISP ISO case
		*
		* isp_peak_byte_per_pixel = <>;
		* Max byte per pixel for the ISP ISO case
		*
		* isp_bw_margin_pct = <>;
		* Isp bandwidth margin in percentage
		*/
		num_csi_lanes = <8>;
		max_lane_speed = <1500000>;
		min_bits_per_pixel = <10>;
		vi_peak_byte_per_pixel = <2>;
		vi_bw_margin_pct = <25>;
		max_pixel_rate = <240000>;
		isp_peak_byte_per_pixel = <5>;
		isp_bw_margin_pct = <25>;

		/**
		 * The general guideline for naming badge_info contains 3 parts, and is as follows,
		 * The first part is the camera_board_id for the module; if the module is in a FFD
		 * platform, then use the platform name for this part.
		 * The second part contains the position of the module, ex. "rear" or "front".
		 * The third part contains the last 6 characters of a part number which is found
		 * in the module's specsheet from the vendor.
		 */
		modules {
			cam_module0: module0 {
				badge = "topleft_RBP194";
				position = "topleft";
				orientation = "1";
				cam_module0_drivernode0: drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 9-0010";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@0/rbpcv2_imx219_a@10";
				};
				cam_module0_drivernode1: drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
				};
			};
			cam_module1: module1 {
				badge = "topright_RBP194";
				position = "topright";
				orientation = "1";
				cam_module1_drivernode0: drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 10-0010";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@1/rbpcv2_imx219_b@10";
				};
				cam_module1_drivernode1: drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
				};
			};
			cam_module2: module2 {
				badge = "bottomright_RBP194";
				position = "bottomright";
				orientation = "1";
				cam_module2_drivernode0: drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 11-0010";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@2/rbpcv2_imx219_c@10";
				};
				cam_module2_drivernode1: drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
				};
			};
			cam_module3: module3 {
				badge = "bottomleft_RBP194";
				position = "bottomleft";
				orientation = "1";
				cam_module3_drivernode0: drivernode0 {
					pcl_id = "v4l2_sensor";
					devname = "imx219 12-0010";
					proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@70/i2c@3/rbpcv2_imx219_d@10";
				};
				cam_module3_drivernode1: drivernode1 {
					pcl_id = "v4l2_lens";
					proc-device-tree = "/proc/device-tree/lens_imx219@RBPCV2/";
				};
			};
		};
	};
};
#include "tegra234-camera-ark-imx219.dtsi"
#include "dt-bindings/clock/tegra234-clock.h"

#define CAM0_PWDN	TEGRA234_MAIN_GPIO(H, 6)
#define CAM1_PWDN	TEGRA234_MAIN_GPIO(AC, 0)
#define CAM2_PWDN	TEGRA234_MAIN_GPIO(Y, 4)
#define CAM3_PWDN	TEGRA234_AON_GPIO(CC, 3)
//#define CAM_I2C_MUX 	TEGRA234_AON_GPIO(CC, 3)
#define CAMERA_I2C_MUX_BUS(x) (0x1E + x)

/ {
	i2c@3180000 {
		tca9546@70 {
			compatible = "nxp,pca9546";
			reg = <0x70>;
			#address-cells = <1>;
			#size-cells = <0>;
			skip_mux_detect = "yes";
			force_bus_start = <CAMERA_I2C_MUX_BUS(0)>;
			status = "okay";

			i2c@0 {
				reg = <0>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				rbpcv2_imx219_a@10 {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
          			#address-cells = <1>; 
          			#size-cells = <0>;
					status = "okay";  
					clocks = <&bpmp_clks TEGRA234_CLK_EXTPERIPH1>,
						 <&bpmp_clks TEGRA234_CLK_PLLP_OUT0>;
					clock-names = "extperiph1", "pllp_grtba";
					mclk = "extperiph1";
					reset-gpios = <&tegra_main_gpio CAM0_PWDN GPIO_ACTIVE_HIGH>;
				};
			};
			i2c@1 {
				reg = <1>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				rbpcv2_imx219_b@10 {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
          			#address-cells = <1>; 
          			#size-cells = <0>;
					status = "okay";  
					clocks = <&bpmp_clks TEGRA234_CLK_EXTPERIPH2>,
						 <&bpmp_clks TEGRA234_CLK_PLLP_OUT0>;
					clock-names = "extperiph2", "pllp_grtba";
					mclk = "extperiph2";
					reset-gpios = <&tegra_main_gpio CAM1_PWDN GPIO_ACTIVE_HIGH>;
				};
			};
			i2c@2 {
				reg = <2>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				rbpcv2_imx219_c@10 {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
          			#address-cells = <1>; 
          			#size-cells = <0>;
					status = "okay";  
					clocks = <&bpmp_clks TEGRA234_CLK_EXTPERIPH3>,
						 <&bpmp_clks TEGRA234_CLK_PLLP_OUT0>;
					clock-names = "extperiph3", "pllp_grtba";
					mclk = "extperiph3";
					reset-gpios = <&tegra_main_gpio CAM2_PWDN GPIO_ACTIVE_HIGH>;
				};
			};
			i2c@3 {
				reg = <3>;
				i2c-mux,deselect-on-exit;
				#address-cells = <1>;
				#size-cells = <0>;
				rbpcv2_imx219_d@10 {
					/* Define any required hw resources needed by driver */
					/* ie. clocks, io pins, power sources */
          			#address-cells = <1>; 
          			#size-cells = <0>;
					status = "okay";  
					clocks = <&bpmp_clks TEGRA234_CLK_EXTPERIPH4>,
						 <&bpmp_clks TEGRA234_CLK_PLLP_OUT0>;
					clock-names = "extperiph4", "pllp_grtba";
					mclk = "extperiph4";
					reset-gpios = <&tegra_aon_gpio CAM3_PWDN GPIO_ACTIVE_HIGH>;
				};
			};
		};
	};

	gpio@2200000 {
		camera-control-output-low {
			gpio-hog;
			output-low;
			gpios = <CAM0_PWDN 0 CAM1_PWDN 0
				CAM2_PWDN 0 CAM3_PWDN 0>;
			label = "cam0-pwdn","cam1-pwdn",
				"cam2-pwdn", "cam3-pwdn";
		};
	};
};
#include <dt-bindings/gpio/tegra234-gpio.h>
#include "dt-bindings/input/input.h"
#include <dt-bindings/usb/role.h>
#include "tegra234-p3768-0000-a0-pwm-fan.dtsi"
#include "tegra234-p3768-0000-a0-pcie.dtsi"
#include "tegra234-p3768-0000-a0-fixed-regulator.dtsi"
#include "tegra234-p3768-audio.dtsi"
//#include "tegra234-p3768-camera-rbpcv3-imx477.dtsi"
//#include "tegra234-p3768-camera-rbpcv2-imx219.dtsi"
#include "tegra234-p3768-camera-ark-imx219.dtsi"

/ {
	gpio-keys {
		compatible = "gpio-keys";
		gpio-keys,name = "gpio-keys";
		status = "okay";

		forcerecovery {
			label = "force-recovery";
			gpios = <&tegra_main_gpio TEGRA234_MAIN_GPIO(G, 0) GPIO_ACTIVE_LOW>;
			linux,code = <BTN_1>;
		};

		power_key {
			label = "power-key";
			gpios = <&tegra_aon_gpio TEGRA234_AON_GPIO(EE, 4) GPIO_ACTIVE_LOW>;
			linux,code = <KEY_POWER>;
			gpio-key,wakeup;
		};
	};

	eeprom-manager {
		data-size = <0x100>;
		bus@0 {
			i2c-bus = <&gen1_i2c>;
			eeprom@1 {
				slave-address = <0x57>;
				label = "cvb";
			};
		};

		bus@1 {
			i2c-bus = <&gen2_i2c>;
			eeprom@1 {
				slave-address = <0x50>;
				label = "super-module";
			};
		};
	};

	xusb_padctl: xusb_padctl@3520000 {
		status = "okay";
		pads {
			usb2 {
				lanes {
					usb2-0 {
						nvidia,function = "xusb";
						status = "okay";
					};
					usb2-1 {
						nvidia,function = "xusb";
						status = "okay";
					};
					usb2-2 {
						nvidia,function = "xusb";
						status = "okay";
					};
				};
			};
			usb3 {
				lanes {
					usb3-0 {
						nvidia,function = "xusb";
						status = "okay";
					};
					usb3-1 {
						nvidia,function = "xusb";
						status = "okay";
					};
					usb3-2 {
						nvidia,function = "xusb";
						status = "okay";
					};					
				};
			};
		};

		ports {
			usb2-0 {/* Goes to recovery port when micro usb connected, otherwise goes to Pixhawk */
				mode = "otg";
				status = "okay";
				vbus-supply = <&p3768_vdd_5v_sys>;
				usb-role-switch;
				connector {
					compatible = "usb-b-connector", "gpio-usb-b-connector";
 					label = "micro-USB";
 					type = "micro";
					id-gpio = <&tegra_main_gpio TEGRA234_MAIN_GPIO(Z, 1) GPIO_ACTIVE_LOW>;
 					//vbus-gpio = <&tegra_main_gpio TEGRA234_MAIN_GPIO(Z, 1) GPIO_ACTIVE_HIGH>;
					//cable-connected-on-boot = <USB_ROLE_DEVICE>;
 				};
				// port {
				// 	typec_p0: endpoint {
				// 		remote-endpoint = <&fusb_p0>;
				// 	};
				// };
			};
			usb2-1 {/* Goes to hub */
				mode = "host";
				vbus-supply = <&p3768_vdd_av10_hub>;
				status = "okay";
			};
			usb2-2 {/* Goes to Single USB A Port */
				mode = "host";
				vbus-supply = <&p3768_vdd_5v_sys>;
				status = "okay";
			};
			usb3-0 {/* Goes to Single USB A Port */
				nvidia,usb2-companion = <2>;
				status = "okay";
			};
			usb3-1 {/* Goes to Dual USB A Port (USB 2 comes from Hub)*/
				nvidia,usb2-companion = <1>;
				status = "okay";
			};
			usb3-2 {/* Goes to Dual USB A Port (USB 2 comes from Hub)*/
				nvidia,usb2-companion = <1>;
				status = "okay";
			};
		};
	};

	tegra_xudc: xudc@3550000 {
		status = "okay";
		phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>;
		phy-names = "usb2-0";
		nvidia,xusb-padctl = <&xusb_padctl>;
	};

	tegra_xhci: xhci@3610000 {
		status = "okay";
		phys = <&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-0}>,
			<&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-1}>,
			<&{/xusb_padctl@3520000/pads/usb2/lanes/usb2-2}>,
			<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-0}>,
			<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-1}>,
			<&{/xusb_padctl@3520000/pads/usb3/lanes/usb3-2}>;
		phy-names = "usb2-0", "usb2-1", "usb2-2", "usb3-0", "usb3-1", "usb3-2";
		nvidia,xusb-padctl = <&xusb_padctl>;
	};

	// i2c@c240000{
	// 	status = "okay";
	// 	fusb301@25 {
	// 		compatible = "onsemi,fusb301";
	// 		reg = <0x25>;
	// 		status = "okay";
	// 		#address-cells = <1>;
	// 		#size-cells = <0>;
	// 		interrupt-parent = <&tegra_main_gpio>;
	// 		interrupts = <TEGRA234_MAIN_GPIO(Z, 1) IRQ_TYPE_LEVEL_LOW>;
	// 		connector@0 {
	// 			port@0 {
	// 				fusb_p0: endpoint {
	// 					remote-endpoint = <&typec_p0>;
	// 				};
	// 			};
	// 		};
	// 	};
	// };
	spi@3210000{ /* SPI1 in 40 pin conn */
		status = "okay";
		spi@0 { /* chip select 0 */
			compatible = "tegra-spidev";
			reg = <0x0>;
			spi-max-frequency = <50000000>;
			controller-data {
				nvidia,enable-hw-based-cs;
				nvidia,rx-clk-tap-delay = <0x10>;
				nvidia,tx-clk-tap-delay = <0x0>;
			};
		};
		spi@1 { /* chip select 1 */
			compatible = "tegra-spidev";
			reg = <0x1>;
			spi-max-frequency = <50000000>;
			controller-data {
				nvidia,enable-hw-based-cs;
				nvidia,rx-clk-tap-delay = <0x10>;
				nvidia,tx-clk-tap-delay = <0x0>;
			};
		};
	};

	spi@3230000{ /* SPI3 in 40 pin conn */
		status = "okay";
		spi@0 { /* chip select 0 */
			compatible = "tegra-spidev";
			reg = <0x0>;
			spi-max-frequency = <50000000>;
			controller-data {
				nvidia,enable-hw-based-cs;
				nvidia,rx-clk-tap-delay = <0x10>;
				nvidia,tx-clk-tap-delay = <0x0>;
			};
		};
		spi@1 { /* chips select 1 */
			compatible = "tegra-spidev";
			reg = <0x1>;
			spi-max-frequency = <50000000>;
			controller-data {
				nvidia,enable-hw-based-cs;
				nvidia,rx-clk-tap-delay = <0x10>;
				nvidia,tx-clk-tap-delay = <0x0>;
			};
		};
	};

	serial@3100000 {/* UARTA, for 40 pin header */
		status = "okay";
	};

	mttcan@c310000 {
		status = "okay";
	};

	serial@3140000 {
		/* UARTE, Goes to M2.E and also some of the pins to bootstrap */
		status = "okay";
	};

	serial@31d0000 {/* UARTI - SBSA */
		status = "okay";
	};

	tachometer@39c0000 {
		status = "okay";
		upper-threshold = <0xfffff>;
		lower-threshold = <0x0>;
	};

	pwm@3280000 {/* PWM1 40pin header, pin 15 */
		status = "okay";
	};

	pwm@32a0000 {/* PWM3 - FAN */
		status = "okay";
	};

	pwm@c340000 { /* PWM4 - OVR */
		status = "disabled";
	};

	pwm@32c0000 {/* PWM5 40 pin header, pin 33 */
		status = "okay";
	};

	pwm@32d0000 {/* PWM6 OVR */
		status = "disabled";
	};

	bluedroid_pm {
		status = "disabled";
	};

	display@13800000 {
		status = "okay";
		//os_gpio_hotplug_a = <&tegra_main_gpio TEGRA234_MAIN_GPIO(M, 0) GPIO_ACTIVE_HIGH>;
	};

	// tegra-capture-vi  {
	// 	ports {
	// 		port@0 {
	// 			endpoint {
	// 				port-index = <1>;
	// 			};
	// 		};
	// 	};
	// };

	// host1x@13e00000 {
	// 	nvcsi@15a00000 {
	// 		csi_chan0 {
	// 			ports {
	// 				port@0 {
	// 					endpoint@0 {
	// 						port-index = <1>;
	// 					};
	// 				};
	// 			};
	// 		};
	// 	};
	// };

	i2c@3180000{
		i2c@0 {
			rbpcv2_imx219_a@10 {
				mode0 {
					tegra_sinterface = "serial_a";
					lane_polarity = "6";
				};
				mode1 {
					tegra_sinterface = "serial_a";
					lane_polarity = "6";
				};
				mode2 {
					tegra_sinterface = "serial_a";
					lane_polarity = "6";
				};
				mode3 {
					tegra_sinterface = "serial_a";
					lane_polarity = "6";
				};
				mode4 {
					tegra_sinterface = "serial_a";
					lane_polarity = "6";
				};
				ports {
					port@0 {
						endpoint {
							port-index = <1>;
						};
					};
				};
			};

	// 		rbpcv3_imx477_a@1a {
	// 			mode0 {
	// 				tegra_sinterface = "serial_b";
	// 				lane_polarity = "6";
	// 			};
	// 			mode1 {
	// 				tegra_sinterface = "serial_b";
	// 				lane_polarity = "6";
	// 			};
	// 			ports {
	// 				port@0 {
	// 					endpoint {
	// 						port-index = <1>;
	// 					};
	// 				};
	// 			};
	//		};
		};
		i2c@1 {
			rbpcv2_imx219_b@10 {
				mode0 {
					tegra_sinterface = "serial_b";
					lane_polarity = "6";
				};
				mode1 {
					tegra_sinterface = "serial_b";
					lane_polarity = "6";
				};
				mode2 {
					tegra_sinterface = "serial_b";
					lane_polarity = "6";
				};
				mode3 {
					tegra_sinterface = "serial_b";
					lane_polarity = "6";
				};
				mode4 {
					tegra_sinterface = "serial_b";
					lane_polarity = "6";
				};
				ports {
					port@0 {
						endpoint {
							port-index = <1>;
						};
					};
				};
			};
		};
		i2c@2 {
			rbpcv2_imx219_c@10 {
				mode0 {
					tegra_sinterface = "serial_c";
					lane_polarity = "0";
				};
				mode1 {
					tegra_sinterface = "serial_c";
					lane_polarity = "0";
				};
				mode2 {
					tegra_sinterface = "serial_c";
					lane_polarity = "0";
				};
				mode3 {
					tegra_sinterface = "serial_c";
					lane_polarity = "0";
				};
				mode4 {
					tegra_sinterface = "serial_c";
					lane_polarity = "0";
				};
				ports {
					port@0 {
						endpoint {
							port-index = <1>;
						};
					};
				};
			};
		};
		i2c@3 {
			rbpcv2_imx219_c@10 {
				mode0 {
					tegra_sinterface = "serial_d";
					lane_polarity = "0";
				};
				mode1 {
					tegra_sinterface = "serial_d";
					lane_polarity = "0";
				};
				mode2 {
					tegra_sinterface = "serial_d";
					lane_polarity = "0";
				};
				mode3 {
					tegra_sinterface = "serial_d";
					lane_polarity = "0";
				};
				mode4 {
					tegra_sinterface = "serial_d";
					lane_polarity = "0";
				};
				ports {
					port@0 {
						endpoint {
							port-index = <1>;
						};
					};
				};
			};
		};
	};
};

It looks like it might be a GPIO issue with the Power enable of the IMX219. It requires the GPIO to be a power enable signal.

On boot I see a brief high signal on the GPIO. When I run “v4l2-compliance -d /dev/video0” I get no high signal.

But when I run “v4l2-ctl -d /dev/video0 --stream-mmap” I get a high signal.

jetson@orin-nx:~$ v4l2-ctl -d /dev/video0 --stream-mmap
[  371.659351] bwmgr API not supported
[  391.107315] bwmgr API not supported
[  391.243316] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[  391.290488] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[  391.337689] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072
[  391.384885] tegra-camrtc-capture-vi tegra-capture-vi: corr_err: discarding frame 0, flags: 0, err_data 131072