Merge branch 'kvm-fix-svm-races' into HEAD
[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     $ref: /schemas/graph.yaml#/$defs/port-base
73     unevaluatedProperties: false
74     description:
75       A node containing a parallel input
76
77     properties:
78       endpoint:
79         $ref: video-interfaces.yaml#
80         unevaluatedProperties: false
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   #The per-board settings for Gen3 and RZ/G2 platforms:
110   renesas,id:
111     description: VIN channel number
112     $ref: /schemas/types.yaml#/definitions/uint32
113     minimum: 0
114     maximum: 15
115
116   ports:
117     $ref: /schemas/graph.yaml#/properties/ports
118
119     properties:
120       port@0:
121         $ref: /schemas/graph.yaml#/properties/port
122         description:
123           Input port node, single endpoint describing a parallel input source.
124
125         properties:
126           endpoint:
127             $ref: video-interfaces.yaml#
128             unevaluatedProperties: false
129
130             properties:
131               hsync-active:
132                 description:
133                   If both HSYNC and VSYNC polarities are not specified, embedded
134                   synchronization is selected.
135                 default: 1
136
137               vsync-active:
138                 description:
139                   If both HSYNC and VSYNC polarities are not specified, embedded
140                   synchronization is selected.
141                 default: 1
142
143               field-active-even: true
144
145               bus-width: true
146
147               data-shift: true
148
149               data-enable-active:
150                 description: Polarity of CLKENB signal
151                 default: 1
152
153               pclk-sample: true
154
155               data-active: true
156
157       port@1:
158         $ref: /schemas/graph.yaml#/properties/port
159         description:
160           Input port node, multiple endpoints describing all the R-Car CSI-2
161           modules connected the VIN.
162
163         properties:
164           endpoint@0:
165             $ref: /schemas/graph.yaml#/properties/endpoint
166             description: Endpoint connected to CSI20.
167
168           endpoint@1:
169             $ref: /schemas/graph.yaml#/properties/endpoint
170             description: Endpoint connected to CSI21.
171
172           endpoint@2:
173             $ref: /schemas/graph.yaml#/properties/endpoint
174             description: Endpoint connected to CSI40.
175
176           endpoint@3:
177             $ref: /schemas/graph.yaml#/properties/endpoint
178             description: Endpoint connected to CSI41.
179
180         anyOf:
181           - required:
182               - endpoint@0
183           - required:
184               - endpoint@1
185           - required:
186               - endpoint@2
187           - required:
188               - endpoint@3
189
190 required:
191   - compatible
192   - reg
193   - interrupts
194   - clocks
195   - power-domains
196   - resets
197
198 if:
199   properties:
200     compatible:
201       contains:
202         enum:
203           - renesas,vin-r8a7778
204           - renesas,vin-r8a7779
205           - renesas,rcar-gen2-vin
206 then:
207   required:
208     - port
209 else:
210   required:
211     - renesas,id
212     - ports
213
214 additionalProperties: false
215
216 examples:
217   # Device node example for Gen2 platform
218   - |
219     #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
220     #include <dt-bindings/interrupt-controller/arm-gic.h>
221     #include <dt-bindings/power/r8a7790-sysc.h>
222
223     vin1: vin@e6ef1000 {
224             compatible = "renesas,vin-r8a7790",
225                          "renesas,rcar-gen2-vin";
226             reg = <0xe6ef1000 0x1000>;
227             interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
228             clocks = <&cpg CPG_MOD 810>;
229             power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
230             resets = <&cpg 810>;
231
232             port {
233                     vin1ep0: endpoint {
234                             remote-endpoint = <&adv7180>;
235                             bus-width = <8>;
236                     };
237             };
238     };
239
240   # Device node example for Gen3 platform with only CSI-2
241   - |
242     #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
243     #include <dt-bindings/interrupt-controller/arm-gic.h>
244     #include <dt-bindings/power/r8a7795-sysc.h>
245
246     vin0: video@e6ef0000 {
247             compatible = "renesas,vin-r8a7795";
248             reg = <0xe6ef0000 0x1000>;
249             interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
250             clocks = <&cpg CPG_MOD 811>;
251             power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
252             resets = <&cpg 811>;
253             renesas,id = <0>;
254
255             ports {
256                     #address-cells = <1>;
257                     #size-cells = <0>;
258
259                     port@1 {
260                             #address-cells = <1>;
261                             #size-cells = <0>;
262
263                             reg = <1>;
264
265                             vin0csi20: endpoint@0 {
266                                     reg = <0>;
267                                     remote-endpoint= <&csi20vin0>;
268                             };
269                             vin0csi40: endpoint@2 {
270                                     reg = <2>;
271                                     remote-endpoint= <&csi40vin0>;
272                             };
273                     };
274             };
275     };
276
277   # Device node example for Gen3 platform with CSI-2 and parallel
278   - |
279     #include <dt-bindings/clock/r8a77970-cpg-mssr.h>
280     #include <dt-bindings/interrupt-controller/arm-gic.h>
281     #include <dt-bindings/power/r8a77970-sysc.h>
282
283     vin2: video@e6ef2000 {
284             compatible = "renesas,vin-r8a77970";
285             reg = <0xe6ef2000 0x1000>;
286             interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
287             clocks = <&cpg CPG_MOD 809>;
288             power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
289             resets = <&cpg 809>;
290             renesas,id = <2>;
291
292             ports {
293                     #address-cells = <1>;
294                     #size-cells = <0>;
295
296                     port@0 {
297                             reg = <0>;
298
299                             vin2_in: endpoint {
300                                     remote-endpoint = <&adv7612_out>;
301                                     hsync-active = <0>;
302                                     vsync-active = <0>;
303                             };
304                     };
305
306                     port@1 {
307                             #address-cells = <1>;
308                             #size-cells = <0>;
309
310                             reg = <1>;
311
312                             vin2csi40: endpoint@2 {
313                                     reg = <2>;
314                                     remote-endpoint = <&csi40vin2>;
315                             };
316                     };
317             };
318     };