diff --git a/overlay/Makefile b/overlay/Makefile index 2e3b22f..96300a7 100644 --- a/overlay/Makefile +++ b/overlay/Makefile @@ -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-m2ke.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),) dtb-y := $(addprefix $(makefile-path)/,$(dtb-y)) diff --git a/overlay/tegra234-p3737-0000+p3701-0000.dts b/overlay/tegra234-p3737-0000+p3701-0000.dts index 73c23fc..abf8861 100644 --- a/overlay/tegra234-p3737-0000+p3701-0000.dts +++ b/overlay/tegra234-p3737-0000+p3701-0000.dts @@ -15,7 +15,7 @@ #include "tegra234-p3737-0000-camera-imx274-dual.dtsi" #include "tegra234-p3701-0000.dtsi" #include "tegra234-dcb-p3737-0000-p3701-0000.dtsi" - +#include "tegra234-p3737-camera-modules.dtsi" / { compatible = "nvidia,p3737-0000+p3701-0000"; diff --git a/overlay/tegra234-p3737-0000-camera-imx185-a00.dtsi b/overlay/tegra234-p3737-0000-camera-imx185-a00.dtsi index b4ab83c..326ee8d 100644 --- a/overlay/tegra234-p3737-0000-camera-imx185-a00.dtsi +++ b/overlay/tegra234-p3737-0000-camera-imx185-a00.dtsi @@ -1,5 +1,5 @@ // 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 @@ -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"; - }; - }; - - }; - }; - }; }; diff --git a/overlay/tegra234-p3737-0000-camera-imx274-dual.dtsi b/overlay/tegra234-p3737-0000-camera-imx274-dual.dtsi index 4811411..bbfca02 100644 --- a/overlay/tegra234-p3737-0000-camera-imx274-dual.dtsi +++ b/overlay/tegra234-p3737-0000-camera-imx274-dual.dtsi @@ -1,5 +1,5 @@ // 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 @@ -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"; - }; - }; - - }; - }; - }; }; diff --git a/overlay/tegra234-p3737-0000-camera-imx390-a00.dtsi b/overlay/tegra234-p3737-0000-camera-imx390-a00.dtsi index 4ad3b0e..d146e45 100644 --- a/overlay/tegra234-p3737-0000-camera-imx390-a00.dtsi +++ b/overlay/tegra234-p3737-0000-camera-imx390-a00.dtsi @@ -1,5 +1,5 @@ // 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 @@ -9,7 +9,7 @@ /* camera control gpio definitions */ / { - fragment-camera-imx318@0 { + fragment-camera-imx390@0 { target-path = "/"; __overlay__ { bus@0{ diff --git a/overlay/tegra234-p3737-0000.dtsi b/overlay/tegra234-p3737-0000.dtsi index 164f3e6..852194d 100644 --- a/overlay/tegra234-p3737-0000.dtsi +++ b/overlay/tegra234-p3737-0000.dtsi @@ -109,6 +109,21 @@ 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"; + }; + }; }; }; }; diff --git a/overlay/tegra234-p3737-camera-dual-imx274-overlay.dts b/overlay/tegra234-p3737-camera-dual-imx274-overlay.dts new file mode 100644 index 0000000..6377cc9 --- /dev/null +++ b/overlay/tegra234-p3737-camera-dual-imx274-overlay.dts @@ -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"; + }; + }; + +}; diff --git a/overlay/tegra234-p3737-camera-e3331-overlay.dts b/overlay/tegra234-p3737-camera-e3331-overlay.dts new file mode 100644 index 0000000..5ab6fcf --- /dev/null +++ b/overlay/tegra234-p3737-camera-e3331-overlay.dts @@ -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 + +#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 = ; + /* */ + 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"; + }; + }; +}; diff --git a/overlay/tegra234-p3737-camera-e3333-overlay.dts b/overlay/tegra234-p3737-camera-e3333-overlay.dts new file mode 100644 index 0000000..62aa0c2 --- /dev/null +++ b/overlay/tegra234-p3737-camera-e3333-overlay.dts @@ -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 + +#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 = ; + 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"; + }; + }; + }; +}; diff --git a/overlay/tegra234-p3737-camera-imx185-overlay.dts b/overlay/tegra234-p3737-camera-imx185-overlay.dts new file mode 100644 index 0000000..3cd263d --- /dev/null +++ b/overlay/tegra234-p3737-camera-imx185-overlay.dts @@ -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>; + }; + }; +}; diff --git a/overlay/tegra234-p3737-camera-modules.dtsi b/overlay/tegra234-p3737-camera-modules.dtsi new file mode 100644 index 0000000..8a67bff --- /dev/null +++ b/overlay/tegra234-p3737-camera-modules.dtsi @@ -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 = ; + 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"; + }; + }; + }; + }; + }; + }; + }; +};