]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/blob - Documentation/devicetree/bindings/media/renesas,vin.yaml
ad2fe660364bd7ab2faa3fcd817bd6afe00f543b
[mirror_ubuntu-hirsute-kernel.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 };