Skip to content

Commit 18f1290

Browse files
Laurent Pinchartmchehab
authored andcommitted
media: dt-bindings: media: i2c: Add bindings for Maxim Integrated MAX9286
The MAX9286 deserializes video data received on up to 4 Gigabit Multimedia Serial Links (GMSL) and outputs them on a CSI-2 port using up to 4 data lanes. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org> Signed-off-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
1 parent 8598912 commit 18f1290

File tree

1 file changed

+366
-0
lines changed

1 file changed

+366
-0
lines changed
Lines changed: 366 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,366 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
# Copyright (C) 2019 Renesas Electronics Corp.
3+
%YAML 1.2
4+
---
5+
$id: http://devicetree.org/schemas/media/i2c/maxim,max9286.yaml#
6+
$schema: http://devicetree.org/meta-schemas/core.yaml#
7+
8+
title: Maxim Integrated Quad GMSL Deserializer
9+
10+
maintainers:
11+
- Jacopo Mondi <jacopo+renesas@jmondi.org>
12+
- Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
13+
- Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
14+
- Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
15+
16+
description: |
17+
The MAX9286 deserializer receives video data on up to 4 Gigabit Multimedia
18+
Serial Links (GMSL) and outputs them on a CSI-2 D-PHY port using up to 4 data
19+
lanes.
20+
21+
In addition to video data, the GMSL links carry a bidirectional control
22+
channel that encapsulates I2C messages. The MAX9286 forwards all I2C traffic
23+
not addressed to itself to the other side of the links, where a GMSL
24+
serializer will output it on a local I2C bus. In the other direction all I2C
25+
traffic received over GMSL by the MAX9286 is output on the local I2C bus.
26+
27+
properties:
28+
'#address-cells':
29+
const: 1
30+
31+
'#size-cells':
32+
const: 0
33+
34+
compatible:
35+
const: maxim,max9286
36+
37+
reg:
38+
description: I2C device address
39+
maxItems: 1
40+
41+
poc-supply:
42+
description: Regulator providing Power over Coax to the cameras
43+
maxItems: 1
44+
45+
enable-gpios:
46+
description: GPIO connected to the \#PWDN pin with inverted polarity
47+
maxItems: 1
48+
49+
gpio-controller: true
50+
51+
'#gpio-cells':
52+
const: 2
53+
54+
ports:
55+
type: object
56+
description: |
57+
The connections to the MAX9286 GMSL and its endpoint nodes are modelled
58+
using the OF graph bindings in accordance with the video interface
59+
bindings defined in
60+
Documentation/devicetree/bindings/media/video-interfaces.txt.
61+
62+
The following table lists the port number corresponding to each device
63+
port.
64+
65+
Port Description
66+
----------------------------------------
67+
Port 0 GMSL Input 0
68+
Port 1 GMSL Input 1
69+
Port 2 GMSL Input 2
70+
Port 3 GMSL Input 3
71+
Port 4 CSI-2 Output
72+
73+
properties:
74+
'#address-cells':
75+
const: 1
76+
77+
'#size-cells':
78+
const: 0
79+
80+
port@[0-3]:
81+
type: object
82+
properties:
83+
reg:
84+
enum: [ 0, 1, 2, 3 ]
85+
86+
endpoint:
87+
type: object
88+
89+
properties:
90+
remote-endpoint:
91+
description: |
92+
phandle to the remote GMSL source endpoint subnode in the
93+
remote node port.
94+
95+
required:
96+
- remote-endpoint
97+
98+
required:
99+
- reg
100+
- endpoint
101+
102+
additionalProperties: false
103+
104+
port@4:
105+
type: object
106+
properties:
107+
reg:
108+
const: 4
109+
110+
endpoint:
111+
type: object
112+
113+
properties:
114+
remote-endpoint:
115+
description: phandle to the remote CSI-2 sink endpoint.
116+
117+
data-lanes:
118+
description: array of physical CSI-2 data lane indexes.
119+
120+
required:
121+
- remote-endpoint
122+
- data-lanes
123+
124+
required:
125+
- reg
126+
- endpoint
127+
128+
additionalProperties: false
129+
130+
required:
131+
- port@4
132+
133+
i2c-mux:
134+
type: object
135+
description: |
136+
Each GMSL link is modelled as a child bus of an i2c bus
137+
multiplexer/switch, in accordance with bindings described in
138+
Documentation/devicetree/bindings/i2c/i2c-mux.txt.
139+
140+
properties:
141+
'#address-cells':
142+
const: 1
143+
144+
'#size-cells':
145+
const: 0
146+
147+
patternProperties:
148+
"^i2c@[0-3]$":
149+
type: object
150+
description: |
151+
Child node of the i2c bus multiplexer which represents a GMSL link.
152+
Each serializer device on the GMSL link remote end is represented with
153+
an i2c-mux child node. The MAX9286 chip supports up to 4 GMSL
154+
channels.
155+
156+
properties:
157+
'#address-cells':
158+
const: 1
159+
160+
'#size-cells':
161+
const: 0
162+
163+
reg:
164+
description: The index of the GMSL channel.
165+
maxItems: 1
166+
167+
patternProperties:
168+
"^camera@[a-f0-9]+$":
169+
type: object
170+
description: |
171+
The remote camera device, composed by a GMSL serializer and a
172+
connected video source.
173+
174+
properties:
175+
compatible:
176+
description: The remote device compatible string.
177+
178+
reg:
179+
minItems: 2
180+
maxItems: 3
181+
description: |
182+
The I2C addresses to be assigned to the remote devices through
183+
address reprogramming. The number of entries depends on the
184+
requirements of the currently connected remote device.
185+
186+
port:
187+
type: object
188+
189+
properties:
190+
endpoint:
191+
type: object
192+
193+
properties:
194+
remote-endpoint:
195+
description: phandle to the MAX9286 sink endpoint.
196+
197+
required:
198+
- remote-endpoint
199+
200+
additionalProperties: false
201+
202+
required:
203+
- endpoint
204+
205+
additionalProperties: false
206+
207+
required:
208+
- compatible
209+
- reg
210+
- port
211+
212+
additionalProperties: false
213+
214+
additionalProperties: false
215+
216+
additionalProperties: false
217+
218+
required:
219+
- compatible
220+
- reg
221+
- ports
222+
- i2c-mux
223+
- gpio-controller
224+
225+
additionalProperties: false
226+
227+
examples:
228+
- |
229+
#include <dt-bindings/gpio/gpio.h>
230+
231+
i2c@e66d8000 {
232+
#address-cells = <1>;
233+
#size-cells = <0>;
234+
235+
reg = <0 0xe66d8000>;
236+
237+
gmsl-deserializer@2c {
238+
compatible = "maxim,max9286";
239+
reg = <0x2c>;
240+
poc-supply = <&camera_poc_12v>;
241+
enable-gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
242+
243+
gpio-controller;
244+
#gpio-cells = <2>;
245+
246+
ports {
247+
#address-cells = <1>;
248+
#size-cells = <0>;
249+
250+
port@0 {
251+
reg = <0>;
252+
253+
max9286_in0: endpoint {
254+
remote-endpoint = <&rdacm20_out0>;
255+
};
256+
};
257+
258+
port@1 {
259+
reg = <1>;
260+
261+
max9286_in1: endpoint {
262+
remote-endpoint = <&rdacm20_out1>;
263+
};
264+
};
265+
266+
port@2 {
267+
reg = <2>;
268+
269+
max9286_in2: endpoint {
270+
remote-endpoint = <&rdacm20_out2>;
271+
};
272+
};
273+
274+
port@3 {
275+
reg = <3>;
276+
277+
max9286_in3: endpoint {
278+
remote-endpoint = <&rdacm20_out3>;
279+
};
280+
};
281+
282+
port@4 {
283+
reg = <4>;
284+
285+
max9286_out: endpoint {
286+
data-lanes = <1 2 3 4>;
287+
remote-endpoint = <&csi40_in>;
288+
};
289+
};
290+
};
291+
292+
i2c-mux {
293+
#address-cells = <1>;
294+
#size-cells = <0>;
295+
296+
i2c@0 {
297+
#address-cells = <1>;
298+
#size-cells = <0>;
299+
reg = <0>;
300+
301+
camera@51 {
302+
compatible = "imi,rdacm20";
303+
reg = <0x51>, <0x61>;
304+
305+
port {
306+
rdacm20_out0: endpoint {
307+
remote-endpoint = <&max9286_in0>;
308+
};
309+
};
310+
311+
};
312+
};
313+
314+
i2c@1 {
315+
#address-cells = <1>;
316+
#size-cells = <0>;
317+
reg = <1>;
318+
319+
camera@52 {
320+
compatible = "imi,rdacm20";
321+
reg = <0x52>, <0x62>;
322+
323+
port {
324+
rdacm20_out1: endpoint {
325+
remote-endpoint = <&max9286_in1>;
326+
};
327+
};
328+
};
329+
};
330+
331+
i2c@2 {
332+
#address-cells = <1>;
333+
#size-cells = <0>;
334+
reg = <2>;
335+
336+
camera@53 {
337+
compatible = "imi,rdacm20";
338+
reg = <0x53>, <0x63>;
339+
340+
port {
341+
rdacm20_out2: endpoint {
342+
remote-endpoint = <&max9286_in2>;
343+
};
344+
};
345+
};
346+
};
347+
348+
i2c@3 {
349+
#address-cells = <1>;
350+
#size-cells = <0>;
351+
reg = <3>;
352+
353+
camera@54 {
354+
compatible = "imi,rdacm20";
355+
reg = <0x54>, <0x64>;
356+
357+
port {
358+
rdacm20_out3: endpoint {
359+
remote-endpoint = <&max9286_in3>;
360+
};
361+
};
362+
};
363+
};
364+
};
365+
};
366+
};

0 commit comments

Comments
 (0)