1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree Source for the Falcon CSI/DSI sub-board
4 *
5 * Copyright (C) 2021 Glider bv
6 */
7
8#include <dt-bindings/media/video-interfaces.h>
9
10&csi40 {
11	status = "okay";
12
13	ports {
14		#address-cells = <1>;
15		#size-cells = <0>;
16
17		port@0 {
18			reg = <0>;
19
20			csi40_in: endpoint {
21				clock-lanes = <0>;
22				data-lanes = <1 2 3 4>;
23				remote-endpoint = <&max96712_out0>;
24			};
25		};
26	};
27};
28
29&csi42 {
30	status = "okay";
31
32	ports {
33		#address-cells = <1>;
34		#size-cells = <0>;
35
36		port@0 {
37			reg = <0>;
38
39			csi42_in: endpoint {
40				clock-lanes = <0>;
41				data-lanes = <1 2 3 4>;
42				remote-endpoint = <&max96712_out1>;
43			};
44		};
45	};
46};
47
48&csi43 {
49	status = "okay";
50
51	ports {
52		#address-cells = <1>;
53		#size-cells = <0>;
54
55		port@0 {
56			reg = <0>;
57
58			csi43_in: endpoint {
59				clock-lanes = <0>;
60				data-lanes = <1 2 3 4>;
61				remote-endpoint = <&max96712_out2>;
62			};
63		};
64	};
65};
66
67&i2c0 {
68	pca9654_a: gpio@21 {
69		compatible = "onnn,pca9654";
70		reg = <0x21>;
71		gpio-controller;
72		#gpio-cells = <2>;
73	};
74
75	pca9654_b: gpio@22 {
76		compatible = "onnn,pca9654";
77		reg = <0x22>;
78		gpio-controller;
79		#gpio-cells = <2>;
80	};
81
82	pca9654_c: gpio@23 {
83		compatible = "onnn,pca9654";
84		reg = <0x23>;
85		gpio-controller;
86		#gpio-cells = <2>;
87	};
88
89	eeprom@52 {
90		compatible = "rohm,br24g01", "atmel,24c01";
91		label = "csi-dsi-sub-board-id";
92		reg = <0x52>;
93		pagesize = <8>;
94	};
95};
96
97&i2c1 {
98	gmsl0: gmsl-deserializer@49 {
99		compatible = "maxim,max96712";
100		reg = <0x49>;
101		enable-gpios = <&pca9654_a 0 GPIO_ACTIVE_HIGH>;
102
103		ports {
104			#address-cells = <1>;
105			#size-cells = <0>;
106
107			port@4 {
108				reg = <4>;
109				max96712_out0: endpoint {
110					bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
111					clock-lanes = <0>;
112					data-lanes = <1 2 3 4>;
113					remote-endpoint = <&csi40_in>;
114				};
115			};
116		};
117	};
118
119	gmsl1: gmsl-deserializer@4b {
120		compatible = "maxim,max96712";
121		reg = <0x4b>;
122		enable-gpios = <&pca9654_b 0 GPIO_ACTIVE_HIGH>;
123
124		ports {
125			#address-cells = <1>;
126			#size-cells = <0>;
127
128			port@4 {
129				reg = <4>;
130				max96712_out1: endpoint {
131					bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
132					clock-lanes = <0>;
133					data-lanes = <1 2 3 4>;
134					lane-polarities = <0 0 0 0 1>;
135					remote-endpoint = <&csi42_in>;
136				};
137			};
138		};
139	};
140
141	gmsl2: gmsl-deserializer@6b {
142		compatible = "maxim,max96712";
143		reg = <0x6b>;
144		enable-gpios = <&pca9654_c 0 GPIO_ACTIVE_HIGH>;
145
146		ports {
147			#address-cells = <1>;
148			#size-cells = <0>;
149
150			port@4 {
151				reg = <4>;
152				max96712_out2: endpoint {
153					bus-type = <MEDIA_BUS_TYPE_CSI2_DPHY>;
154					clock-lanes = <0>;
155					data-lanes = <1 2 3 4>;
156					lane-polarities = <0 0 0 0 1>;
157					remote-endpoint = <&csi43_in>;
158				};
159			};
160		};
161	};
162};
163
164&isp0 {
165	status = "okay";
166};
167
168&isp2 {
169	status = "okay";
170};
171
172&isp3 {
173	status = "okay";
174};
175
176&vin00 {
177	status = "okay";
178};
179
180&vin01 {
181	status = "okay";
182};
183
184&vin02 {
185	status = "okay";
186};
187
188&vin03 {
189	status = "okay";
190};
191
192&vin04 {
193	status = "okay";
194};
195
196&vin05 {
197	status = "okay";
198};
199
200&vin06 {
201	status = "okay";
202};
203
204&vin07 {
205	status = "okay";
206};
207
208&vin16 {
209	status = "okay";
210};
211
212&vin17 {
213	status = "okay";
214};
215
216&vin18 {
217	status = "okay";
218};
219
220&vin19 {
221	status = "okay";
222};
223
224&vin20 {
225	status = "okay";
226};
227
228&vin21 {
229	status = "okay";
230};
231
232&vin22 {
233	status = "okay";
234};
235
236&vin23 {
237	status = "okay";
238};
239
240&vin24 {
241	status = "okay";
242};
243
244&vin25 {
245	status = "okay";
246};
247
248&vin26 {
249	status = "okay";
250};
251
252&vin27 {
253	status = "okay";
254};
255
256&vin28 {
257	status = "okay";
258};
259
260&vin29 {
261	status = "okay";
262};
263
264&vin30 {
265	status = "okay";
266};
267
268&vin31 {
269	status = "okay";
270};
271