File Index
Files and directories
Sign in
FILE

gmsl-cameras.dtsi

File preview with syntax highlighting.

linux-6.19.14/arch/arm64/boot/dts/renesas/gmsl-cameras.dtsi DEVICETREE
  1// SPDX-License-Identifier: GPL-2.0+
  2/*
  3 * Copyright (C) 2017 Ideas on Board <kieran.bingham@ideasonboard.com>
  4 * Copyright (C) 2021 Jacopo Mondi <jacopo+renesas@jmondi.org>
  5 *
  6 * Device Tree Source (overlay) that describes GMSL camera connected to
  7 * Fakra connectors for the Eagle V3M and Condor V3H (and compatible) boards.
  8 *
  9 * The following cameras are currently supported: RDACM20 and RDACM21.
 10 *
 11 * The board .dts file that include this has to select which cameras are in use
 12 * by specifying the camera model with:
 13 *
 14 * #define GMSL_CAMERA_RDACM20
 15 * or
 16 * #define GMSL_CAMERA_RDACM21
 17 *
 18 * And which cameras are connected to the board by defining:
 19 * for GMSL channel 0:
 20 *	   #define GMSL_CAMERA_0
 21 *	   #define GMSL_CAMERA_1
 22 *	   #define GMSL_CAMERA_2
 23 *	   #define GMSL_CAMERA_3
 24 *
 25 * for GMSL channel 1:
 26 *	   #define GMSL_CAMERA_4
 27 *	   #define GMSL_CAMERA_5
 28 *	   #define GMSL_CAMERA_6
 29 *	   #define GMSL_CAMERA_7
 30 */
 31
 32#include <dt-bindings/gpio/gpio.h>
 33
 34/* Validate the board file settings. */
 35#if !defined(GMSL_CAMERA_RDACM20) && !defined(GMSL_CAMERA_RDACM21)
 36#error "Camera model should be defined by the board file"
 37#endif
 38
 39#if defined(GMSL_CAMERA_RDACM20) && defined(GMSL_CAMERA_RDACM21)
 40#error "A single camera model should be selected"
 41#endif
 42
 43#if !defined(GMSL_CAMERA_0) && !defined(GMSL_CAMERA_1) && \
 44    !defined(GMSL_CAMERA_2) && !defined(GMSL_CAMERA_3) && \
 45    !defined(GMSL_CAMERA_4) && !defined(GMSL_CAMERA_5) && \
 46    !defined(GMSL_CAMERA_6) && !defined(GMSL_CAMERA_7)
 47#error "At least one camera should be selected"
 48#endif
 49
 50/* Deduce from the enabled cameras which GMSL channels are active. */
 51#if defined(GMSL_CAMERA_0) || defined(GMSL_CAMERA_1) || \
 52    defined(GMSL_CAMERA_2) || defined(GMSL_CAMERA_3)
 53#define GMSL_0
 54#endif
 55
 56#if defined(GMSL_CAMERA_4) || defined(GMSL_CAMERA_5) || \
 57    defined(GMSL_CAMERA_6) || defined(GMSL_CAMERA_7)
 58#define GMSL_1
 59#endif
 60
 61/* Deduce the camera model compatible string. */
 62#if defined(GMSL_CAMERA_RDACM20)
 63#define GMSL_CAMERA_MODEL "imi,rdacm20"
 64#elif defined(GMSL_CAMERA_RDACM21)
 65#define GMSL_CAMERA_MODEL "imi,rdacm21"
 66#endif
 67
 68#ifdef GMSL_0
 69&vin0 {
 70	status = "okay";
 71};
 72
 73&vin1 {
 74	status = "okay";
 75};
 76
 77&vin2 {
 78	status = "okay";
 79};
 80
 81&vin3 {
 82	status = "okay";
 83};
 84
 85&gmsl0 {
 86	status = "okay";
 87
 88#if defined(GMSL_CAMERA_RDACM21)
 89	maxim,reverse-channel-microvolt = <100000>;
 90#endif
 91
 92	ports {
 93#ifdef GMSL_CAMERA_0
 94		port@0 {
 95			max9286_in0: endpoint {
 96				remote-endpoint = <&fakra_con0>;
 97			};
 98		};
 99#endif
100
101#ifdef GMSL_CAMERA_1
102		port@1 {
103			max9286_in1: endpoint {
104				remote-endpoint = <&fakra_con1>;
105			};
106
107		};
108#endif
109
110#ifdef GMSL_CAMERA_2
111		port@2 {
112			max9286_in2: endpoint {
113				remote-endpoint = <&fakra_con2>;
114			};
115
116		};
117#endif
118
119#ifdef GMSL_CAMERA_3
120		port@3 {
121			max9286_in3: endpoint {
122				remote-endpoint = <&fakra_con3>;
123			};
124
125		};
126#endif
127	};
128
129	i2c-mux {
130#ifdef GMSL_CAMERA_0
131		i2c@0 {
132			status = "okay";
133
134			camera@51 {
135				compatible = GMSL_CAMERA_MODEL;
136				reg = <0x51>, <0x61>;
137
138				port {
139					fakra_con0: endpoint {
140						remote-endpoint = <&max9286_in0>;
141					};
142				};
143			};
144		};
145#endif
146
147#ifdef GMSL_CAMERA_1
148		i2c@1 {
149			status = "okay";
150
151			camera@52 {
152				compatible = GMSL_CAMERA_MODEL;
153				reg = <0x52>, <0x62>;
154
155				port {
156					fakra_con1: endpoint {
157						remote-endpoint = <&max9286_in1>;
158					};
159				};
160			};
161		};
162#endif
163
164#ifdef GMSL_CAMERA_2
165		i2c@2 {
166			status = "okay";
167
168			camera@53 {
169				compatible = GMSL_CAMERA_MODEL;
170				reg = <0x53>, <0x63>;
171
172				port {
173					fakra_con2: endpoint {
174						remote-endpoint = <&max9286_in2>;
175					};
176				};
177			};
178		};
179#endif
180
181#ifdef GMSL_CAMERA_3
182		i2c@3 {
183			status = "okay";
184
185			camera@54 {
186				compatible = GMSL_CAMERA_MODEL;
187				reg = <0x54>, <0x64>;
188
189				port {
190					fakra_con3: endpoint {
191						remote-endpoint = <&max9286_in3>;
192					};
193				};
194			};
195		};
196#endif
197	};
198};
199#endif /* ifdef GMSL_0 */
200
201#ifdef GMSL_1
202&vin4 {
203	status = "okay";
204};
205
206&vin5 {
207	status = "okay";
208};
209
210&vin6 {
211	status = "okay";
212};
213
214&vin7 {
215	status = "okay";
216};
217
218&gmsl1 {
219	status = "okay";
220
221#if defined(GMSL_CAMERA_RDACM21)
222	maxim,reverse-channel-microvolt = <100000>;
223#endif
224
225	ports {
226#ifdef GMSL_CAMERA_4
227		port@0 {
228			max9286_in4: endpoint {
229				remote-endpoint = <&fakra_con4>;
230			};
231		};
232#endif
233
234#ifdef GMSL_CAMERA_5
235		port@1 {
236			max9286_in5: endpoint {
237				remote-endpoint = <&fakra_con5>;
238			};
239
240		};
241#endif
242
243#ifdef GMSL_CAMERA_6
244		port@2 {
245			max9286_in6: endpoint {
246				remote-endpoint = <&fakra_con6>;
247			};
248
249		};
250#endif
251
252#ifdef GMSL_CAMERA_7
253		port@3 {
254			max9286_in7: endpoint {
255				remote-endpoint = <&fakra_con7>;
256			};
257
258		};
259#endif
260	};
261
262	i2c-mux {
263#ifdef GMSL_CAMERA_4
264		i2c@0 {
265			status = "okay";
266
267			camera@55 {
268				compatible = GMSL_CAMERA_MODEL;
269				reg = <0x55>, <0x65>;
270
271				port {
272					fakra_con4: endpoint {
273						remote-endpoint = <&max9286_in4>;
274					};
275				};
276			};
277		};
278#endif
279
280#ifdef GMSL_CAMERA_5
281		i2c@1 {
282			status = "okay";
283
284			camera@56 {
285				compatible = GMSL_CAMERA_MODEL;
286				reg = <0x56>, <0x66>;
287
288				port {
289					fakra_con5: endpoint {
290						remote-endpoint = <&max9286_in5>;
291					};
292				};
293			};
294		};
295#endif
296
297#ifdef GMSL_CAMERA_6
298		i2c@2 {
299			status = "okay";
300
301			camera@57 {
302				compatible = GMSL_CAMERA_MODEL;
303				reg = <0x57>, <0x67>;
304
305				port {
306					fakra_con6: endpoint {
307						remote-endpoint = <&max9286_in6>;
308					};
309				};
310			};
311		};
312#endif
313
314#ifdef GMSL_CAMERA_7
315		i2c@3 {
316			status = "okay";
317
318			camera@58 {
319				compatible = GMSL_CAMERA_MODEL;
320				reg = <0x58>, <0x68>;
321
322				port {
323					fakra_con7: endpoint {
324						remote-endpoint = <&max9286_in7>;
325					};
326				};
327			};
328		};
329#endif
330	};
331};
332#endif /* ifdef GMSL_1 */
~/ Read-only file preview.