xref: /linux/arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtso (revision ec71f661a572a770d7c861cd52a50cbbb0e1a8d1)
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};
330