Skip to content

Commit 6a9d340

Browse files
vaishnavachathnmenon
authored andcommitted
arm64: dts: ti: k3-j722s-evm: Add overlay for TEVI OV5640
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 <[email protected]> Signed-off-by: Yemike Abhilash Chandra <[email protected]> Reviewed-by: Udit Kumar <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Nishanth Menon <[email protected]>
1 parent 646bcbc commit 6a9d340

File tree

2 files changed

+327
-0
lines changed

2 files changed

+327
-0
lines changed

arch/arm64/boot/dts/ti/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
133133
dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
134134
dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
135135
dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
136+
dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-tevi-ov5640.dtbo
136137

137138
# Boards with J784s4 SoC
138139
dtb-$(CONFIG_ARCH_K3) += k3-am69-sk.dtb
@@ -228,6 +229,8 @@ k3-j721s2-evm-pcie1-ep-dtbs := k3-j721s2-common-proc-board.dtb \
228229
k3-j721s2-evm-pcie1-ep.dtbo
229230
k3-j722s-evm-csi2-quad-rpi-cam-imx219-dtbs := k3-j722s-evm.dtb \
230231
k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
232+
k3-j722s-evm-csi2-quad-tevi-ov5640-dtbs := k3-j722s-evm.dtb \
233+
k3-j722s-evm-csi2-quad-tevi-ov5640.dtbo
231234
k3-j742s2-evm-usb0-type-a-dtbs := k3-j742s2-evm.dtb \
232235
k3-j784s4-j742s2-evm-usb0-type-a.dtbo
233236
k3-j784s4-evm-pcie0-pcie1-ep-dtbs := k3-j784s4-evm.dtb \
@@ -267,6 +270,7 @@ dtb- += k3-am625-beagleplay-csi2-ov5640.dtb \
267270
k3-j721e-sk-csi2-dual-imx219.dtb \
268271
k3-j721s2-evm-pcie1-ep.dtb \
269272
k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtb \
273+
k3-j722s-evm-csi2-quad-tevi-ov5640.dtb \
270274
k3-j742s2-evm-usb0-type-a.dtb \
271275
k3-j784s4-evm-pcie0-pcie1-ep.dtb \
272276
k3-j784s4-evm-quad-port-eth-exp1.dtb \
Lines changed: 323 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,323 @@
1+
// SPDX-License-Identifier: GPL-2.0-only OR MIT
2+
/*
3+
* DT Overlay for 4 x TEVI OV5640 MIPI Camera module on J722S-EVM board.
4+
*
5+
* Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/
6+
*/
7+
8+
/dts-v1/;
9+
/plugin/;
10+
11+
#include <dt-bindings/gpio/gpio.h>
12+
#include "k3-pinctrl.h"
13+
14+
&main_pmx0 {
15+
cam0_reset_pins_default: cam0-default-reset-pins {
16+
pinctrl-single,pins = <
17+
J722S_IOPAD(0x03c, PIN_OUTPUT, 7) /* (R22) GPIO0_15 */
18+
>;
19+
};
20+
21+
cam1_reset_pins_default: cam1-default-reset-pins {
22+
pinctrl-single,pins = <
23+
J722S_IOPAD(0x044, PIN_OUTPUT, 7) /* (R26) GPIO0_17 */
24+
>;
25+
};
26+
27+
cam2_reset_pins_default: cam2-default-reset-pins {
28+
pinctrl-single,pins = <
29+
J722S_IOPAD(0x04c, PIN_OUTPUT, 7) /* (T25) GPIO0_19 */
30+
>;
31+
};
32+
33+
cam3_reset_pins_default: cam3-default-reset-pins {
34+
pinctrl-single,pins = <
35+
J722S_IOPAD(0x054, PIN_OUTPUT, 7) /* (T21) GPIO0_21 */
36+
>;
37+
};
38+
};
39+
40+
&{/} {
41+
clk_ov5640_fixed: clock-24000000 {
42+
compatible = "fixed-clock";
43+
#clock-cells = <0>;
44+
clock-frequency = <24000000>;
45+
};
46+
47+
reg_2p8v: regulator-2p8v {
48+
compatible = "regulator-fixed";
49+
regulator-name = "2P8V";
50+
regulator-min-microvolt = <2800000>;
51+
regulator-max-microvolt = <2800000>;
52+
vin-supply = <&vsys_3v3_exp>;
53+
regulator-always-on;
54+
};
55+
56+
reg_1p8v: regulator-1p8v {
57+
compatible = "regulator-fixed";
58+
regulator-name = "1P8V";
59+
regulator-min-microvolt = <1800000>;
60+
regulator-max-microvolt = <1800000>;
61+
vin-supply = <&vsys_3v3_exp>;
62+
regulator-always-on;
63+
};
64+
65+
reg_3p3v: regulator-3p3v {
66+
compatible = "regulator-fixed";
67+
regulator-name = "3P3V";
68+
regulator-min-microvolt = <3300000>;
69+
regulator-max-microvolt = <3300000>;
70+
vin-supply = <&vsys_3v3_exp>;
71+
regulator-always-on;
72+
};
73+
};
74+
75+
&csi01_mux {
76+
idle-state = <1>;
77+
};
78+
79+
&csi23_mux {
80+
idle-state = <1>;
81+
};
82+
83+
&pca9543_0 {
84+
#address-cells = <1>;
85+
#size-cells = <0>;
86+
87+
/* CAM0 I2C */
88+
i2c@0 {
89+
#address-cells = <1>;
90+
#size-cells = <0>;
91+
reg = <0>;
92+
93+
ov5640_0: camera@3c {
94+
compatible = "ovti,ov5640";
95+
reg = <0x3c>;
96+
clocks = <&clk_ov5640_fixed>;
97+
clock-names = "xclk";
98+
99+
AVDD-supply = <&reg_2p8v>;
100+
DOVDD-supply = <&reg_1p8v>;
101+
DVDD-supply = <&reg_3p3v>;
102+
103+
pinctrl-names = "default";
104+
pinctrl-0 = <&cam0_reset_pins_default>;
105+
106+
reset-gpios = <&main_gpio0 15 GPIO_ACTIVE_HIGH>;
107+
108+
port {
109+
csi2_cam0: endpoint {
110+
remote-endpoint = <&csi2rx0_in_sensor>;
111+
clock-lanes = <0>;
112+
data-lanes = <1 2>;
113+
};
114+
};
115+
};
116+
};
117+
118+
/* CAM1 I2C */
119+
i2c@1 {
120+
#address-cells = <1>;
121+
#size-cells = <0>;
122+
reg = <1>;
123+
124+
ov5640_1: camera@3c {
125+
compatible = "ovti,ov5640";
126+
reg = <0x3c>;
127+
clocks = <&clk_ov5640_fixed>;
128+
clock-names = "xclk";
129+
130+
AVDD-supply = <&reg_2p8v>;
131+
DOVDD-supply = <&reg_1p8v>;
132+
DVDD-supply = <&reg_3p3v>;
133+
134+
pinctrl-names = "default";
135+
pinctrl-0 = <&cam1_reset_pins_default>;
136+
137+
reset-gpios = <&main_gpio0 17 GPIO_ACTIVE_HIGH>;
138+
139+
port {
140+
csi2_cam1: endpoint {
141+
remote-endpoint = <&csi2rx1_in_sensor>;
142+
clock-lanes = <0>;
143+
data-lanes = <1 2>;
144+
};
145+
};
146+
};
147+
};
148+
};
149+
150+
&pca9543_1 {
151+
#address-cells = <1>;
152+
#size-cells = <0>;
153+
154+
/* CAM0 I2C */
155+
i2c@0 {
156+
#address-cells = <1>;
157+
#size-cells = <0>;
158+
reg = <0>;
159+
160+
ov5640_2: camera@3c {
161+
compatible = "ovti,ov5640";
162+
reg = <0x3c>;
163+
clocks = <&clk_ov5640_fixed>;
164+
clock-names = "xclk";
165+
166+
AVDD-supply = <&reg_2p8v>;
167+
DOVDD-supply = <&reg_1p8v>;
168+
DVDD-supply = <&reg_3p3v>;
169+
170+
pinctrl-names = "default";
171+
pinctrl-0 = <&cam2_reset_pins_default>;
172+
173+
reset-gpios = <&main_gpio0 19 GPIO_ACTIVE_HIGH>;
174+
175+
port {
176+
csi2_cam2: endpoint {
177+
remote-endpoint = <&csi2rx2_in_sensor>;
178+
clock-lanes = <0>;
179+
data-lanes = <1 2>;
180+
};
181+
};
182+
};
183+
};
184+
185+
/* CAM1 I2C */
186+
i2c@1 {
187+
#address-cells = <1>;
188+
#size-cells = <0>;
189+
reg = <1>;
190+
191+
ov5640_3: camera@3c {
192+
compatible = "ovti,ov5640";
193+
reg = <0x3c>;
194+
clocks = <&clk_ov5640_fixed>;
195+
clock-names = "xclk";
196+
197+
AVDD-supply = <&reg_2p8v>;
198+
DOVDD-supply = <&reg_1p8v>;
199+
DVDD-supply = <&reg_3p3v>;
200+
201+
pinctrl-names = "default";
202+
pinctrl-0 = <&cam3_reset_pins_default>;
203+
204+
reset-gpios = <&main_gpio0 21 GPIO_ACTIVE_HIGH>;
205+
206+
port {
207+
csi2_cam3: endpoint {
208+
remote-endpoint = <&csi2rx3_in_sensor>;
209+
clock-lanes = <0>;
210+
data-lanes = <1 2>;
211+
};
212+
};
213+
};
214+
};
215+
};
216+
217+
&cdns_csi2rx0 {
218+
ports {
219+
#address-cells = <1>;
220+
#size-cells = <0>;
221+
222+
csi0_port0: port@0 {
223+
reg = <0>;
224+
status = "okay";
225+
226+
csi2rx0_in_sensor: endpoint {
227+
remote-endpoint = <&csi2_cam0>;
228+
bus-type = <4>; /* CSI2 DPHY */
229+
clock-lanes = <0>;
230+
data-lanes = <1 2>;
231+
};
232+
};
233+
};
234+
};
235+
236+
&cdns_csi2rx1 {
237+
ports {
238+
#address-cells = <1>;
239+
#size-cells = <0>;
240+
241+
csi1_port0: port@0 {
242+
reg = <0>;
243+
status = "okay";
244+
245+
csi2rx1_in_sensor: endpoint {
246+
remote-endpoint = <&csi2_cam1>;
247+
bus-type = <4>; /* CSI2 DPHY */
248+
clock-lanes = <0>;
249+
data-lanes = <1 2>;
250+
};
251+
};
252+
};
253+
};
254+
255+
&cdns_csi2rx2 {
256+
ports {
257+
#address-cells = <1>;
258+
#size-cells = <0>;
259+
260+
csi2_port0: port@0 {
261+
reg = <0>;
262+
status = "okay";
263+
264+
csi2rx2_in_sensor: endpoint {
265+
remote-endpoint = <&csi2_cam2>;
266+
bus-type = <4>; /* CSI2 DPHY */
267+
clock-lanes = <0>;
268+
data-lanes = <1 2>;
269+
};
270+
};
271+
};
272+
};
273+
274+
&cdns_csi2rx3 {
275+
ports {
276+
#address-cells = <1>;
277+
#size-cells = <0>;
278+
279+
csi3_port0: port@0 {
280+
reg = <0>;
281+
status = "okay";
282+
283+
csi2rx3_in_sensor: endpoint {
284+
remote-endpoint = <&csi2_cam3>;
285+
bus-type = <4>; /* CSI2 DPHY */
286+
clock-lanes = <0>;
287+
data-lanes = <1 2>;
288+
};
289+
};
290+
};
291+
};
292+
293+
&ti_csi2rx0 {
294+
status = "okay";
295+
};
296+
297+
&dphy0 {
298+
status = "okay";
299+
};
300+
301+
&ti_csi2rx1 {
302+
status = "okay";
303+
};
304+
305+
&dphy1 {
306+
status = "okay";
307+
};
308+
309+
&ti_csi2rx2 {
310+
status = "okay";
311+
};
312+
313+
&dphy2 {
314+
status = "okay";
315+
};
316+
317+
&ti_csi2rx3 {
318+
status = "okay";
319+
};
320+
321+
&dphy3 {
322+
status = "okay";
323+
};

0 commit comments

Comments
 (0)