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