Skip to content

Commit 646bcbc

Browse files
vaishnavachathnmenon
authored andcommitted
arm64: dts: ti: k3-j722s-evm: Add overlay for quad IMX219
RPi v2 Camera (IMX219) is an 8MP camera that can be used with J722S EVM through the 22-pin CSI-RX connector. Add a reference overlay for quad IMX219 RPI camera v2 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 2e88611 commit 646bcbc

File tree

2 files changed

+334
-0
lines changed

2 files changed

+334
-0
lines changed

arch/arm64/boot/dts/ti/Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ dtb-$(CONFIG_ARCH_K3) += k3-j721s2-evm-pcie1-ep.dtbo
132132
# Boards with J722s SoC
133133
dtb-$(CONFIG_ARCH_K3) += k3-am67a-beagley-ai.dtb
134134
dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm.dtb
135+
dtb-$(CONFIG_ARCH_K3) += k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtbo
135136

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

0 commit comments

Comments
 (0)