[PATCH 2/2] arm64: dts: ti: k3-j722s-evm: Add overlay for TEVI OV5640

Yemike Abhilash Chandra posted 2 patches 9 months, 1 week ago
There is a newer version of this series
[PATCH 2/2] arm64: dts: ti: k3-j722s-evm: Add overlay for TEVI OV5640
Posted by Yemike Abhilash Chandra 9 months, 1 week ago
From: Vaishnav Achath <vaishnav.a@ti.com>

TechNexion TEVI OV5640 camera is a 5MP camera that can be used with
J722S EVM through the 22-pin CSI-RX connector. Add a reference overlay
for quad TEVI OV5640 modules on J722S EVM.

Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
Signed-off-by: Yemike Abhilash Chandra <y-abhilashchandra@ti.com>
---
 arch/arm64/boot/dts/ti/Makefile               |   4 +
 .../k3-j722s-evm-csi2-quad-tevi-ov5640.dtso   | 358 ++++++++++++++++++
 2 files changed, 362 insertions(+)
 create mode 100644 arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso

diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
index 829a3b028466..76b750e4b8a8 100644
--- a/arch/arm64/boot/dts/ti/Makefile
+++ b/arch/arm64/boot/dts/ti/Makefile
@@ -123,6 +123,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
 dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
 dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
+dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-tevi-ov5640.dtbo
 
 # Boards with J784s4 SoC
 dtb-$(CONFIG_ARCH_K3) += k3-am69-sk.dtb
@@ -220,6 +221,8 @@ k3-j742s2-evm-usb0-type-a-dtbs := k3-j742s2-evm.dtb \
 	k3-j784s4-j742s2-evm-usb0-type-a.dtbo
 k3-j722s-evm-csi2-quad-rpi-cam-imx219-dtbs := k3-j722s-evm.dtb \
 	k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
+k3-j722s-evm-csi2-quad-tevi-ov5640-dtbs := k3-j722s-evm.dtb \
+	k3-j722s-evm-csi2-quad-tevi-ov5640.dtbo
 k3-j784s4-evm-pcie0-pcie1-ep-dtbs := k3-j784s4-evm.dtb \
 	k3-j784s4-evm-pcie0-pcie1-ep.dtbo
 k3-j784s4-evm-quad-port-eth-exp1-dtbs := k3-j784s4-evm.dtb \
@@ -258,6 +261,7 @@ dtb- += k3-am625-beagleplay-csi2-ov5640.dtb \
 	k3-j721s2-evm-pcie1-ep.dtb \
 	k3-j742s2-evm-usb0-type-a.dtb \
 	k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtb \
+	k3-j722s-evm-csi2-quad-tevi-ov5640.dtb \
 	k3-j784s4-evm-pcie0-pcie1-ep.dtb \
 	k3-j784s4-evm-quad-port-eth-exp1.dtb \
 	k3-j784s4-evm-usb0-type-a.dtb \
diff --git a/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso b/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
new file mode 100644
index 000000000000..537224ea60e3
--- /dev/null
+++ b/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
@@ -0,0 +1,358 @@
+// SPDX-License-Identifier: GPL-2.0-only OR MIT
+/*
+ * 4 x TEVI OV5640 MIPI Camera module on RPI camera connector.
+ *
+ * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include "k3-pinctrl.h"
+
+&{/} {
+	clk_ov5640_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 = <&vdd_sd_dv>;
+		regulator-always-on;
+	};
+
+	reg_1p8v: regulator-1p8v {
+		compatible = "regulator-fixed";
+		regulator-name = "1P8V";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		vin-supply = <&vdd_sd_dv>;
+		regulator-always-on;
+	};
+
+	reg_3p3v: regulator-3p3v {
+		compatible = "regulator-fixed";
+		regulator-name = "3P3V";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vdd_sd_dv>;
+		regulator-always-on;
+	};
+};
+
+
+&main_pmx0 {
+	cam0_reset_pins_default: cam0-default-reset-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x03c, PIN_OUTPUT, 7)
+		>;
+	};
+
+	cam1_reset_pins_default: cam1-default-reset-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x044, PIN_OUTPUT, 7)
+		>;
+	};
+
+	cam2_reset_pins_default: cam2-default-reset-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x04c, PIN_OUTPUT, 7)
+		>;
+	};
+
+	cam3_reset_pins_default: cam3-default-reset-pins {
+		pinctrl-single,pins = <
+			J722S_IOPAD(0x054, PIN_OUTPUT, 7)
+		>;
+	};
+};
+
+&exp1 {
+	p06-hog{
+		/* P06 - CSI01_MUX_SEL_2 */
+		gpio-hog;
+		gpios = <6 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "CSI01_MUX_SEL_2";
+	};
+
+	p07-hog{
+		/* P01 - CSI23_MUX_SEL_2 */
+		gpio-hog;
+		gpios = <7 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "CSI23_MUX_SEL_2";
+	};
+};
+
+&main_gpio0 {
+	p15-hog {
+		/* P15 - CSI2_CAMERA_GPIO1 */
+		gpio-hog;
+		gpios = <15 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "CSI2_CAMERA_GPIO1";
+	};
+
+	p17-hog {
+		/* P17 - CSI2_CAMERA_GPIO2 */
+		gpio-hog;
+		gpios = <17 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "CSI2_CAMERA_GPIO2";
+	};
+
+	p19-hog {
+		/* P19 - CSI2_CAMERA_GPIO3 */
+		gpio-hog;
+		gpios = <19 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "CSI2_CAMERA_GPIO3";
+	};
+
+	p21-hog {
+		/* P21 - CSI2_CAMERA_GPIO4 */
+		gpio-hog;
+		gpios = <21 GPIO_ACTIVE_HIGH>;
+		output-high;
+		line-name = "CSI2_CAMERA_GPIO4";
+	};
+};
+
+&pca9543_0 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	i2c@0 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0>;
+
+		ov5640_0: camera@3c {
+			compatible = "ovti,ov5640";
+			reg = <0x3c>;
+			clocks = <&clk_ov5640_fixed>;
+			clock-names = "xclk";
+
+			AVDD-supply = <&reg_2p8v>;
+			DOVDD-supply = <&reg_1p8v>;
+			DVDD-supply = <&reg_3p3v>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&cam0_reset_pins_default>;
+
+			port {
+				csi2_cam0: endpoint {
+					remote-endpoint = <&csi2rx0_in_sensor>;
+					clock-lanes = <0>;
+					data-lanes = <1 2>;
+				};
+			};
+		};
+	};
+
+	i2c@1 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <1>;
+
+		ov5640_1: camera@3c {
+			compatible = "ovti,ov5640";
+			reg = <0x3c>;
+			clocks = <&clk_ov5640_fixed>;
+			clock-names = "xclk";
+
+			AVDD-supply = <&reg_2p8v>;
+			DOVDD-supply = <&reg_1p8v>;
+			DVDD-supply = <&reg_3p3v>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&cam1_reset_pins_default>;
+
+			port {
+				csi2_cam1: endpoint {
+					remote-endpoint = <&csi2rx1_in_sensor>;
+					clock-lanes = <0>;
+					data-lanes = <1 2>;
+				};
+			};
+		};
+	};
+};
+
+&pca9543_1 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+
+	i2c@0 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <0>;
+
+		ov5640_2: camera@3c {
+			compatible = "ovti,ov5640";
+			reg = <0x3c>;
+			clocks = <&clk_ov5640_fixed>;
+			clock-names = "xclk";
+
+			AVDD-supply = <&reg_2p8v>;
+			DOVDD-supply = <&reg_1p8v>;
+			DVDD-supply = <&reg_3p3v>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&cam2_reset_pins_default>;
+
+			port {
+				csi2_cam2: endpoint {
+					remote-endpoint = <&csi2rx2_in_sensor>;
+					clock-lanes = <0>;
+					data-lanes = <1 2>;
+				};
+			};
+		};
+	};
+
+	i2c@1 {
+		#address-cells = <1>;
+		#size-cells = <0>;
+		reg = <1>;
+
+		ov5640_3: camera@3c {
+			compatible = "ovti,ov5640";
+			reg = <0x3c>;
+			clocks = <&clk_ov5640_fixed>;
+			clock-names = "xclk";
+
+			AVDD-supply = <&reg_2p8v>;
+			DOVDD-supply = <&reg_1p8v>;
+			DVDD-supply = <&reg_3p3v>;
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&cam3_reset_pins_default>;
+
+			port {
+				csi2_cam3: endpoint {
+					remote-endpoint = <&csi2rx3_in_sensor>;
+					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";
+};
-- 
2.34.1
Re: [PATCH 2/2] arm64: dts: ti: k3-j722s-evm: Add overlay for TEVI OV5640
Posted by Kumar, Udit 9 months, 1 week ago
Hello Vaishnav/Abhilash

Thanks for patch

On 5/5/2025 5:27 PM, Yemike Abhilash Chandra wrote:
> From: Vaishnav Achath <vaishnav.a@ti.com>
>
> TechNexion TEVI OV5640 camera is a 5MP camera that can be used with
> J722S EVM through the 22-pin CSI-RX connector. Add a reference overlay
> for quad TEVI OV5640 modules on J722S EVM.
>
> Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
> Signed-off-by: Yemike Abhilash Chandra <y-abhilashchandra@ti.com>
> ---
>   arch/arm64/boot/dts/ti/Makefile               |   4 +
>   .../k3-j722s-evm-csi2-quad-tevi-ov5640.dtso   | 358 ++++++++++++++++++
>   2 files changed, 362 insertions(+)
>   create mode 100644 arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
>
> diff --git a/arch/arm64/boot/dts/ti/Makefile b/arch/arm64/boot/dts/ti/Makefile
> index 829a3b028466..76b750e4b8a8 100644
> --- a/arch/arm64/boot/dts/ti/Makefile
> +++ b/arch/arm64/boot/dts/ti/Makefile
> @@ -123,6 +123,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
>   dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
>   dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
>   dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
> [..]
> diff --git a/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso b/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
> new file mode 100644
> index 000000000000..537224ea60e3
> --- /dev/null
> +++ b/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
> @@ -0,0 +1,358 @@
> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> +/*
> + * 4 x TEVI OV5640 MIPI Camera module on RPI camera connector.
> + *
> + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include "k3-pinctrl.h"
> +
> +&{/} {
> +	clk_ov5640_fixed: clock-24000000 {
> +		compatible = "fixed-clock";
> +		#clock-cells = <0>;
> +		clock-frequency = <24000000>;
> +	};
> +

Please check once , this is clock is 25M or 24M .

As I see CDC6CE025000ADLXT/U28 is marked as 25M OSC

> +	reg_2p8v: regulator-2p8v {
> +		compatible = "regulator-fixed";
> +		regulator-name = "2P8V";
> +		regulator-min-microvolt = <2800000>;
> +		regulator-max-microvolt = <2800000>;
> +		vin-supply = <&vdd_sd_dv>;
> +		regulator-always-on;
> +	};
> +
> +	reg_1p8v: regulator-1p8v {
> +		compatible = "regulator-fixed";
> +		regulator-name = "1P8V";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +		vin-supply = <&vdd_sd_dv>;
> +		regulator-always-on;
> +	};
> +
> +	reg_3p3v: regulator-3p3v {
> +		compatible = "regulator-fixed";
> +		regulator-name = "3P3V";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vdd_sd_dv>;
> +		regulator-always-on;
> +	};

Sorry but on connector QSH-020-01-L-D-DP-A-K/J27, I see only 3v3 available.

May be I am missing something here but how you are getting 1v8 and 2v8 
supply


> +};
> +
> +
> +&main_pmx0 {
> +	cam0_reset_pins_default: cam0-default-reset-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x03c, PIN_OUTPUT, 7)
> +		>;
> +	};
> +

Please mark GPIO you are using for this in comment

example

J722S_IOPAD(0x1dc, PIN_INPUT, 0) /* (C22) MCAN0_RX */


> +	cam1_reset_pins_default: cam1-default-reset-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x044, PIN_OUTPUT, 7)
> +		>;
> +	};
> +
> +	cam2_reset_pins_default: cam2-default-reset-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x04c, PIN_OUTPUT, 7)
> +		>;
> +	};
> +
> +	cam3_reset_pins_default: cam3-default-reset-pins {
> +		pinctrl-single,pins = <
> +			J722S_IOPAD(0x054, PIN_OUTPUT, 7)
> +		>;
> +	};
> +};
> +
> +&exp1 {
> +	p06-hog{
> +		/* P06 - CSI01_MUX_SEL_2 */
> +		gpio-hog;
> +		gpios = <6 GPIO_ACTIVE_HIGH>;
> +		output-high;
> +		line-name = "CSI01_MUX_SEL_2";

As per table on page 29

CSI01_MUX_SEL_2 as low means, INPUT<-- A Port [CSI2 Connector]

Please check, if you want to drive this line high or low

> +	};
> +
> +	p07-hog{
> +		/* P01 - CSI23_MUX_SEL_2 */
> +		gpio-hog;
> +		gpios = <7 GPIO_ACTIVE_HIGH>;
> +		output-high;
> +		line-name = "CSI23_MUX_SEL_2";
> +	};

Same as for CSI01_MUX_SEL_2, table on page-30


> +};
> +
> +&main_gpio0 {
> +	p15-hog {
> +		/* P15 - CSI2_CAMERA_GPIO1 */
> +		gpio-hog;
> +		gpios = <15 GPIO_ACTIVE_HIGH>;
> +		output-high;
> +		line-name = "CSI2_CAMERA_GPIO1";
> +	};
> +
> +	p17-hog {
> +		/* P17 - CSI2_CAMERA_GPIO2 */
> +		gpio-hog;
> +		gpios = <17 GPIO_ACTIVE_HIGH>;
> +		output-high;
> +		line-name = "CSI2_CAMERA_GPIO2";
> +	};
> +
> +	p19-hog {
> +		/* P19 - CSI2_CAMERA_GPIO3 */
> +		gpio-hog;
> +		gpios = <19 GPIO_ACTIVE_HIGH>;
> +		output-high;
> +		line-name = "CSI2_CAMERA_GPIO3";
> +	};
> +
> +	p21-hog {
> +		/* P21 - CSI2_CAMERA_GPIO4 */
> +		gpio-hog;
> +		gpios = <21 GPIO_ACTIVE_HIGH>;
> +		output-high;
> +		line-name = "CSI2_CAMERA_GPIO4";
> +	};

Please check once if P21 and rest above are pin number of SOC ?


> +};
> +
> +&pca9543_0 {
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +
> +	i2c@0 {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		reg = <0>;
> +
> +		ov5640_0: camera@3c {
> +			compatible = "ovti,ov5640";
> +			reg = <0x3c>;
> +			clocks = <&clk_ov5640_fixed>;
> +			clock-names = "xclk";
> +
> +			AVDD-supply = <&reg_2p8v>;
> +			DOVDD-supply = <&reg_1p8v>;
> +			DVDD-supply = <&reg_3p3v>;
> +
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&cam0_reset_pins_default>;

do you think, you should have reset-gpios as property for this ov5640 
and other nodes too ?


> +
> [..]
Re: [PATCH 2/2] arm64: dts: ti: k3-j722s-evm: Add overlay for TEVI OV5640
Posted by Yemike Abhilash Chandra 9 months, 1 week ago
Hi Udit,
Thanks for the review.

On 07/05/25 13:50, Kumar, Udit wrote:
> Hello Vaishnav/Abhilash
> 
> Thanks for patch
> 
> On 5/5/2025 5:27 PM, Yemike Abhilash Chandra wrote:
>> From: Vaishnav Achath <vaishnav.a@ti.com>
>>
>> TechNexion TEVI OV5640 camera is a 5MP camera that can be used with
>> J722S EVM through the 22-pin CSI-RX connector. Add a reference overlay
>> for quad TEVI OV5640 modules on J722S EVM.
>>
>> Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
>> Signed-off-by: Yemike Abhilash Chandra <y-abhilashchandra@ti.com>
>> ---
>>   arch/arm64/boot/dts/ti/Makefile               |   4 +
>>   .../k3-j722s-evm-csi2-quad-tevi-ov5640.dtso   | 358 ++++++++++++++++++
>>   2 files changed, 362 insertions(+)
>>   create mode 100644 
>> arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
>>
>> diff --git a/arch/arm64/boot/dts/ti/Makefile 
>> b/arch/arm64/boot/dts/ti/Makefile
>> index 829a3b028466..76b750e4b8a8 100644
>> --- a/arch/arm64/boot/dts/ti/Makefile
>> +++ b/arch/arm64/boot/dts/ti/Makefile
>> @@ -123,6 +123,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
>>   dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
>>   dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
>>   dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
>> [..]
>> diff --git 
>> a/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso 
>> b/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
>> new file mode 100644
>> index 000000000000..537224ea60e3
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
>> @@ -0,0 +1,358 @@
>> +// SPDX-License-Identifier: GPL-2.0-only OR MIT
>> +/*
>> + * 4 x TEVI OV5640 MIPI Camera module on RPI camera connector.
>> + *
>> + * Copyright (C) 2024 Texas Instruments Incorporated - 
>> https://www.ti.com/
>> + */
>> +
>> +/dts-v1/;
>> +/plugin/;
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include "k3-pinctrl.h"
>> +
>> +&{/} {
>> +    clk_ov5640_fixed: clock-24000000 {
>> +        compatible = "fixed-clock";
>> +        #clock-cells = <0>;
>> +        clock-frequency = <24000000>;
>> +    };
>> +
> 
> Please check once , this is clock is 25M or 24M .
> 
> As I see CDC6CE025000ADLXT/U28 is marked as 25M OSC
> 

This is the crystal clock with in the sensor.

>> +    reg_2p8v: regulator-2p8v {
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "2P8V";
>> +        regulator-min-microvolt = <2800000>;
>> +        regulator-max-microvolt = <2800000>;
>> +        vin-supply = <&vdd_sd_dv>;
>> +        regulator-always-on;
>> +    };
>> +
>> +    reg_1p8v: regulator-1p8v {
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "1P8V";
>> +        regulator-min-microvolt = <1800000>;
>> +        regulator-max-microvolt = <1800000>;
>> +        vin-supply = <&vdd_sd_dv>;
>> +        regulator-always-on;
>> +    };
>> +
>> +    reg_3p3v: regulator-3p3v {
>> +        compatible = "regulator-fixed";
>> +        regulator-name = "3P3V";
>> +        regulator-min-microvolt = <3300000>;
>> +        regulator-max-microvolt = <3300000>;
>> +        vin-supply = <&vdd_sd_dv>;
>> +        regulator-always-on;
>> +    };
> 
> Sorry but on connector QSH-020-01-L-D-DP-A-K/J27, I see only 3v3 available.
> 
> May be I am missing something here but how you are getting 1v8 and 2v8 
> supply
> 

Yes, 3.3V is provided as the main input supply to the sensor.
However, required 1.8V and 2.8V rails from the 3.3V input.
Please refer to [1] for detailed information.

> 
>> +};
>> +
>> +
>> +&main_pmx0 {
>> +    cam0_reset_pins_default: cam0-default-reset-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x03c, PIN_OUTPUT, 7)
>> +        >;
>> +    };
>> +
> 
> Please mark GPIO you are using for this in comment
> 
> example
> 
> J722S_IOPAD(0x1dc, PIN_INPUT, 0) /* (C22) MCAN0_RX */
> 

Sure. Will do that.

> 
>> +    cam1_reset_pins_default: cam1-default-reset-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x044, PIN_OUTPUT, 7)
>> +        >;
>> +    };
>> +
>> +    cam2_reset_pins_default: cam2-default-reset-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x04c, PIN_OUTPUT, 7)
>> +        >;
>> +    };
>> +
>> +    cam3_reset_pins_default: cam3-default-reset-pins {
>> +        pinctrl-single,pins = <
>> +            J722S_IOPAD(0x054, PIN_OUTPUT, 7)
>> +        >;
>> +    };
>> +};
>> +
>> +&exp1 {
>> +    p06-hog{
>> +        /* P06 - CSI01_MUX_SEL_2 */
>> +        gpio-hog;
>> +        gpios = <6 GPIO_ACTIVE_HIGH>;
>> +        output-high;
>> +        line-name = "CSI01_MUX_SEL_2";
> 
> As per table on page 29
> 
> CSI01_MUX_SEL_2 as low means, INPUT<-- A Port [CSI2 Connector]
> 
> Please check, if you want to drive this line high or low

These are RPI connectors, It should be high.

> 
>> +    };
>> +
>> +    p07-hog{
>> +        /* P01 - CSI23_MUX_SEL_2 */
>> +        gpio-hog;
>> +        gpios = <7 GPIO_ACTIVE_HIGH>;
>> +        output-high;
>> +        line-name = "CSI23_MUX_SEL_2";
>> +    };
> 
> Same as for CSI01_MUX_SEL_2, table on page-30
> 
> 
>> +};
>> +
>> +&main_gpio0 {
>> +    p15-hog {
>> +        /* P15 - CSI2_CAMERA_GPIO1 */
>> +        gpio-hog;
>> +        gpios = <15 GPIO_ACTIVE_HIGH>;
>> +        output-high;
>> +        line-name = "CSI2_CAMERA_GPIO1";
>> +    };
>> +
>> +    p17-hog {
>> +        /* P17 - CSI2_CAMERA_GPIO2 */
>> +        gpio-hog;
>> +        gpios = <17 GPIO_ACTIVE_HIGH>;
>> +        output-high;
>> +        line-name = "CSI2_CAMERA_GPIO2";
>> +    };
>> +
>> +    p19-hog {
>> +        /* P19 - CSI2_CAMERA_GPIO3 */
>> +        gpio-hog;
>> +        gpios = <19 GPIO_ACTIVE_HIGH>;
>> +        output-high;
>> +        line-name = "CSI2_CAMERA_GPIO3";
>> +    };
>> +
>> +    p21-hog {
>> +        /* P21 - CSI2_CAMERA_GPIO4 */
>> +        gpio-hog;
>> +        gpios = <21 GPIO_ACTIVE_HIGH>;
>> +        output-high;
>> +        line-name = "CSI2_CAMERA_GPIO4";
>> +    };
> 
> Please check once if P21 and rest above are pin number of SOC ?
> 

Yes

> 
>> +};
>> +
>> +&pca9543_0 {
>> +    #address-cells = <1>;
>> +    #size-cells = <0>;
>> +
>> +    i2c@0 {
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>> +        reg = <0>;
>> +
>> +        ov5640_0: camera@3c {
>> +            compatible = "ovti,ov5640";
>> +            reg = <0x3c>;
>> +            clocks = <&clk_ov5640_fixed>;
>> +            clock-names = "xclk";
>> +
>> +            AVDD-supply = <&reg_2p8v>;
>> +            DOVDD-supply = <&reg_1p8v>;
>> +            DVDD-supply = <&reg_3p3v>;
>> +
>> +            pinctrl-names = "default";
>> +            pinctrl-0 = <&cam0_reset_pins_default>;
> 
> do you think, you should have reset-gpios as property for this ov5640 
> and other nodes too ?
> 

Thanks for pointing this out. I will add that in the next revision.

Thanks and Regards
Yemike Abhilash Chandra


[1]:https://www.technexion.com/wp-content/uploads/2023/09/product-brief_tevi-ov5640.pdf

> 
>> +
>> [..]
Re: [PATCH 2/2] arm64: dts: ti: k3-j722s-evm: Add overlay for TEVI OV5640
Posted by Nishanth Menon 9 months, 1 week ago
On 17:46-20250508, Yemike Abhilash Chandra wrote:
> Hi Udit,
> Thanks for the review.
> 
> On 07/05/25 13:50, Kumar, Udit wrote:
> > Hello Vaishnav/Abhilash
> > 
> > Thanks for patch
> > 
> > On 5/5/2025 5:27 PM, Yemike Abhilash Chandra wrote:
> > > From: Vaishnav Achath <vaishnav.a@ti.com>
> > > 
> > > TechNexion TEVI OV5640 camera is a 5MP camera that can be used with
> > > J722S EVM through the 22-pin CSI-RX connector. Add a reference overlay
> > > for quad TEVI OV5640 modules on J722S EVM.
> > > 
> > > Signed-off-by: Vaishnav Achath <vaishnav.a@ti.com>
> > > Signed-off-by: Yemike Abhilash Chandra <y-abhilashchandra@ti.com>
> > > ---
> > >   arch/arm64/boot/dts/ti/Makefile               |   4 +
> > >   .../k3-j722s-evm-csi2-quad-tevi-ov5640.dtso   | 358 ++++++++++++++++++
> > >   2 files changed, 362 insertions(+)
> > >   create mode 100644
> > > arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
> > > 
> > > diff --git a/arch/arm64/boot/dts/ti/Makefile
> > > b/arch/arm64/boot/dts/ti/Makefile
> > > index 829a3b028466..76b750e4b8a8 100644
> > > --- a/arch/arm64/boot/dts/ti/Makefile
> > > +++ b/arch/arm64/boot/dts/ti/Makefile
> > > @@ -123,6 +123,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
> > >   dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
> > >   dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
> > >   dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
> > > [..]
> > > diff --git
> > > a/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
> > > b/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
> > > new file mode 100644
> > > index 000000000000..537224ea60e3
> > > --- /dev/null
> > > +++ b/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso
> > > @@ -0,0 +1,358 @@
> > > +// SPDX-License-Identifier: GPL-2.0-only OR MIT
> > > +/*
> > > + * 4 x TEVI OV5640 MIPI Camera module on RPI camera connector.
> > > + *
> > > + * Copyright (C) 2024 Texas Instruments Incorporated -
> > > https://www.ti.com/
> > > + */
> > > +
> > > +/dts-v1/;
> > > +/plugin/;
> > > +
> > > +#include <dt-bindings/gpio/gpio.h>
> > > +#include "k3-pinctrl.h"
> > > +
> > > +&{/} {
> > > +    clk_ov5640_fixed: clock-24000000 {
> > > +        compatible = "fixed-clock";
> > > +        #clock-cells = <0>;
> > > +        clock-frequency = <24000000>;
> > > +    };
> > > +
> > 
> > Please check once , this is clock is 25M or 24M .
> > 
> > As I see CDC6CE025000ADLXT/U28 is marked as 25M OSC
> > 
> 
> This is the crystal clock with in the sensor.

Please cross check this - the camera *module* has a BAW crystal which is the
source of clock to the sensor.


-- 
Regards,
Nishanth Menon
Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 849D 1736 249D