// SPDX-License-Identifier: GPL-2.0-only OR MIT /* * DT Overlay for 4 x RPi Camera V2.1 on J722S-EVM board. * * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/ * * Schematics: https://datasheets.raspberrypi.com/camera/camera-v2-schematics.pdf */ /dts-v1/; /plugin/; #include #include "k3-pinctrl.h" &main_pmx0 { cam0_reset_pins_default: cam0-default-reset-pins { pinctrl-single,pins = < J722S_IOPAD(0x03c, PIN_OUTPUT, 7) /* (R22) GPIO0_15 */ >; }; cam1_reset_pins_default: cam1-default-reset-pins { pinctrl-single,pins = < J722S_IOPAD(0x044, PIN_OUTPUT, 7) /* (R26) GPIO0_17 */ >; }; cam2_reset_pins_default: cam2-default-reset-pins { pinctrl-single,pins = < J722S_IOPAD(0x04c, PIN_OUTPUT, 7) /* (T25) GPIO0_19 */ >; }; cam3_reset_pins_default: cam3-default-reset-pins { pinctrl-single,pins = < J722S_IOPAD(0x054, PIN_OUTPUT, 7) /* (T21) GPIO0_21 */ >; }; }; &{/} { clk_imx219_fixed: clock-24000000 { compatible = "fixed-clock"; #clock-cells = <0>; clock-frequency = <24000000>; }; reg_2p8v: regulator-2p8v { compatible = "regulator-fixed"; regulator-name = "2P8V"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; vin-supply = <&vsys_3v3_exp>; regulator-always-on; }; reg_1p8v: regulator-1p8v { compatible = "regulator-fixed"; regulator-name = "1P8V"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; vin-supply = <&vsys_3v3_exp>; regulator-always-on; }; reg_1p2v: regulator-1p2v { compatible = "regulator-fixed"; regulator-name = "1P2V"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; vin-supply = <&vsys_3v3_exp>; regulator-always-on; }; }; &csi01_mux { idle-state = <1>; }; &csi23_mux { idle-state = <1>; }; &pca9543_0 { #address-cells = <1>; #size-cells = <0>; /* CAM0 I2C */ i2c@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; imx219_0: sensor@10 { compatible = "sony,imx219"; reg = <0x10>; clocks = <&clk_imx219_fixed>; VANA-supply = <®_2p8v>; VDIG-supply = <®_1p8v>; VDDL-supply = <®_1p2v>; pinctrl-names = "default"; pinctrl-0 = <&cam0_reset_pins_default>; reset-gpios = <&main_gpio0 15 GPIO_ACTIVE_HIGH>; port { csi2_cam0: endpoint { remote-endpoint = <&csi2rx0_in_sensor>; link-frequencies = /bits/ 64 <456000000>; clock-lanes = <0>; data-lanes = <1 2>; }; }; }; }; /* CAM1 I2C */ i2c@1 { #address-cells = <1>; #size-cells = <0>; reg = <1>; imx219_1: sensor@10 { compatible = "sony,imx219"; reg = <0x10>; clocks = <&clk_imx219_fixed>; VANA-supply = <®_2p8v>; VDIG-supply = <®_1p8v>; VDDL-supply = <®_1p2v>; pinctrl-names = "default"; pinctrl-0 = <&cam1_reset_pins_default>; reset-gpios = <&main_gpio0 17 GPIO_ACTIVE_HIGH>; port { csi2_cam1: endpoint { remote-endpoint = <&csi2rx1_in_sensor>; link-frequencies = /bits/ 64 <456000000>; clock-lanes = <0>; data-lanes = <1 2>; }; }; }; }; }; &pca9543_1 { #address-cells = <1>; #size-cells = <0>; /* CAM0 I2C */ i2c@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; imx219_2: sensor@10 { compatible = "sony,imx219"; reg = <0x10>; clocks = <&clk_imx219_fixed>; VANA-supply = <®_2p8v>; VDIG-supply = <®_1p8v>; VDDL-supply = <®_1p2v>; pinctrl-names = "default"; pinctrl-0 = <&cam2_reset_pins_default>; reset-gpios = <&main_gpio0 19 GPIO_ACTIVE_HIGH>; port { csi2_cam2: endpoint { remote-endpoint = <&csi2rx2_in_sensor>; link-frequencies = /bits/ 64 <456000000>; clock-lanes = <0>; data-lanes = <1 2>; }; }; }; }; /* CAM1 I2C */ i2c@1 { #address-cells = <1>; #size-cells = <0>; reg = <1>; imx219_3: sensor@10 { compatible = "sony,imx219"; reg = <0x10>; clocks = <&clk_imx219_fixed>; VANA-supply = <®_2p8v>; VDIG-supply = <®_1p8v>; VDDL-supply = <®_1p2v>; pinctrl-names = "default"; pinctrl-0 = <&cam3_reset_pins_default>; reset-gpios = <&main_gpio0 21 GPIO_ACTIVE_HIGH>; port { csi2_cam3: endpoint { remote-endpoint = <&csi2rx3_in_sensor>; link-frequencies = /bits/ 64 <456000000>; clock-lanes = <0>; data-lanes = <1 2>; }; }; }; }; }; &cdns_csi2rx0 { ports { #address-cells = <1>; #size-cells = <0>; csi0_port0: port@0 { reg = <0>; status = "okay"; csi2rx0_in_sensor: endpoint { remote-endpoint = <&csi2_cam0>; bus-type = <4>; /* CSI2 DPHY */ clock-lanes = <0>; data-lanes = <1 2>; }; }; }; }; &cdns_csi2rx1 { ports { #address-cells = <1>; #size-cells = <0>; csi1_port0: port@0 { reg = <0>; status = "okay"; csi2rx1_in_sensor: endpoint { remote-endpoint = <&csi2_cam1>; bus-type = <4>; /* CSI2 DPHY */ clock-lanes = <0>; data-lanes = <1 2>; }; }; }; }; &cdns_csi2rx2 { ports { #address-cells = <1>; #size-cells = <0>; csi2_port0: port@0 { reg = <0>; status = "okay"; csi2rx2_in_sensor: endpoint { remote-endpoint = <&csi2_cam2>; bus-type = <4>; /* CSI2 DPHY */ clock-lanes = <0>; data-lanes = <1 2>; }; }; }; }; &cdns_csi2rx3 { ports { #address-cells = <1>; #size-cells = <0>; csi3_port0: port@0 { reg = <0>; status = "okay"; csi2rx3_in_sensor: endpoint { remote-endpoint = <&csi2_cam3>; bus-type = <4>; /* CSI2 DPHY */ clock-lanes = <0>; data-lanes = <1 2>; }; }; }; }; &ti_csi2rx0 { status = "okay"; }; &dphy0 { status = "okay"; }; &ti_csi2rx1 { status = "okay"; }; &dphy1 { status = "okay"; }; &ti_csi2rx2 { status = "okay"; }; &dphy2 { status = "okay"; }; &ti_csi2rx3 { status = "okay"; }; &dphy3 { status = "okay"; };