concord: configure camera sensor using jetson-io

Add camera sensor overlay for auto detection
and selection using jetson-io tool.

Sensor enabled in this gerrit:
IMX274
IMX318
E3333
IMX185

Bug 4191790

Change-Id: I6b5aba39828d5bc3ffba216edc49370781def9c8
Signed-off-by: Ankur Pawar <ankurp@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/c/device/hardware/nvidia/t23x-public-dts/+/2902663
(cherry picked from commit 11e6f4528d)
Reviewed-on: https://git-master.nvidia.com/r/c/device/hardware/nvidia/t23x-public-dts/+/2971627
Reviewed-by: Praveen AC <pac@nvidia.com>
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>
GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com>
This commit is contained in:
Ankur Pawar
2023-05-12 07:01:26 +00:00
committed by mobile promotions
parent 67aec33442
commit 7ab4f383f1
11 changed files with 2147 additions and 51 deletions

View File

@@ -37,6 +37,10 @@ dtbo-y += tegra234-p3767-0000+p3768-0000-csi.dtbo
dtbo-y += tegra234-p3740-0002+p3701-0008-hdr20.dtbo dtbo-y += tegra234-p3740-0002+p3701-0008-hdr20.dtbo
dtbo-y += tegra234-p3740-0002+p3701-0008-m2ke.dtbo dtbo-y += tegra234-p3740-0002+p3701-0008-m2ke.dtbo
dtbo-y += tegra234-p3740-0002+p3701-0008-m2kb.dtbo dtbo-y += tegra234-p3740-0002+p3701-0008-m2kb.dtbo
dtbo-y += tegra234-p3737-camera-dual-imx274-overlay.dtbo
dtbo-y += tegra234-p3737-camera-e3331-overlay.dtbo
dtbo-y += tegra234-p3737-camera-e3333-overlay.dtbo
dtbo-y += tegra234-p3737-camera-imx185-overlay.dtbo
ifneq ($(dtb-y),) ifneq ($(dtb-y),)
dtb-y := $(addprefix $(makefile-path)/,$(dtb-y)) dtb-y := $(addprefix $(makefile-path)/,$(dtb-y))

View File

@@ -15,7 +15,7 @@
#include "tegra234-p3737-0000-camera-imx274-dual.dtsi" #include "tegra234-p3737-0000-camera-imx274-dual.dtsi"
#include "tegra234-p3701-0000.dtsi" #include "tegra234-p3701-0000.dtsi"
#include "tegra234-dcb-p3737-0000-p3701-0000.dtsi" #include "tegra234-dcb-p3737-0000-p3701-0000.dtsi"
#include "tegra234-p3737-camera-modules.dtsi"
/ { / {
compatible = "nvidia,p3737-0000+p3701-0000"; compatible = "nvidia,p3737-0000+p3701-0000";

View File

@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
// Copyright (c) 2017-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. // Copyright (c) 2017-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#include "tegra234-camera-imx185-a00.dtsi" #include "tegra234-camera-imx185-a00.dtsi"
#include <dt-bindings/clock/tegra234-clock.h> #include <dt-bindings/clock/tegra234-clock.h>
@@ -58,27 +58,4 @@
}; };
}; };
}; };
fragment-camera-imx185@0 {
target-path = "/";
__overlay__ {
eeprom-manager {
bus@1 {
i2c-bus = <&cam_i2c>;
eeprom@0 {
slave-address = <0x54>;
label = "sensor0";
};
eeprom@1 {
slave-address = <0x57>;
label = "sensor1";
};
eeprom@2 {
slave-address = <0x52>;
label = "sensor2";
};
};
};
};
};
}; };

View File

@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
// Copyright (c) 2017-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. // Copyright (c) 2017-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#include "tegra234-camera-imx274-dual.dtsi" #include "tegra234-camera-imx274-dual.dtsi"
#include <dt-bindings/clock/tegra234-clock.h> #include <dt-bindings/clock/tegra234-clock.h>
@@ -65,27 +65,4 @@
}; };
}; };
}; };
fragment-camera-dual-imx274@1 {
target-path = "/";
__overlay__ {
eeprom-manager {
bus@1 {
i2c-bus = <&cam_i2c>;
eeprom@0 {
slave-address = <0x54>;
label = "sensor0";
};
eeprom@1 {
slave-address = <0x57>;
label = "sensor1";
};
eeprom@2 {
slave-address = <0x52>;
label = "sensor2";
};
};
};
};
};
}; };

View File

@@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
// Copyright (c) 2018-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. // Copyright (c) 2018-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#include "tegra234-camera-imx390-a00.dtsi" #include "tegra234-camera-imx390-a00.dtsi"
#include <dt-bindings/clock/tegra234-clock.h> #include <dt-bindings/clock/tegra234-clock.h>
@@ -9,7 +9,7 @@
/* camera control gpio definitions */ /* camera control gpio definitions */
/ { / {
fragment-camera-imx318@0 { fragment-camera-imx390@0 {
target-path = "/"; target-path = "/";
__overlay__ { __overlay__ {
bus@0{ bus@0{

View File

@@ -109,6 +109,21 @@
label = "cvb"; label = "cvb";
}; };
}; };
bus@1 {
i2c-bus = <&cam_i2c>;
eeprom@0 {
slave-address = <0x54>;
label = "sensor0";
};
eeprom@1 {
slave-address = <0x57>;
label = "sensor1";
};
eeprom@2 {
slave-address = <0x52>;
label = "sensor2";
};
};
}; };
}; };
}; };

View File

@@ -0,0 +1,342 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Jetson Device-tree overlay for Camera Dual-IMX274 on t23x platforms
*
* Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
*
*/
/dts-v1/;
/plugin/;
/ {
overlay-name = "Jetson Camera Dual-IMX274";
jetson-header-name = "Jetson AGX CSI Connector";
compatible = "nvidia,p3737-0000+p3701-0000", "nvidia,p3737-0000+p3701-0004", "nvidia,p3737-0000+p3701-0005";
fragment@0 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/imx274_a@1a";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@1 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/imx274_a@1a/ports/port@0/endpoint";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&liimx274_csi_in0>;
};
};
fragment@2 {
target-path = "/tegra-camera-platform/modules/module0";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "imx274_bottom_A6V26";
position = "bottom";
orientation = "0";
};
};
fragment@3 {
target-path = "/tegra-camera-platform/modules/module0/drivernode0";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "imx274 30-001a";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9546@70/i2c@0/imx274_a@1a";
};
};
fragment@4 {
target-path = "/tegra-camera-platform/modules/module0/drivernode1";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/bus@0/lens_imx274@A6V26/";
};
};
fragment@5 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@1/imx274_c@1a";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@6 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@1/imx274_c@1a/ports/port@0/endpoint";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&liimx274_csi_in1>;
};
};
fragment@7 {
target-path = "/tegra-camera-platform/modules/module1";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "imx274_top_A6V26";
position = "top";
orientation = "0";
};
};
fragment@8 {
target-path = "/tegra-camera-platform/modules/module1/drivernode0";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "imx274 31-001a";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9546@70/i2c@1/imx274_c@1a";
};
};
fragment@9 {
target-path = "/tegra-camera-platform/modules/module1/drivernode1";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/bus@0/lens_imx274@A6V26/";
};
};
/* Enable VI ports - capture_vi_base, */
fragment@10 {
target-path = "/tegra-capture-vi";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
num-channels=<2>;
};
};
fragment@11 {
target-path = "/tegra-capture-vi/ports/port@0";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@12 {
target-path = "/tegra-capture-vi/ports/port@1";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@13 {
target-path = "/tegra-capture-vi/ports/port@0/endpoint";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&liimx274_csi_out0>;
};
};
fragment@14 {
target-path = "/tegra-capture-vi/ports/port@1/endpoint";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&liimx274_csi_out1>;
};
};
/* Enable CSI ports */
fragment@15 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
num-channels=<2>;
};
};
fragment@16 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@17 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@0";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@18 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@0/endpoint@0";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&liimx274_imx274_out0>;
};
};
fragment@19 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@1";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@20 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@1/endpoint@1";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&liimx274_vi_in0>;
};
};
fragment@21 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@22 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1/ports/port@0";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@23 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1/ports/port@0/endpoint@2";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <2>;
bus-width = <4>;
remote-endpoint = <&liimx274_imx274_out1>;
};
};
fragment@24 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1/ports/port@1";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@25 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1/ports/port@1/endpoint@3";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&liimx274_vi_in1>;
};
};
/* tegra-camera-platform settings */
fragment@26 {
target-path = "/tegra-camera-platform";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
num_csi_lanes = <8>;
max_lane_speed = <1500000>;
min_bits_per_pixel = <10>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
};
};
/* pca9646 i2c mux */
fragment@27 {
target-path = "/bus@0/i2c@3180000/tca9546@70";
board_config {
ids = "LPRD-dual-imx274-002";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
};

View File

@@ -0,0 +1,239 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Jetson Device-tree overlay for Camera E3331 on t23x platforms
*
* Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
*
*/
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/tegra234-gpio.h>
#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3)
#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6)
#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1)
#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0)
/ {
overlay-name = "Jetson Camera E3331 module";
jetson-header-name = "Jetson AGX CSI Connector";
compatible = "nvidia,p3737-0000+p3701-0000", "nvidia,p3737-0000+p3701-0004", "nvidia,p3737-0000+p3701-0005";
/* E3331 camera board */
/* VI number of channels */
fragment@0 {
target-path = "/tegra-capture-vi";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
num-channels=<1>; /* TODO change to 3 */
};
};
/* CSI number of channels */
fragment@1 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
num-channels=<1>; /* TODO change to 3 */
};
};
/* tegra-camera-platform settings */
fragment@2 {
target-path = "/tegra-camera-platform";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
num_csi_lanes = <3>;
max_lane_speed = <1500000>;
min_bits_per_pixel = <10>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
max_pixel_rate = <160000>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
};
};
/* Camera 0: Module */
fragment@3 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/imx318_a@10";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@4 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/imx318_a@10/ports/port@0/endpoint";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3331_csi_in0>;
};
};
fragment@5 {
target-path = "/tegra-camera-platform/modules/module0";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "e3331_rear_22N02A";
position = "rear";
orientation = "1";
};
};
fragment@6 {
target-path = "/tegra-camera-platform/modules/module0/drivernode0";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "imx318 30-0010";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9546@70/i2c@0/imx318_a@10";
};
};
/* Camera 0: VI */
fragment@7 {
target-path = "/tegra-capture-vi/ports/port@0";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@8 {
target-path = "/tegra-capture-vi/ports/port@0/endpoint";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <0>;
bus-width = <3>;
remote-endpoint = <&e3331_csi_out0>;
};
};
/* Camera 0: CSI */
fragment@9 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@10 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@0";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@11 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@0/endpoint@0";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <0>;
bus-width = <3>;
remote-endpoint = <&e3331_imx318_out0>;
};
};
fragment@12 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@1";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@13 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@1/endpoint@1";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3331_vi_in0>;
};
};
/* GPIO */
fragment@14 {
target-path = "/bus@0/gpio@2200000";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
camera-control-input {
status = "disabled";
};
camera-control-output-low {
gpio-hog;
gpios = <CAM0_RST_L 0>;
/*<CAM1_RST_L 0> <CAM2_RST_L 0>*/
label = "cam0-rst";
/*"cam1-rst", "cam2-rst";*/
output-low;
status = "okay";
};
camera-control-output-high {
status = "disabled";
};
};
};
fragment@15 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/imx318_a@10/ports/port@0/endpoint";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3331_csi_in0>;
};
};
fragment@16 {
target-path = "/bus@0/i2c@3180000/tca9546@70";
board_config {
ids = "3331-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
};

View File

@@ -0,0 +1,967 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Jetson Device-tree overlay for Camera E3333 module on t23x platforms
*
* Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
*
*/
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/tegra234-gpio.h>
#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3)
#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6)
#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1)
#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0)
/ {
overlay-name = "Jetson Camera E3333 module";
jetson-header-name = "Jetson AGX CSI Connector";
compatible = "nvidia,p3737-0000+p3701-0000", "nvidia,p3737-0000+p3701-0004", "nvidia,p3737-0000+p3701-0005";
/* Use either odm-data or eeprom-ids for sensor detection */
/* E3333 camera board */
/* VI number of channels */
fragment@0 {
target-path = "/tegra-capture-vi";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
num-channels=<6>;
};
};
/* CSI number of channels */
fragment@1 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
num-channels=<6>;
};
};
/* tegra-camera-platform settings */
fragment@2 {
target-path = "/tegra-camera-platform";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
num_csi_lanes = <12>;
max_lane_speed = <1500000>;
min_bits_per_pixel = <10>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
max_pixel_rate = <200000>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
};
};
/* TCA6408 */
fragment@3 {
target-path = "/bus@0/i2c@3180000/tca6408@21";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
/* TCA9548 */
fragment@4 {
target-path = "/bus@0/i2c@3180000/tca9548@77";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
/* Camera 0: Module */
fragment@5 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@0/ov5693_a@36";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@6 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@0/ov5693_a@36/ports/port@0/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_csi_in0>;
};
};
fragment@7 {
target-path = "/tegra-camera-platform/modules/module0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "e3333_bottomleft_P5V27C";
position = "bottomleft";
orientation = "1";
};
};
fragment@8 {
target-path = "/tegra-camera-platform/modules/module0/drivernode0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "ov5693 30-0036";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9548@77/i2c@0/ov5693_a@36";
};
};
fragment@9 {
target-path = "/tegra-camera-platform/modules/module0/drivernode1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
};
};
/* Camera 0: VI */
fragment@10 {
target-path = "/tegra-capture-vi/ports/port@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@11 {
target-path = "/tegra-capture-vi/ports/port@0/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <0>;
bus-width = <2>;
remote-endpoint = <&e3333_csi_out0>;
};
};
/* Camera 0: CSI */
fragment@12 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@13 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@14 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@0/endpoint@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <0>;
bus-width = <2>;
remote-endpoint = <&e3333_ov5693_out0>;
};
};
fragment@15 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@16 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@1/endpoint@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_vi_in0>;
};
};
/* Camera 1: Module */
fragment@17 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@1/ov5693_b@36";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@18 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@1/ov5693_b@36/ports/port@0/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_csi_in1>;
};
};
fragment@19 {
target-path = "/tegra-camera-platform/modules/module1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "e3333_centerleft_P5V27C";
position = "centerleft";
orientation = "1";
};
};
fragment@20 {
target-path = "/tegra-camera-platform/modules/module1/drivernode0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "ov5693 31-0036";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9548@77/i2c@1/ov5693_b@36";
};
};
fragment@21 {
target-path = "/tegra-camera-platform/modules/module1/drivernode1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
};
};
/* Camera 1: VI */
fragment@22 {
target-path = "/tegra-capture-vi/ports/port@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@23 {
target-path = "/tegra-capture-vi/ports/port@1/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <1>;
bus-width = <2>;
remote-endpoint = <&e3333_csi_out1>;
};
};
/* Camera 1: CSI */
fragment@24 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@25 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1/ports/port@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@26 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1/ports/port@0/endpoint@2";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <1>;
bus-width = <2>;
remote-endpoint = <&e3333_ov5693_out1>;
};
};
fragment@27 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1/ports/port@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@28 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@1/ports/port@1/endpoint@3";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_vi_in1>;
};
};
/* Camera 2: Module */
fragment@29 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@2/ov5693_c@36";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@30 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@2/ov5693_c@36/ports/port@0/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_csi_in2>;
};
};
fragment@31 {
target-path = "/tegra-camera-platform/modules/module2";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "e3333_centerright_P5V27C";
position = "centerright";
orientation = "1";
};
};
fragment@32 {
target-path = "/tegra-camera-platform/modules/module2/drivernode0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "ov5693 32-0036";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9548@77/i2c@2/ov5693_c@36";
};
};
fragment@33 {
target-path = "/tegra-camera-platform/modules/module2/drivernode1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
};
};
/* Camera 2: VI */
fragment@34 {
target-path = "/tegra-capture-vi/ports/port@2";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@35 {
target-path = "/tegra-capture-vi/ports/port@2/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <2>;
bus-width = <2>;
remote-endpoint = <&e3333_csi_out2>;
};
};
/* Camera 2: CSI */
fragment@36 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@2";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@37 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@2/ports/port@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@38 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@2/ports/port@0/endpoint@4";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <2>;
bus-width = <2>;
remote-endpoint = <&e3333_ov5693_out2>;
};
};
fragment@39 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@2/ports/port@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@40 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@2/ports/port@1/endpoint@5";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_vi_in2>;
};
};
/* Camera 3: Module */
fragment@41 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@3/ov5693_d@36";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@42 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@3/ov5693_d@36/ports/port@0/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_csi_in3>;
};
};
fragment@43 {
target-path = "/tegra-camera-platform/modules/module3";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "e3333_topleft_P5V27C";
position = "topleft";
orientation = "1";
};
};
fragment@44 {
target-path = "/tegra-camera-platform/modules/module3/drivernode0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "ov5693 33-0036";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9548@77/i2c@3/ov5693_d@36";
};
};
fragment@45 {
target-path = "/tegra-camera-platform/modules/module3/drivernode1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
};
};
/* Camera 3: VI */
fragment@46 {
target-path = "/tegra-capture-vi/ports/port@3";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@47 {
target-path = "/tegra-capture-vi/ports/port@3/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <3>;
bus-width = <2>;
remote-endpoint = <&e3333_csi_out3>;
};
};
/* Camera 3: CSI */
fragment@48 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@3";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@49 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@3/ports/port@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@50 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@3/ports/port@0/endpoint@6";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <3>;
bus-width = <2>;
remote-endpoint = <&e3333_ov5693_out3>;
};
};
fragment@51 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@3/ports/port@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@52 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@3/ports/port@1/endpoint@7";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_vi_in3>;
};
};
/* Camera 4: Module */
fragment@53 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@4/ov5693_e@36";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@54 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@4/ov5693_e@36/ports/port@0/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_csi_in4>;
};
};
fragment@55 {
target-path = "/tegra-camera-platform/modules/module4";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "e3333_bottomright_P5V27C";
position = "bottomright";
orientation = "1";
};
};
fragment@56 {
target-path = "/tegra-camera-platform/modules/module4/drivernode0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "ov5693 34-0036";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9548@77/i2c@4/ov5693_e@36";
};
};
fragment@57 {
target-path = "/tegra-camera-platform/modules/module4/drivernode1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
};
};
/* Camera 4: VI */
fragment@58 {
target-path = "/tegra-capture-vi/ports/port@4";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@59 {
target-path = "/tegra-capture-vi/ports/port@4/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <4>;
bus-width = <2>;
remote-endpoint = <&e3333_csi_out4>;
};
};
/* Camera 4: CSI */
fragment@60 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@4";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@61 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@4/ports/port@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@62 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@4/ports/port@0/endpoint@8";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <4>;
bus-width = <2>;
remote-endpoint = <&e3333_ov5693_out4>;
};
};
fragment@63 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@4/ports/port@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@64 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@4/ports/port@1/endpoint@9";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_vi_in4>;
};
};
/* Camera 5: Module */
fragment@65 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@5/ov5693_g@36";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@66 {
target-path = "/bus@0/i2c@3180000/tca9548@77/i2c@5/ov5693_g@36/ports/port@0/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_csi_in5>;
};
};
fragment@67 {
target-path = "/tegra-camera-platform/modules/module5";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "e3333_topright_P5V27C";
position = "topright";
orientation = "1";
};
};
fragment@68 {
target-path = "/tegra-camera-platform/modules/module5/drivernode0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "ov5693 35-0036";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9548@77/i2c@5/ov5693_g@36";
};
};
fragment@69 {
target-path = "/tegra-camera-platform/modules/module5/drivernode1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
proc-device-tree = "/proc/device-tree/e3333_lens_ov5693@P5V27C/";
};
};
/* Camera 5: VI */
fragment@70 {
target-path = "/tegra-capture-vi/ports/port@5";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@71 {
target-path = "/tegra-capture-vi/ports/port@5/endpoint";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <5>;
bus-width = <2>;
remote-endpoint = <&e3333_csi_out5>;
};
};
/* Camera 5: CSI */
fragment@72 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@5";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@73 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@5/ports/port@0";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@74 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@5/ports/port@0/endpoint@10";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <6>;
bus-width = <2>;
remote-endpoint = <&e3333_ov5693_out5>;
};
};
fragment@75 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@5/ports/port@1";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@76 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@5/ports/port@1/endpoint@11";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&e3333_vi_in5>;
};
};
/* GPIO */
fragment@77 {
target-path = "/bus@0/gpio@2200000";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
camera-control-output-low {
gpio-hog;
gpios = <CAM0_RST_L 0 CAM0_PWDN 0
CAM1_RST_L 0 CAM1_PWDN 0>;
label = "cam0-rst", "cam0-pwdn",
"cam1-rst", "cam1-pwdn";
output-low;
status = "okay";
};
};
};
/* TCA6408 default */
fragment@78 {
target-path = "/bus@0/i2c@3180000/tca6408@21";
board_config {
ids = "3333-*";
sw-modules = "kernel";
};
__overlay__ {
tca6408_21_outlow {
gpio-hog;
gpios = <0 0 1 0 2 0 3 0 4 0
5 0 6 0 7 0>;
output-low;
label = "tca6408_21_outlow_0",
"tca6408_21_outlow_1",
"tca6408_21_outlow_2",
"tca6408_21_outlow_3",
"tca6408_21_outlow_4",
"tca6408_21_outlow_5",
"tca6408_21_outlow_6",
"tca6408_21_outlow_7";
status = "okay";
};
};
};
};

View File

@@ -0,0 +1,224 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Jetson Device-tree overlay for Camera IMX185 on t23x platforms
*
* Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
*
*/
/dts-v1/;
/plugin/;
/ {
overlay-name = "Jetson Camera IMX185";
jetson-header-name = "Jetson AGX CSI Connector";
compatible = "nvidia,p3737-0000+p3701-0000", "nvidia,p3737-0000+p3701-0004", "nvidia,p3737-0000+p3701-0005";
fragment@1 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/imx185_a@1a";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@2 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/imx185_a@1a/ports/port@0/endpoint";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&liimx185_csi_in0>;
};
};
fragment@3 {
target-path = "/tegra-camera-platform/modules/module0";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
badge = "imx185_bottom_liimx185";
position = "bottom";
orientation = "0";
};
};
fragment@4 {
target-path = "/tegra-camera-platform/modules/module0/drivernode0";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_sensor";
devname = "imx185 30-001a";
proc-device-tree = "/proc/device-tree/bus@0/i2c@3180000/tca9546@70/i2c@0/imx185_a@1a";
};
};
fragment@5 {
target-path = "/tegra-camera-platform/modules/module0/drivernode1";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
pcl_id = "v4l2_lens";
};
};
/* Enable VI ports */
fragment@6 {
target-path = "/tegra-capture-vi";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
num-channels=<1>;
};
};
fragment@7 {
target-path = "/tegra-capture-vi/ports/port@0";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@8 {
target-path = "/tegra-capture-vi/ports/port@0/endpoint";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&liimx185_csi_out0>;
};
};
/* Enable CSI ports */
fragment@9 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
num-channels=<1>;
};
};
fragment@10 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@11 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@0";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@12 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@0/endpoint@0";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
port-index = <0>;
bus-width = <4>;
remote-endpoint = <&liimx185_imx185_out0>;
};
};
fragment@13 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@1";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@14 {
target-path = "/bus@0/host1x@13e00000/nvcsi@15a00000/channel@0/ports/port@1/endpoint@1";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&liimx185_vi_in0>;
};
};
/* tegra-camera-platform settings */
fragment@15 {
target-path = "/tegra-camera-platform";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
num_csi_lanes = <4>;
max_lane_speed = <1500000>;
min_bits_per_pixel = <10>;
vi_peak_byte_per_pixel = <2>;
vi_bw_margin_pct = <25>;
isp_peak_byte_per_pixel = <5>;
isp_bw_margin_pct = <25>;
};
};
/* pca9646 i2c mux */
fragment@30 {
target-path = "/bus@0/i2c@3180000/tca9546@70";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
/* GPIO expander */
fragment@16 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/pca9570_a@24";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
};
};
fragment@17 {
target-path = "/bus@0/i2c@3180000/tca9546@70/i2c@0/imx185_a@1a/ports/port@0/endpoint";
board_config {
ids = "LPRD-002001", "LPRD-002", "LPRD-001";
sw-modules = "kernel";
};
__overlay__ {
status = "okay";
remote-endpoint = <&liimx185_csi_in0>;
};
};
};

View File

@@ -0,0 +1,351 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
*/
#include "tegra234-p3737-0000-camera-e3331-a00.dtsi"
#include "tegra234-p3737-0000-camera-e3333-a00.dtsi"
#include "tegra234-p3737-0000-camera-imx185-a00.dtsi"
#include "tegra234-p3737-0000-camera-imx390-a00.dtsi"
#include "tegra234-p3737-0000-camera-imx274-dual.dtsi"
#define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3)
#define CAM0_PWDN TEGRA234_MAIN_GPIO(H, 6)
#define CAM1_RST_L TEGRA234_MAIN_GPIO(AC, 1)
#define CAM1_PWDN TEGRA234_MAIN_GPIO(AC, 0)
/ {
fragment-camera-module@0 {
target-path = "/";
__overlay__ {
/* all cameras are disabled by default */
capture_vi_base: tegra-capture-vi {
ports {
vi_port0: port@0 {
status = "disabled";
vi_in0: endpoint {
vc-id = <0>;
status = "disabled";
};
};
vi_port1: port@1 {
status = "disabled";
vi_in1: endpoint {
vc-id = <0>;
status = "disabled";
};
};
vi_port2: port@2 {
status = "disabled";
vi_in2: endpoint {
vc-id = <0>;
status = "disabled";
};
};
vi_port3: port@3 {
status = "disabled";
vi_in3: endpoint {
vc-id = <0>;
status = "disabled";
};
};
vi_port4: port@4 {
status = "disabled";
vi_in4: endpoint {
vc-id = <0>;
status = "disabled";
};
};
vi_port5: port@5 {
status = "disabled";
vi_in5: endpoint {
vc-id = <0>;
status = "disabled";
};
};
};
};
tcp: tegra-camera-platform {
compatible = "nvidia, tegra-camera-platform";
/**
* tpg_max_iso = <>;
* Max iso bw for 6 streams of tpg
* streams * nvcsi_freq * PG_bitrate / RG10 * BPP
* 6 * 102Mhz * 32 bits/ 10 bits * 2 Bps
* = 3916.8 MBps
*/
tpg_max_iso = <3916800>;
modules {
cam_module0: module0 {
status = "disabled";
cam_module0_drivernode0: drivernode0 {
status = "disabled";
};
cam_module0_drivernode1: drivernode1 {
status = "disabled";
pcl_id = "v4l2_lens";
};
};
cam_module1: module1 {
status = "disabled";
cam_module1_drivernode0: drivernode0 {
status = "disabled";
};
cam_module1_drivernode1: drivernode1 {
status = "disabled";
pcl_id = "v4l2_lens";
};
};
cam_module2: module2 {
status = "disabled";
cam_module2_drivernode0: drivernode0 {
status = "disabled";
};
cam_module2_drivernode1: drivernode1 {
status = "disabled";
pcl_id = "v4l2_lens";
};
};
cam_module3: module3 {
status = "disabled";
cam_module3_drivernode0: drivernode0 {
status = "disabled";
};
cam_module3_drivernode1: drivernode1 {
status = "disabled";
pcl_id = "v4l2_lens";
};
};
cam_module4: module4 {
status = "disabled";
cam_module4_drivernode0: drivernode0 {
status = "disabled";
};
cam_module4_drivernode1: drivernode1 {
status = "disabled";
pcl_id = "v4l2_lens";
};
};
cam_module5: module5 {
status = "disabled";
cam_module5_drivernode0: drivernode0 {
status = "disabled";
};
cam_module5_drivernode1: drivernode1 {
status = "disabled";
pcl_id = "v4l2_lens";
};
};
};
};
bus@0 {
/* set camera gpio direction to output */
gpio@2200000 {
camera-control-output-low {
gpio-hog;
output-low;
gpios = <CAM0_RST_L 0 CAM0_PWDN 0
CAM1_RST_L 0 CAM1_PWDN 0>;
label = "cam0-rst", "cam0-pwdn",
"cam1-rst", "cam1-pwdn";
};
};
host1x@13e00000 {
csi_base: nvcsi@15a00000 {
num-tpg-channels = <36>;
csi_chan0: channel@0 {
status = "disabled";
ports {
csi_chan0_port0: port@0 {
status = "disabled";
csi_in0: endpoint@0 {
status = "disabled";
};
};
csi_chan0_port1: port@1 {
status = "disabled";
csi_out0: endpoint@1 {
status = "disabled";
};
};
};
};
csi_chan1: channel@1 {
status = "disabled";
ports {
csi_chan1_port0: port@0 {
status = "disabled";
csi_in1: endpoint@2 {
status = "disabled";
};
};
csi_chan1_port1: port@1 {
status = "disabled";
csi_out1: endpoint@3 {
status = "disabled";
};
};
};
};
csi_chan2: channel@2 {
status = "disabled";
ports {
csi_chan2_port0: port@0 {
status = "disabled";
csi_in2: endpoint@4 {
status = "disabled";
};
};
csi_chan2_port1: port@1 {
status = "disabled";
csi_out2: endpoint@5 {
status = "disabled";
};
};
};
};
csi_chan3: channel@3 {
status = "disabled";
ports {
csi_chan3_port0: port@0 {
status = "disabled";
csi_in3: endpoint@6 {
status = "disabled";
};
};
csi_chan3_port1: port@1 {
status = "disabled";
csi_out3: endpoint@7 {
status = "disabled";
};
};
};
};
csi_chan4: channel@4 {
status = "disabled";
ports {
csi_chan4_port0: port@0 {
status = "disabled";
csi_in4: endpoint@8 {
status = "disabled";
};
};
csi_chan4_port1: port@1 {
status = "disabled";
csi_out4: endpoint@9 {
status = "disabled";
};
};
};
};
csi_chan5: channel@5 {
status = "disabled";
ports {
csi_chan5_port0: port@0 {
status = "disabled";
csi_in5: endpoint@10 {
status = "disabled";
};
};
csi_chan5_port1: port@1 {
status = "disabled";
csi_out5: endpoint@11 {
status = "disabled";
};
};
};
};
};
};
i2c@3180000 {
e3326_cam0: ov5693_c@36 {
status = "disabled";
};
e2832_cam0: e2832@2b {
status = "disabled";
};
tca6408@21 {
status = "disabled";
};
tca9548@77 {
status = "disabled";
i2c@0 {
e3333_cam0: ov5693_a@36 {
status = "disabled";
};
};
i2c@1 {
e3333_cam1: ov5693_b@36 {
status = "disabled";
};
};
i2c@2 {
e3333_cam2: ov5693_c@36 {
status = "disabled";
};
};
i2c@3 {
e3333_cam3: ov5693_d@36 {
status = "disabled";
};
};
i2c@4 {
e3333_cam4: ov5693_e@36 {
status = "disabled";
};
};
i2c@5 {
e3333_cam5: ov5693_g@36 {
status = "disabled";
};
};
};
tca9546@70 {
status = "disabled";
i2c@0 {
pca9570_a_24: pca9570_a@24 {
status = "disabled";
};
imx274_cam0: imx274_a@1a {
status = "disabled";
};
imx185_cam0: imx185_a@1a {
status = "disabled";
};
e3331_cam0: imx318_a@10 {
status = "disable"
};
max9296_dser: max9296@48 {
status = "disabled";
};
max9295_prim: max9295_prim@62 {
status = "disabled";
};
max9295_ser0: max9295_a@40 {
status = "disabled";
};
max9295_ser1: max9295_b@60 {
status = "disabled";
};
imx390_cam0: imx390_a@1b {
status = "disabled";
};
imx390_cam1: imx390_b@1c {
status = "disabled";
};
};
i2c@1 {
imx274_cam1: imx274_c@1a {
status = "disabled";
};
};
};
};
};
};
};
};