Merge commit '81fd23e2b3ccf71c807e671444e8accaba98ca53' of https://git.pengutronix...
[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-r8a77961 # R-Car M3-W+
50               - renesas,vin-r8a77965 # R-Car M3-N
51               - renesas,vin-r8a77970 # R-Car V3M
52               - renesas,vin-r8a77980 # R-Car V3H
53               - renesas,vin-r8a77990 # R-Car E3
54               - renesas,vin-r8a77995 # R-Car D3
55               - renesas,vin-r8a779a0 # R-Car V3U
56
57   reg:
58     maxItems: 1
59
60   interrupts:
61     maxItems: 1
62
63   clocks:
64     maxItems: 1
65
66   power-domains:
67     maxItems: 1
68
69   resets:
70     maxItems: 1
71
72   #The per-board settings for Gen2 and RZ/G1 platforms:
73   port:
74     $ref: /schemas/graph.yaml#/$defs/port-base
75     unevaluatedProperties: false
76     description:
77       A node containing a parallel input
78
79     properties:
80       endpoint:
81         $ref: video-interfaces.yaml#
82         unevaluatedProperties: false
83
84         properties:
85           hsync-active:
86             description:
87               If both HSYNC and VSYNC polarities are not specified, embedded
88               synchronization is selected.
89             default: 1
90
91           vsync-active:
92             description:
93               If both HSYNC and VSYNC polarities are not specified, embedded
94               synchronization is selected.
95             default: 1
96
97           field-active-even: true
98
99           bus-width: true
100
101           data-shift: true
102
103           data-enable-active:
104             description: Polarity of CLKENB signal
105             default: 1
106
107           pclk-sample: true
108
109           data-active: true
110
111   #The per-board settings for Gen3 and RZ/G2 platforms:
112   renesas,id:
113     description: VIN channel number
114     $ref: /schemas/types.yaml#/definitions/uint32
115     minimum: 0
116     maximum: 31
117
118   ports:
119     $ref: /schemas/graph.yaml#/properties/ports
120
121     properties:
122       port@0:
123         $ref: /schemas/graph.yaml#/$defs/port-base
124         unevaluatedProperties: false
125         description:
126           Input port node, single endpoint describing a parallel input source.
127
128         properties:
129           endpoint:
130             $ref: video-interfaces.yaml#
131             unevaluatedProperties: false
132
133             properties:
134               hsync-active:
135                 description:
136                   If both HSYNC and VSYNC polarities are not specified, embedded
137                   synchronization is selected.
138                 default: 1
139
140               vsync-active:
141                 description:
142                   If both HSYNC and VSYNC polarities are not specified, embedded
143                   synchronization is selected.
144                 default: 1
145
146               field-active-even: true
147
148               bus-width: true
149
150               data-shift: true
151
152               data-enable-active:
153                 description: Polarity of CLKENB signal
154                 default: 1
155
156               pclk-sample: true
157
158               data-active: true
159
160       port@1:
161         $ref: /schemas/graph.yaml#/properties/port
162         description:
163           Input port node, multiple endpoints describing all the R-Car CSI-2
164           modules connected the VIN.
165
166         properties:
167           endpoint@0:
168             $ref: /schemas/graph.yaml#/properties/endpoint
169             description: Endpoint connected to CSI20.
170
171           endpoint@1:
172             $ref: /schemas/graph.yaml#/properties/endpoint
173             description: Endpoint connected to CSI21.
174
175           endpoint@2:
176             $ref: /schemas/graph.yaml#/properties/endpoint
177             description: Endpoint connected to CSI40.
178
179           endpoint@3:
180             $ref: /schemas/graph.yaml#/properties/endpoint
181             description: Endpoint connected to CSI41.
182
183         anyOf:
184           - required:
185               - endpoint@0
186           - required:
187               - endpoint@1
188           - required:
189               - endpoint@2
190           - required:
191               - endpoint@3
192
193       port@2:
194         $ref: /schemas/graph.yaml#/properties/port
195         description:
196           Input port node, multiple endpoints describing all the R-Car ISP
197           modules connected the VIN.
198
199         properties:
200           endpoint@0:
201             $ref: /schemas/graph.yaml#/properties/endpoint
202             description: Endpoint connected to ISP0.
203
204           endpoint@1:
205             $ref: /schemas/graph.yaml#/properties/endpoint
206             description: Endpoint connected to ISP1.
207
208           endpoint@2:
209             $ref: /schemas/graph.yaml#/properties/endpoint
210             description: Endpoint connected to ISP2.
211
212           endpoint@3:
213             $ref: /schemas/graph.yaml#/properties/endpoint
214             description: Endpoint connected to ISP3.
215
216 required:
217   - compatible
218   - reg
219   - interrupts
220   - clocks
221   - power-domains
222
223 allOf:
224   - if:
225       not:
226         properties:
227           compatible:
228             contains:
229               enum:
230                 - renesas,vin-r8a7778
231                 - renesas,vin-r8a7779
232     then:
233       required:
234         - resets
235
236   - if:
237       properties:
238         compatible:
239           contains:
240             enum:
241               - renesas,vin-r8a7778
242               - renesas,vin-r8a7779
243               - renesas,rcar-gen2-vin
244     then:
245       required:
246         - port
247     else:
248       required:
249         - renesas,id
250         - ports
251
252 additionalProperties: false
253
254 examples:
255   # Device node example for Gen2 platform
256   - |
257     #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
258     #include <dt-bindings/interrupt-controller/arm-gic.h>
259     #include <dt-bindings/power/r8a7790-sysc.h>
260
261     vin1: vin@e6ef1000 {
262             compatible = "renesas,vin-r8a7790",
263                          "renesas,rcar-gen2-vin";
264             reg = <0xe6ef1000 0x1000>;
265             interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
266             clocks = <&cpg CPG_MOD 810>;
267             power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
268             resets = <&cpg 810>;
269
270             port {
271                     vin1ep0: endpoint {
272                             remote-endpoint = <&adv7180>;
273                             bus-width = <8>;
274                     };
275             };
276     };
277
278   # Device node example for Gen3 platform with only CSI-2
279   - |
280     #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
281     #include <dt-bindings/interrupt-controller/arm-gic.h>
282     #include <dt-bindings/power/r8a7795-sysc.h>
283
284     vin0: video@e6ef0000 {
285             compatible = "renesas,vin-r8a7795";
286             reg = <0xe6ef0000 0x1000>;
287             interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
288             clocks = <&cpg CPG_MOD 811>;
289             power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
290             resets = <&cpg 811>;
291             renesas,id = <0>;
292
293             ports {
294                     #address-cells = <1>;
295                     #size-cells = <0>;
296
297                     port@1 {
298                             #address-cells = <1>;
299                             #size-cells = <0>;
300
301                             reg = <1>;
302
303                             vin0csi20: endpoint@0 {
304                                     reg = <0>;
305                                     remote-endpoint= <&csi20vin0>;
306                             };
307                             vin0csi40: endpoint@2 {
308                                     reg = <2>;
309                                     remote-endpoint= <&csi40vin0>;
310                             };
311                     };
312             };
313     };
314
315   # Device node example for Gen3 platform with CSI-2 and parallel
316   - |
317     #include <dt-bindings/clock/r8a77970-cpg-mssr.h>
318     #include <dt-bindings/interrupt-controller/arm-gic.h>
319     #include <dt-bindings/power/r8a77970-sysc.h>
320
321     vin2: video@e6ef2000 {
322             compatible = "renesas,vin-r8a77970";
323             reg = <0xe6ef2000 0x1000>;
324             interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
325             clocks = <&cpg CPG_MOD 809>;
326             power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
327             resets = <&cpg 809>;
328             renesas,id = <2>;
329
330             ports {
331                     #address-cells = <1>;
332                     #size-cells = <0>;
333
334                     port@0 {
335                             reg = <0>;
336
337                             vin2_in: endpoint {
338                                     remote-endpoint = <&adv7612_out>;
339                                     hsync-active = <0>;
340                                     vsync-active = <0>;
341                             };
342                     };
343
344                     port@1 {
345                             #address-cells = <1>;
346                             #size-cells = <0>;
347
348                             reg = <1>;
349
350                             vin2csi40: endpoint@2 {
351                                     reg = <2>;
352                                     remote-endpoint = <&csi40vin2>;
353                             };
354                     };
355             };
356     };