Tegra-camera-platform, position and number of cameras

Hello,

I am creating a DT for 2 cameras drivers, The first DT created I am using 4 cameras connected, and the 4 cameras are working correctly

The second DT created for another driver, I am using 4 cameras connected, but I am only able to capture from 2 cameras using GStreamer, the error reported is:

Error generated. gstnvarguscamerasrc.cpp, execute:751 No cameras available

This is a summary of the tegra-camera-platform code configured:

   tegra-camera-platform {

        modules {
            module0 {
                badge = "cam1_port0";
                position = "front";
                orientation = "1";
                status = "okay";
                drivernode0 {
                    pcl_id = "v4l2_sensor";
                    devname = "cam1 42-0026";
                    proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@72/i2c@0/cam1@26";
                    status = "okay";
                };
            };
            module1 {
                badge = "cam1_port2";
                position = "front";
                orientation = "1";
                status = "okay";
                drivernode0 {
                    pcl_id = "v4l2_sensor";
                    devname = "cam1 43-0026";
                    proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@72/i2c@1/cam1@26";
                    status = "okay";
                };
            };
            module2 {
                orientation = "1";
                position = "rear";
                badge = "cam1_port3";
                status = "okay";
                drivernode0 {
                    proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@72/i2c@2/cam1@26";
                    devname = "cam1 40-0026";
                    pcl_id = "v4l2_sensor";
                    status = "okay";
                };
            };
            module3 {
                orientation = "1";
                position = "rear";
                badge = "cam1_port4";
                status = "okay";
                drivernode0 {
                    proc-device-tree = "/proc/device-tree/i2c@3180000/tca9546@72/i2c@3/cam1@26";
                    devname = "cam1 41-0026";
                    pcl_id = "v4l2_sensor";
                    status = "okay";
                };
            };
        };
    };

For the second camera I only have changed the badge, devname and proc-device-tree, but only 2 cameras are working, the camera of module1 and module3.

Doing some tests enabling only 2 cameras I have seen the I am able to capture from camera of module 0, changing the position parameter of module2

            module0 {
                badge = "cam1_port0";
                position = "front";
                ...
            };
            module1 {
                badge = "cam1_port2";
                position = "rear";
                ...
            };

But with this configuration I am not able to capture from module1.

Do you know why the position is affecting which camera works?

Using “bottomleft, bottomright, centerleft, centerright, topleft, and topright” for your case.

Camera position. Values supported depend on the number of cameras in the system:

  • In a two-camera system: rear and front.
  • In a three-camera system: bottom, top, and center.
  • In a six-camera system: bottomleft, bottomright, centerleft, centerright, topleft, and topright.

Hi ShaneCCC, using bottomleft , bottomright , centerleft , centerright as a position values for the camera 2, it solves the problem.

I have also replaced the position values of the camera 1 and is working correctly with this values too.

Now I am wondering why the camera 1 was working using the previous values.

Thanks ShaneCCC.