I2C for 4 MIPI CSI cameras with custom carrier board

I am currently working on the design of a custom carrier board for a Jetson Orin NX module. My idea is to implement 4x CSI 2-lane cameras connectors.

Regarding a previous custom CB for a Xavier NX module, I used an I2C mux IC to control two cameras with the same address that was controlled by a digital pin. However, this time I’d need two digital I/O pins and I’ve seen the pin usage has changed in the Orin Pin descrition excel file.

Is there any software supported I2C mux controlled by I2C command? (Just like the TCA9548A mentioned on the Jetson Nano, Jetson TX2 NX, and Jetson Xavier NX Camera Module Hardware design guide)

Thanks in advance.

hello JLGr,

it’s using cam_i2cmux.
please refer to reference camera drivers for implementation.
for example,

Hi JerryChang,

Thank you for the reply. I’ve been having a look at the camera driver example and other files.

I assume I should create a custom driver by modifing the mux-gpios property adding a second GPIO to the list, and create i2c@2 and i2c@3 subnodes. It should work as stated in $public_sources/kernel_src/kernel/kernel-5.10/Documentation/devicetree/bindings/i2c/i2c-mux-gpio.txt :

Whenever an access is made to a device on a child bus, the value set in the relevant node's reg property will be output using the list of GPIOs, the first in the list holding the least-significant value.

That would let me use a 1:4 I2C mux using a 2 bit mux_selector signal

I also assume that, as far as there’s no specific PWDN pin for the cameras #3 and #4, they can share this signal with the “main” cameras #1 and #2 or two additional GPIOs might be assigned as CAM2_PWDN and CAM3_PWDN in the camera driver.

Am I missing something? By the way, what’s the purpose of, for example, $public_sources/kernel_src/hardware/nvidia/platform/t23x/p3768/kernel-dts/tegra234-p3767-camera-imx477-dual.dts dt overlay file? Will a custom overlay file be required for a four cameras implementation?

Once again, thanks for your help.

hello JLGr,

you may see-also Topic 192486 for using Cam I2c MUX,
device tree overlay files, or, *.dtbo were used to overwrite device tree settings dynamically. it means you can do this without re-flash the target. you may also check developer guide, Adding Support for Custom Hardware for reference.

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