Smack: Handle io_uring kernel thread privileges
[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     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     };