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