Merge tag 'drm-next-2020-12-24' of git://anongit.freedesktop.org/drm/drm
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / media / renesas,vin.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 # Copyright (C) 2020 Renesas Electronics Corp.
3 %YAML 1.2
4 ---
5 $id: http://devicetree.org/schemas/media/renesas,vin.yaml#
6 $schema: http://devicetree.org/meta-schemas/core.yaml#
7
8 title: Renesas R-Car Video Input (VIN)
9
10 maintainers:
11   - Niklas Söderlund <niklas.soderlund@ragnatech.se>
12
13 description:
14   The R-Car Video Input (VIN) device provides video input capabilities for the
15   Renesas R-Car family of devices.
16
17   Each VIN instance has a single parallel input that supports RGB and YUV video,
18   with both external synchronization and BT.656 synchronization for the latter.
19   Depending on the instance the VIN input is connected to external SoC pins, or
20   on Gen3 and RZ/G2 platforms to a CSI-2 receiver.
21
22 properties:
23   compatible:
24     oneOf:
25       - items:
26           - enum:
27               - renesas,vin-r8a7742  # RZ/G1H
28               - renesas,vin-r8a7743  # RZ/G1M
29               - renesas,vin-r8a7744  # RZ/G1N
30               - renesas,vin-r8a7745  # RZ/G1E
31               - renesas,vin-r8a77470 # RZ/G1C
32               - renesas,vin-r8a7790  # R-Car H2
33               - renesas,vin-r8a7791  # R-Car M2-W
34               - renesas,vin-r8a7792  # R-Car V2H
35               - renesas,vin-r8a7793  # R-Car M2-N
36               - renesas,vin-r8a7794  # R-Car E2
37           - const: renesas,rcar-gen2-vin # Generic R-Car Gen2 or RZ/G1
38
39       - items:
40           - enum:
41               - renesas,vin-r8a774a1 # RZ/G2M
42               - renesas,vin-r8a774b1 # RZ/G2N
43               - renesas,vin-r8a774c0 # RZ/G2E
44               - renesas,vin-r8a774e1 # RZ/G2H
45               - renesas,vin-r8a7778  # R-Car M1
46               - renesas,vin-r8a7779  # R-Car H1
47               - renesas,vin-r8a7795  # R-Car H3
48               - renesas,vin-r8a7796  # R-Car M3-W
49               - renesas,vin-r8a77965 # R-Car M3-N
50               - renesas,vin-r8a77970 # R-Car V3M
51               - renesas,vin-r8a77980 # R-Car V3H
52               - renesas,vin-r8a77990 # R-Car E3
53               - renesas,vin-r8a77995 # R-Car D3
54
55   reg:
56     maxItems: 1
57
58   interrupts:
59     maxItems: 1
60
61   clocks:
62     maxItems: 1
63
64   power-domains:
65     maxItems: 1
66
67   resets:
68     maxItems: 1
69
70   #The per-board settings for Gen2 and RZ/G1 platforms:
71   port:
72     type: object
73     description:
74       A node containing a parallel input with a single endpoint definitions as
75       documented in
76       Documentation/devicetree/bindings/media/video-interfaces.txt
77
78     properties:
79       endpoint:
80         type: object
81
82         properties:
83           hsync-active:
84             description:
85               If both HSYNC and VSYNC polarities are not specified, embedded
86               synchronization is selected.
87             default: 1
88
89           vsync-active:
90             description:
91               If both HSYNC and VSYNC polarities are not specified, embedded
92               synchronization is selected.
93             default: 1
94
95           field-active-even: true
96
97           bus-width: true
98
99           data-shift: true
100
101           data-enable-active:
102             description: Polarity of CLKENB signal
103             default: 1
104
105           pclk-sample: true
106
107           data-active: true
108
109           remote-endpoint: true
110
111         required:
112           - remote-endpoint
113
114         additionalProperties: false
115
116     additionalProperties: false
117
118   #The per-board settings for Gen3 and RZ/G2 platforms:
119   renesas,id:
120     description: VIN channel number
121     $ref: /schemas/types.yaml#/definitions/uint32
122     minimum: 0
123     maximum: 15
124
125   ports:
126     type: object
127     description:
128       A node containing input nodes with endpoint definitions as documented in
129       Documentation/devicetree/bindings/media/video-interfaces.txt
130
131     properties:
132       port@0:
133         type: object
134         description:
135           Input port node, single endpoint describing a parallel input source.
136
137         properties:
138           reg:
139             const: 0
140
141           endpoint:
142             type: object
143
144             properties:
145               hsync-active:
146                 description:
147                   If both HSYNC and VSYNC polarities are not specified, embedded
148                   synchronization is selected.
149                 default: 1
150
151               vsync-active:
152                 description:
153                   If both HSYNC and VSYNC polarities are not specified, embedded
154                   synchronization is selected.
155                 default: 1
156
157               field-active-even: true
158
159               bus-width: true
160
161               data-shift: true
162
163               data-enable-active:
164                 description: Polarity of CLKENB signal
165                 default: 1
166
167               pclk-sample: true
168
169               data-active: true
170
171               remote-endpoint: true
172
173             required:
174               - remote-endpoint
175
176             additionalProperties: false
177
178         required:
179           - endpoint
180
181         additionalProperties: false
182
183       port@1:
184         type: object
185         description:
186           Input port node, multiple endpoints describing all the R-Car CSI-2
187           modules connected the VIN.
188
189         properties:
190           '#address-cells':
191             const: 1
192
193           '#size-cells':
194             const: 0
195
196           reg:
197             const: 1
198
199           endpoint@0:
200             type: object
201             description: Endpoint connected to CSI20.
202
203             properties:
204               reg:
205                 const: 0
206
207               remote-endpoint: true
208
209             required:
210               - reg
211               - remote-endpoint
212
213             additionalProperties: false
214
215           endpoint@1:
216             type: object
217             description: Endpoint connected to CSI21.
218
219             properties:
220               reg:
221                 const: 1
222
223               remote-endpoint: true
224
225             required:
226               - reg
227               - remote-endpoint
228
229             additionalProperties: false
230
231           endpoint@2:
232             type: object
233             description: Endpoint connected to CSI40.
234
235             properties:
236               reg:
237                 const: 2
238
239               remote-endpoint: true
240
241             required:
242               - reg
243               - remote-endpoint
244
245             additionalProperties: false
246
247           endpoint@3:
248             type: object
249             description: Endpoint connected to CSI41.
250
251             properties:
252               reg:
253                 const: 3
254
255               remote-endpoint: true
256
257             required:
258               - reg
259               - remote-endpoint
260
261             additionalProperties: false
262
263         anyOf:
264           - required:
265               - endpoint@0
266           - required:
267               - endpoint@1
268           - required:
269               - endpoint@2
270           - required:
271               - endpoint@3
272
273         additionalProperties: false
274
275 required:
276   - compatible
277   - reg
278   - interrupts
279   - clocks
280   - power-domains
281   - resets
282
283 if:
284   properties:
285     compatible:
286       contains:
287         enum:
288           - renesas,vin-r8a7778
289           - renesas,vin-r8a7779
290           - renesas,rcar-gen2-vin
291 then:
292   required:
293     - port
294 else:
295   required:
296     - renesas,id
297     - ports
298
299 additionalProperties: false
300
301 examples:
302   # Device node example for Gen2 platform
303   - |
304     #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
305     #include <dt-bindings/interrupt-controller/arm-gic.h>
306     #include <dt-bindings/power/r8a7790-sysc.h>
307
308     vin1: vin@e6ef1000 {
309             compatible = "renesas,vin-r8a7790",
310                          "renesas,rcar-gen2-vin";
311             reg = <0xe6ef1000 0x1000>;
312             interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
313             clocks = <&cpg CPG_MOD 810>;
314             power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
315             resets = <&cpg 810>;
316
317             port {
318                     vin1ep0: endpoint {
319                             remote-endpoint = <&adv7180>;
320                             bus-width = <8>;
321                     };
322             };
323     };
324
325   # Device node example for Gen3 platform with only CSI-2
326   - |
327     #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
328     #include <dt-bindings/interrupt-controller/arm-gic.h>
329     #include <dt-bindings/power/r8a7795-sysc.h>
330
331     vin0: video@e6ef0000 {
332             compatible = "renesas,vin-r8a7795";
333             reg = <0xe6ef0000 0x1000>;
334             interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
335             clocks = <&cpg CPG_MOD 811>;
336             power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
337             resets = <&cpg 811>;
338             renesas,id = <0>;
339
340             ports {
341                     #address-cells = <1>;
342                     #size-cells = <0>;
343
344                     port@1 {
345                             #address-cells = <1>;
346                             #size-cells = <0>;
347
348                             reg = <1>;
349
350                             vin0csi20: endpoint@0 {
351                                     reg = <0>;
352                                     remote-endpoint= <&csi20vin0>;
353                             };
354                             vin0csi40: endpoint@2 {
355                                     reg = <2>;
356                                     remote-endpoint= <&csi40vin0>;
357                             };
358                     };
359             };
360     };
361
362   # Device node example for Gen3 platform with CSI-2 and parallel
363   - |
364     #include <dt-bindings/clock/r8a77970-cpg-mssr.h>
365     #include <dt-bindings/interrupt-controller/arm-gic.h>
366     #include <dt-bindings/power/r8a77970-sysc.h>
367
368     vin2: video@e6ef2000 {
369             compatible = "renesas,vin-r8a77970";
370             reg = <0xe6ef2000 0x1000>;
371             interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
372             clocks = <&cpg CPG_MOD 809>;
373             power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
374             resets = <&cpg 809>;
375             renesas,id = <2>;
376
377             ports {
378                     #address-cells = <1>;
379                     #size-cells = <0>;
380
381                     port@0 {
382                             reg = <0>;
383
384                             vin2_in: endpoint {
385                                     remote-endpoint = <&adv7612_out>;
386                                     hsync-active = <0>;
387                                     vsync-active = <0>;
388                             };
389                     };
390
391                     port@1 {
392                             #address-cells = <1>;
393                             #size-cells = <0>;
394
395                             reg = <1>;
396
397                             vin2csi40: endpoint@2 {
398                                     reg = <2>;
399                                     remote-endpoint = <&csi40vin2>;
400                             };
401                     };
402             };
403     };