TCA9546 I2C Mux & imx219 Mipi Camera


I don’t have much experience modifying kernel drivers… I’m struggling…

We made jetson xavier nx module + custom carrier board.
I am trying to connect 4 imx219 raspberry cameras using TCA9546AD IC.

tca9546 ic detected at address 0x70 via i2cdetect

Referring to another forum, I modified the tegra194-camera-jakku-rbpcv2-imx219.dtsi file as follows.
tegra194-camera-rbpcv2-imx219.dtsi.txt (27.2 KB)

When adding the tca9546@70 node to the tegra194-camera-jakku-rbpcv2-imx219.dtsi file, the kernel build proceeded successfully.

After flashing the built kernel, the following error message occurs in the process of loading the imx219 driver.
[ 2.054624] i2c i2c-9: of_i2c: modalias failure on /cam_i2cmux/i2c@0/rbpcv2_imx219_a@10
[ 2.055283] i2c i2c-10: of_i2c: modalias failure on /cam_i2cmux/i2c@1/rbpcv2_imx219_c@10

dmesg.log.txt (63.0 KB)

Is there any additional modification to use i2c multichannel using TCA9546 IC???

please check similar discussion thread, Topic 249331 for reference, thanks

Referring to the forum you shared, I modified the node related to the TCA9546 and succeeded in connecting the camera.
thank you

But one more problem arises…
Currently, the custom carrier board has a total of 4 MIPI CSI camera ports.
Among them, CSI_A and CSI_C ports can receive video.
CSI_D, CSI_E ports do not receive video

The hardware connection configuration is as follows.
[i2c mux address] → [CSI channel] → [port-index of dts]
i2c-30 → CSI_A → port-index = <0>
i2c-31 → CSI_C → port-index = <2>
i2c-32 → CSI_D → port-index = <3>
i2c-33 → CSI_E → port-index = <4>

gst-launch-1.0 nvarguscamerasrc sensor_id=1 ! nvoverlaysink

When the command is executed, the following message is returned.

Setting pipeline to PAUSED …
Pipeline is live and does not need PREROLL…
Setting pipeline to PLAYING…
New clock: GstSystemClock
Error generated. /dvs/git/dirty/git-master_linux/multimedia/nvgstreamer/gst-nvarguscamera/gstnvarguscamerasrc.cpp, execute:725 No cameras available
Got EOS from element “pipeline0”.
Execution ended after 0:00:00.002079239
Setting pipeline to PAUSED …
Setting pipeline to READY…
Setting pipeline to NULL …
Freeing pipeline…
(Argus) Error EndOfFile: Unexpected error in reading socket (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 266)
(Argus) Error EndOfFile: Receive worker failure, notifying 1 waiting threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 340)
(Argus) Error InvalidState: Argus client is exiting with 1 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 357)
(Argus) Error EndOfFile: Receiving thread terminated with error (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadWrapper(), line 368)
(Argus) Error EndOfFile: Client thread received an error from socket (in src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 145)
(Argus) Error EndOfFile: (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)

I modified it by referring to the topic related to the settings of tegra_sinterface and port-index in the imx219 device tree, but the symptoms are the same…
Is there something wrong with the modified device tree?

custom_tegra194-camera-jakku-rbpcv2-imx219.dtsi (4.2 KB)

custom_tegra194-camera-rbpcv2-imx219.dtsi (52.1 KB)

that position property within tegra-camera-platform{} are incorrect.

please refer to developer guide, you may check Module Properties section.
since you have four camera setups in your system, please using the position property as below to assign each of them,
for example, bottomleft, bottomright, centerleft, centerright.

As specified in the property value document, it works normally after modification.
thank you jerry chang

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