Merge tag 'Smack-for-5.11-io_uring-fix' of git://github.com/cschaufler/smack-next
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / media / i2c / maxim,max9286.yaml
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
44   enable-gpios:
45     description: GPIO connected to the \#PWDN pin with inverted polarity
46     maxItems: 1
47
48   gpio-controller: true
49
50   '#gpio-cells':
51     const: 2
52
53   ports:
54     type: object
55     description: |
56       The connections to the MAX9286 GMSL and its endpoint nodes are modelled
57       using the OF graph bindings in accordance with the video interface
58       bindings defined in
59       Documentation/devicetree/bindings/media/video-interfaces.txt.
60
61       The following table lists the port number corresponding to each device
62       port.
63
64         Port            Description
65         ----------------------------------------
66         Port 0          GMSL Input 0
67         Port 1          GMSL Input 1
68         Port 2          GMSL Input 2
69         Port 3          GMSL Input 3
70         Port 4          CSI-2 Output
71
72     properties:
73       '#address-cells':
74         const: 1
75
76       '#size-cells':
77         const: 0
78
79       port@[0-3]:
80         type: object
81         properties:
82           reg:
83             enum: [ 0, 1, 2, 3 ]
84
85           endpoint:
86             type: object
87
88             properties:
89               remote-endpoint:
90                 description: |
91                  phandle to the remote GMSL source endpoint subnode in the
92                  remote node port.
93
94             required:
95               - remote-endpoint
96
97         required:
98           - reg
99           - endpoint
100
101         additionalProperties: false
102
103       port@4:
104         type: object
105         properties:
106           reg:
107             const: 4
108
109           endpoint:
110             type: object
111
112             properties:
113               remote-endpoint:
114                 description: phandle to the remote CSI-2 sink endpoint.
115
116               data-lanes:
117                 description: array of physical CSI-2 data lane indexes.
118
119             required:
120               - remote-endpoint
121               - data-lanes
122
123         required:
124           - reg
125           - endpoint
126
127         additionalProperties: false
128
129     required:
130       - port@4
131
132   i2c-mux:
133     type: object
134     description: |
135       Each GMSL link is modelled as a child bus of an i2c bus
136       multiplexer/switch, in accordance with bindings described in
137       Documentation/devicetree/bindings/i2c/i2c-mux.txt.
138
139     properties:
140       '#address-cells':
141         const: 1
142
143       '#size-cells':
144         const: 0
145
146     patternProperties:
147       "^i2c@[0-3]$":
148         type: object
149         description: |
150           Child node of the i2c bus multiplexer which represents a GMSL link.
151           Each serializer device on the GMSL link remote end is represented with
152           an i2c-mux child node. The MAX9286 chip supports up to 4 GMSL
153           channels.
154
155         properties:
156           '#address-cells':
157             const: 1
158
159           '#size-cells':
160             const: 0
161
162           reg:
163             description: The index of the GMSL channel.
164             maxItems: 1
165
166         patternProperties:
167           "^camera@[a-f0-9]+$":
168             type: object
169             description: |
170               The remote camera device, composed by a GMSL serializer and a
171               connected video source.
172
173             properties:
174               compatible:
175                 description: The remote device compatible string.
176
177               reg:
178                 minItems: 2
179                 maxItems: 3
180                 description: |
181                   The I2C addresses to be assigned to the remote devices through
182                   address reprogramming. The number of entries depends on the
183                   requirements of the currently connected remote device.
184
185               port:
186                 type: object
187
188                 properties:
189                   endpoint:
190                     type: object
191
192                     properties:
193                       remote-endpoint:
194                         description: phandle to the MAX9286 sink endpoint.
195
196                     required:
197                       - remote-endpoint
198
199                     additionalProperties: false
200
201                 required:
202                   - endpoint
203
204                 additionalProperties: false
205
206             required:
207               - compatible
208               - reg
209               - port
210
211             additionalProperties: false
212
213         additionalProperties: false
214
215     additionalProperties: false
216
217 required:
218   - compatible
219   - reg
220   - ports
221   - i2c-mux
222   - gpio-controller
223
224 additionalProperties: false
225
226 examples:
227   - |
228     #include <dt-bindings/gpio/gpio.h>
229
230     i2c@e66d8000 {
231       #address-cells = <1>;
232       #size-cells = <0>;
233
234       reg = <0 0xe66d8000>;
235
236       gmsl-deserializer@2c {
237         compatible = "maxim,max9286";
238         reg = <0x2c>;
239         poc-supply = <&camera_poc_12v>;
240         enable-gpios = <&gpio 13 GPIO_ACTIVE_HIGH>;
241
242         gpio-controller;
243         #gpio-cells = <2>;
244
245         ports {
246           #address-cells = <1>;
247           #size-cells = <0>;
248
249           port@0 {
250             reg = <0>;
251
252             max9286_in0: endpoint {
253               remote-endpoint = <&rdacm20_out0>;
254             };
255           };
256
257           port@1 {
258             reg = <1>;
259
260             max9286_in1: endpoint {
261               remote-endpoint = <&rdacm20_out1>;
262             };
263           };
264
265           port@2 {
266             reg = <2>;
267
268             max9286_in2: endpoint {
269               remote-endpoint = <&rdacm20_out2>;
270             };
271           };
272
273           port@3 {
274             reg = <3>;
275
276             max9286_in3: endpoint {
277               remote-endpoint = <&rdacm20_out3>;
278             };
279           };
280
281           port@4 {
282             reg = <4>;
283
284             max9286_out: endpoint {
285               data-lanes = <1 2 3 4>;
286               remote-endpoint = <&csi40_in>;
287             };
288           };
289         };
290
291         i2c-mux {
292           #address-cells = <1>;
293           #size-cells = <0>;
294
295           i2c@0 {
296             #address-cells = <1>;
297             #size-cells = <0>;
298             reg = <0>;
299
300             camera@51 {
301               compatible = "imi,rdacm20";
302               reg = <0x51>, <0x61>;
303
304               port {
305                 rdacm20_out0: endpoint {
306                   remote-endpoint = <&max9286_in0>;
307                 };
308               };
309
310             };
311           };
312
313           i2c@1 {
314             #address-cells = <1>;
315             #size-cells = <0>;
316             reg = <1>;
317
318             camera@52 {
319               compatible = "imi,rdacm20";
320               reg = <0x52>, <0x62>;
321
322               port {
323                 rdacm20_out1: endpoint {
324                   remote-endpoint = <&max9286_in1>;
325                 };
326               };
327             };
328           };
329
330           i2c@2 {
331             #address-cells = <1>;
332             #size-cells = <0>;
333             reg = <2>;
334
335             camera@53 {
336               compatible = "imi,rdacm20";
337               reg = <0x53>, <0x63>;
338
339               port {
340                 rdacm20_out2: endpoint {
341                   remote-endpoint = <&max9286_in2>;
342                 };
343               };
344             };
345           };
346
347           i2c@3 {
348             #address-cells = <1>;
349             #size-cells = <0>;
350             reg = <3>;
351
352             camera@54 {
353               compatible = "imi,rdacm20";
354               reg = <0x54>, <0x64>;
355
356               port {
357                 rdacm20_out3: endpoint {
358                   remote-endpoint = <&max9286_in3>;
359                 };
360               };
361             };
362           };
363         };
364       };
365     };