// SPDX-License-Identifier: GPL-2.0-only // SPDX-FileCopyrightText: Copyright (c) 2018-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved. /dts-v1/; /plugin/; #include #include #include #define CAM0_RST_L TEGRA234_MAIN_GPIO(H, 3) /* camera control gpio definitions */ / { overlay-name = "Jetson Camera IMX390"; jetson-header-name = "Jetson AGX CSI Connector"; compatible = JETSON_COMPATIBLE; fragment@0 { target-path = "/"; __overlay__ { tegra-capture-vi { num-channels = <2>; ports { status = "okay"; port@0 { status = "okay"; imx390_vi_in0: endpoint { status = "okay"; vc-id = <0>; port-index = <0>; bus-width = <2>; remote-endpoint = <&imx390_csi_out0>; }; }; port@1 { status = "okay"; imx390_vi_in1: endpoint { status = "okay"; vc-id = <1>; port-index = <0>; bus-width = <2>; remote-endpoint = <&imx390_csi_out1>; }; }; }; }; tegra-camera-platform { modules { status = "okay"; module0 { badge = "imx390_rear"; position = "rear"; orientation = "1"; status = "okay"; drivernode0 { status = "okay"; /* Declare PCL support driver (classically known as guid) */ pcl_id = "v4l2_sensor"; /* Declare the device-tree hierarchy to driver instance */ sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@0/imx390_a@1b"; }; }; module1 { status = "okay"; badge = "imx390_front"; position = "front"; orientation = "1"; drivernode0 { status = "okay"; /* Declare PCL support driver (classically known as guid) */ pcl_id = "v4l2_sensor"; /* Declare the device-tree hierarchy to driver instance */ sysfs-device-tree = "/sys/firmware/devicetree/base/bus@0/i2c@3180000/tca9546@70/i2c@0/imx390_b@1c"; }; }; }; }; bus@0{ host1x@13e00000 { nvcsi@15a00000 { num-channels = <2>; channel@0 { status = "okay"; ports { status = "okay"; port@0 { status = "okay"; imx390_csi_in0: endpoint@0 { status = "okay"; port-index = <0>; bus-width = <2>; remote-endpoint = <&imx390_imx390_out0>; }; }; port@1 { status = "okay"; imx390_csi_out0: endpoint@1 { status = "okay"; remote-endpoint = <&imx390_vi_in0>; }; }; }; }; channel@1 { status = "okay"; ports { status = "okay"; port@0 { status = "okay"; imx390_csi_in1: endpoint@2 { status = "okay"; port-index = <0>; bus-width = <2>; remote-endpoint = <&imx390_imx390_out1>; }; }; port@1 { status = "okay"; imx390_csi_out1: endpoint@3 { status = "okay"; remote-endpoint = <&imx390_vi_in1>; }; }; }; }; }; }; i2c@3180000 { tca9546@70 { status = "okay"; compatible = "nxp,pca9546"; reg = <0x70>; #address-cells = <1>; #size-cells = <0>; skip_mux_detect = "yes"; i2c@0 { reg = <0>; i2c-mux,deselect-on-exit; #address-cells = <1>; #size-cells = <0>; status = "okay"; dser: max9296@48 { status = "okay"; compatible = "maxim,max9296"; reg = <0x48>; csi-mode = "2x4"; max-src = <2>; reset-gpios = <&gpio CAM0_RST_L GPIO_ACTIVE_HIGH>; }; ser_prim: max9295_prim@62 { status = "okay"; compatible = "maxim,max9295"; reg = <0x62>; is-prim-ser; }; ser_a: max9295_a@40 { status = "okay"; compatible = "maxim,max9295"; reg = <0x40>; nvidia,gmsl-dser-device = <&dser>; }; ser_b: max9295_b@60 { status = "okay"; compatible = "maxim,max9295"; reg = <0x60>; nvidia,gmsl-dser-device = <&dser>; }; imx390_a@1b { status = "okay"; def-addr = <0x1a>; /* Define any required hw resources needed by driver */ /* ie. clocks, io pins, power sources */ clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, <&bpmp TEGRA234_CLK_EXTPERIPH1>; clock-names = "extperiph1", "pllp_grtba"; mclk = "extperiph1"; nvidia,gmsl-ser-device = <&ser_a>; nvidia,gmsl-dser-device = <&dser>; ports { status = "okay"; port@0 { status = "okay"; imx390_imx390_out0: endpoint { status = "okay"; vc-id = <0>; port-index = <0>; bus-width = <2>; remote-endpoint = <&imx390_csi_in0>; }; }; }; }; imx390_b@1c { status = "okay"; def-addr = <0x1a>; /* Define any required hw resources needed by driver */ /* ie. clocks, io pins, power sources */ clocks = <&bpmp TEGRA234_CLK_EXTPERIPH1>, <&bpmp TEGRA234_CLK_EXTPERIPH1>; clock-names = "extperiph1", "pllp_grtba"; mclk = "extperiph1"; nvidia,gmsl-ser-device = <&ser_b>; nvidia,gmsl-dser-device = <&dser>; ports { status = "okay"; port@0 { status = "okay"; imx390_imx390_out1: endpoint { status = "okay"; vc-id = <1>; port-index = <0>; bus-width = <2>; remote-endpoint = <&imx390_csi_in1>; }; }; }; }; }; }; }; }; }; }; };