Merge branch 'rework/fixup-for-5.15' into for-linus
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / display / renesas,du.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/display/renesas,du.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Renesas R-Car Display Unit (DU)
8
9 maintainers:
10   - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
11
12 description: |
13   These DT bindings describe the Display Unit embedded in the Renesas R-Car
14   Gen1, R-Car Gen2, R-Car Gen3, RZ/G1 and RZ/G2 SoCs.
15
16 properties:
17   compatible:
18     enum:
19       - renesas,du-r8a7742 # for RZ/G1H compatible DU
20       - renesas,du-r8a7743 # for RZ/G1M compatible DU
21       - renesas,du-r8a7744 # for RZ/G1N compatible DU
22       - renesas,du-r8a7745 # for RZ/G1E compatible DU
23       - renesas,du-r8a77470 # for RZ/G1C compatible DU
24       - renesas,du-r8a774a1 # for RZ/G2M compatible DU
25       - renesas,du-r8a774b1 # for RZ/G2N compatible DU
26       - renesas,du-r8a774c0 # for RZ/G2E compatible DU
27       - renesas,du-r8a774e1 # for RZ/G2H compatible DU
28       - renesas,du-r8a7779 # for R-Car H1 compatible DU
29       - renesas,du-r8a7790 # for R-Car H2 compatible DU
30       - renesas,du-r8a7791 # for R-Car M2-W compatible DU
31       - renesas,du-r8a7792 # for R-Car V2H compatible DU
32       - renesas,du-r8a7793 # for R-Car M2-N compatible DU
33       - renesas,du-r8a7794 # for R-Car E2 compatible DU
34       - renesas,du-r8a7795 # for R-Car H3 compatible DU
35       - renesas,du-r8a7796 # for R-Car M3-W compatible DU
36       - renesas,du-r8a77961 # for R-Car M3-W+ compatible DU
37       - renesas,du-r8a77965 # for R-Car M3-N compatible DU
38       - renesas,du-r8a77970 # for R-Car V3M compatible DU
39       - renesas,du-r8a77980 # for R-Car V3H compatible DU
40       - renesas,du-r8a77990 # for R-Car E3 compatible DU
41       - renesas,du-r8a77995 # for R-Car D3 compatible DU
42
43   reg:
44     maxItems: 1
45
46   # See compatible-specific constraints below.
47   clocks: true
48   clock-names: true
49   interrupts:
50     description: Interrupt specifiers, one per DU channel
51   resets: true
52   reset-names: true
53
54   power-domains:
55     maxItems: 1
56
57   ports:
58     $ref: /schemas/graph.yaml#/properties/ports
59     description: |
60       The connections to the DU output video ports are modeled using the OF
61       graph bindings specified in Documentation/devicetree/bindings/graph.txt.
62       The number of ports and their assignment are model-dependent. Each port
63       shall have a single endpoint.
64
65     patternProperties:
66       "^port@[0-3]$":
67         $ref: /schemas/graph.yaml#/properties/port
68         unevaluatedProperties: false
69
70     required:
71       - port@0
72       - port@1
73
74     unevaluatedProperties: false
75
76   renesas,cmms:
77     $ref: "/schemas/types.yaml#/definitions/phandle-array"
78     description:
79       A list of phandles to the CMM instances present in the SoC, one for each
80       available DU channel.
81
82   renesas,vsps:
83     $ref: "/schemas/types.yaml#/definitions/phandle-array"
84     description:
85       A list of phandle and channel index tuples to the VSPs that handle the
86       memory interfaces for the DU channels. The phandle identifies the VSP
87       instance that serves the DU channel, and the channel index identifies
88       the LIF instance in that VSP.
89
90 required:
91   - compatible
92   - reg
93   - clocks
94   - interrupts
95   - resets
96   - ports
97
98 allOf:
99   - if:
100       properties:
101         compatible:
102           contains:
103             const: renesas,du-r8a7779
104     then:
105       properties:
106         clocks:
107           minItems: 1
108           maxItems: 3
109           items:
110             - description: Functional clock
111             - description: DU_DOTCLKIN0 input clock
112             - description: DU_DOTCLKIN1 input clock
113
114         clock-names:
115           minItems: 1
116           maxItems: 3
117           items:
118             - const: du.0
119             - pattern: '^dclkin\.[01]$'
120             - pattern: '^dclkin\.[01]$'
121
122         interrupts:
123           maxItems: 1
124
125         resets:
126           maxItems: 1
127
128         ports:
129           properties:
130             port@0:
131               description: DPAD 0
132             port@1:
133               description: DPAD 1
134             # port@2 is TCON, not supported yet
135             port@2: false
136             port@3: false
137
138           required:
139             - port@0
140             - port@1
141
142       required:
143         - interrupts
144
145   - if:
146       properties:
147         compatible:
148           contains:
149             enum:
150               - renesas,du-r8a7743
151               - renesas,du-r8a7744
152               - renesas,du-r8a7791
153               - renesas,du-r8a7793
154     then:
155       properties:
156         clocks:
157           minItems: 2
158           maxItems: 4
159           items:
160             - description: Functional clock for DU0
161             - description: Functional clock for DU1
162             - description: DU_DOTCLKIN0 input clock
163             - description: DU_DOTCLKIN1 input clock
164
165         clock-names:
166           minItems: 2
167           maxItems: 4
168           items:
169             - const: du.0
170             - const: du.1
171             - pattern: '^dclkin\.[01]$'
172             - pattern: '^dclkin\.[01]$'
173
174         interrupts:
175           maxItems: 2
176
177         resets:
178           maxItems: 1
179
180         reset-names:
181           items:
182             - const: du.0
183
184         ports:
185           properties:
186             port@0:
187               description: DPAD 0
188             port@1:
189               description: LVDS 0
190             # port@2 is TCON, not supported yet
191             port@2: false
192             port@3: false
193
194           required:
195             - port@0
196             - port@1
197
198       required:
199         - clock-names
200         - interrupts
201         - resets
202         - reset-names
203
204   - if:
205       properties:
206         compatible:
207           contains:
208             enum:
209               - renesas,du-r8a7745
210               - renesas,du-r8a7792
211     then:
212       properties:
213         clocks:
214           minItems: 2
215           maxItems: 4
216           items:
217             - description: Functional clock for DU0
218             - description: Functional clock for DU1
219             - description: DU_DOTCLKIN0 input clock
220             - description: DU_DOTCLKIN1 input clock
221
222         clock-names:
223           minItems: 2
224           maxItems: 4
225           items:
226             - const: du.0
227             - const: du.1
228             - pattern: '^dclkin\.[01]$'
229             - pattern: '^dclkin\.[01]$'
230
231         interrupts:
232           maxItems: 2
233
234         resets:
235           maxItems: 1
236
237         reset-names:
238           items:
239             - const: du.0
240
241         ports:
242           properties:
243             port@0:
244               description: DPAD 0
245             port@1:
246               description: DPAD 1
247             port@2: false
248             port@3: false
249
250           required:
251             - port@0
252             - port@1
253
254       required:
255         - clock-names
256         - interrupts
257         - resets
258         - reset-names
259
260   - if:
261       properties:
262         compatible:
263           contains:
264             enum:
265               - renesas,du-r8a7794
266     then:
267       properties:
268         clocks:
269           minItems: 2
270           maxItems: 4
271           items:
272             - description: Functional clock for DU0
273             - description: Functional clock for DU1
274             - description: DU_DOTCLKIN0 input clock
275             - description: DU_DOTCLKIN1 input clock
276
277         clock-names:
278           minItems: 2
279           maxItems: 4
280           items:
281             - const: du.0
282             - const: du.1
283             - pattern: '^dclkin\.[01]$'
284             - pattern: '^dclkin\.[01]$'
285
286         interrupts:
287           maxItems: 2
288
289         resets:
290           maxItems: 1
291
292         reset-names:
293           items:
294             - const: du.0
295
296         ports:
297           properties:
298             port@0:
299               description: DPAD 0
300             port@1:
301               description: DPAD 1
302             # port@2 is TCON, not supported yet
303             port@2: false
304             port@3: false
305
306           required:
307             - port@0
308             - port@1
309
310       required:
311         - clock-names
312         - interrupts
313         - resets
314         - reset-names
315
316   - if:
317       properties:
318         compatible:
319           contains:
320             enum:
321               - renesas,du-r8a77470
322     then:
323       properties:
324         clocks:
325           minItems: 2
326           maxItems: 4
327           items:
328             - description: Functional clock for DU0
329             - description: Functional clock for DU1
330             - description: DU_DOTCLKIN0 input clock
331             - description: DU_DOTCLKIN1 input clock
332
333         clock-names:
334           minItems: 2
335           maxItems: 4
336           items:
337             - const: du.0
338             - const: du.1
339             - pattern: '^dclkin\.[01]$'
340             - pattern: '^dclkin\.[01]$'
341
342         interrupts:
343           maxItems: 2
344
345         resets:
346           maxItems: 1
347
348         reset-names:
349           items:
350             - const: du.0
351
352         ports:
353           properties:
354             port@0:
355               description: DPAD 0
356             port@1:
357               description: DPAD 1
358             port@2:
359               description: LVDS 0
360             # port@3 is DVENC, not supported yet
361             port@3: false
362
363           required:
364             - port@0
365             - port@1
366             - port@2
367
368       required:
369         - clock-names
370         - interrupts
371         - resets
372         - reset-names
373
374   - if:
375       properties:
376         compatible:
377           contains:
378             enum:
379               - renesas,du-r8a7742
380               - renesas,du-r8a7790
381     then:
382       properties:
383         clocks:
384           minItems: 3
385           maxItems: 6
386           items:
387             - description: Functional clock for DU0
388             - description: Functional clock for DU1
389             - description: Functional clock for DU2
390             - description: DU_DOTCLKIN0 input clock
391             - description: DU_DOTCLKIN1 input clock
392             - description: DU_DOTCLKIN2 input clock
393
394         clock-names:
395           minItems: 3
396           maxItems: 6
397           items:
398             - const: du.0
399             - const: du.1
400             - const: du.2
401             - pattern: '^dclkin\.[012]$'
402             - pattern: '^dclkin\.[012]$'
403             - pattern: '^dclkin\.[012]$'
404
405         interrupts:
406           maxItems: 3
407
408         resets:
409           maxItems: 1
410
411         reset-names:
412           items:
413             - const: du.0
414
415         ports:
416           properties:
417             port@0:
418               description: DPAD 0
419             port@1:
420               description: LVDS 0
421             port@2:
422               description: LVDS 1
423             # port@3 is TCON, not supported yet
424             port@3: false
425
426           required:
427             - port@0
428             - port@1
429             - port@2
430
431       required:
432         - clock-names
433         - interrupts
434         - resets
435         - reset-names
436
437   - if:
438       properties:
439         compatible:
440           contains:
441             enum:
442               - renesas,du-r8a7795
443     then:
444       properties:
445         clocks:
446           minItems: 4
447           maxItems: 8
448           items:
449             - description: Functional clock for DU0
450             - description: Functional clock for DU1
451             - description: Functional clock for DU2
452             - description: Functional clock for DU4
453             - description: DU_DOTCLKIN0 input clock
454             - description: DU_DOTCLKIN1 input clock
455             - description: DU_DOTCLKIN2 input clock
456             - description: DU_DOTCLKIN3 input clock
457
458         clock-names:
459           minItems: 4
460           maxItems: 8
461           items:
462             - const: du.0
463             - const: du.1
464             - const: du.2
465             - const: du.3
466             - pattern: '^dclkin\.[0123]$'
467             - pattern: '^dclkin\.[0123]$'
468             - pattern: '^dclkin\.[0123]$'
469             - pattern: '^dclkin\.[0123]$'
470
471         interrupts:
472           maxItems: 4
473
474         resets:
475           maxItems: 2
476
477         reset-names:
478           items:
479             - const: du.0
480             - const: du.2
481
482         ports:
483           properties:
484             port@0:
485               description: DPAD 0
486             port@1:
487               description: HDMI 0
488             port@2:
489               description: HDMI 1
490             port@3:
491               description: LVDS 0
492
493           required:
494             - port@0
495             - port@1
496             - port@2
497             - port@3
498
499         renesas,cmms:
500           minItems: 4
501
502         renesas,vsps:
503           minItems: 4
504
505       required:
506         - clock-names
507         - interrupts
508         - resets
509         - reset-names
510         - renesas,vsps
511
512   - if:
513       properties:
514         compatible:
515           contains:
516             enum:
517               - renesas,du-r8a774a1
518               - renesas,du-r8a7796
519               - renesas,du-r8a77961
520     then:
521       properties:
522         clocks:
523           minItems: 3
524           maxItems: 6
525           items:
526             - description: Functional clock for DU0
527             - description: Functional clock for DU1
528             - description: Functional clock for DU2
529             - description: DU_DOTCLKIN0 input clock
530             - description: DU_DOTCLKIN1 input clock
531             - description: DU_DOTCLKIN2 input clock
532
533         clock-names:
534           minItems: 3
535           maxItems: 6
536           items:
537             - const: du.0
538             - const: du.1
539             - const: du.2
540             - pattern: '^dclkin\.[012]$'
541             - pattern: '^dclkin\.[012]$'
542             - pattern: '^dclkin\.[012]$'
543
544         interrupts:
545           maxItems: 3
546
547         resets:
548           maxItems: 2
549
550         reset-names:
551           items:
552             - const: du.0
553             - const: du.2
554
555         ports:
556           properties:
557             port@0:
558               description: DPAD 0
559             port@1:
560               description: HDMI 0
561             port@2:
562               description: LVDS 0
563             port@3: false
564
565           required:
566             - port@0
567             - port@1
568             - port@2
569
570         renesas,cmms:
571           minItems: 3
572
573         renesas,vsps:
574           minItems: 3
575
576       required:
577         - clock-names
578         - interrupts
579         - resets
580         - reset-names
581         - renesas,vsps
582
583   - if:
584       properties:
585         compatible:
586           contains:
587             enum:
588               - renesas,du-r8a774b1
589               - renesas,du-r8a774e1
590               - renesas,du-r8a77965
591     then:
592       properties:
593         clocks:
594           minItems: 3
595           maxItems: 6
596           items:
597             - description: Functional clock for DU0
598             - description: Functional clock for DU1
599             - description: Functional clock for DU3
600             - description: DU_DOTCLKIN0 input clock
601             - description: DU_DOTCLKIN1 input clock
602             - description: DU_DOTCLKIN3 input clock
603
604         clock-names:
605           minItems: 3
606           maxItems: 6
607           items:
608             - const: du.0
609             - const: du.1
610             - const: du.3
611             - pattern: '^dclkin\.[013]$'
612             - pattern: '^dclkin\.[013]$'
613             - pattern: '^dclkin\.[013]$'
614
615         interrupts:
616           maxItems: 3
617
618         resets:
619           maxItems: 2
620
621         reset-names:
622           items:
623             - const: du.0
624             - const: du.3
625
626         ports:
627           properties:
628             port@0:
629               description: DPAD 0
630             port@1:
631               description: HDMI 0
632             port@2:
633               description: LVDS 0
634             port@3: false
635
636           required:
637             - port@0
638             - port@1
639             - port@2
640
641         renesas,cmms:
642           minItems: 3
643
644         renesas,vsps:
645           minItems: 3
646
647       required:
648         - clock-names
649         - interrupts
650         - resets
651         - reset-names
652         - renesas,vsps
653
654   - if:
655       properties:
656         compatible:
657           contains:
658             enum:
659               - renesas,du-r8a77970
660               - renesas,du-r8a77980
661     then:
662       properties:
663         clocks:
664           minItems: 1
665           maxItems: 2
666           items:
667             - description: Functional clock for DU0
668             - description: DU_DOTCLKIN0 input clock
669
670         clock-names:
671           minItems: 1
672           maxItems: 2
673           items:
674             - const: du.0
675             - const: dclkin.0
676
677         interrupts:
678           maxItems: 1
679
680         resets:
681           maxItems: 1
682
683         reset-names:
684           items:
685             - const: du.0
686
687         ports:
688           properties:
689             port@0:
690               description: DPAD 0
691             port@1:
692               description: LVDS 0
693             port@2: false
694             port@3: false
695
696           required:
697             - port@0
698             - port@1
699
700         renesas,vsps:
701           minItems: 1
702
703       required:
704         - clock-names
705         - interrupts
706         - resets
707         - reset-names
708         - renesas,vsps
709
710   - if:
711       properties:
712         compatible:
713           contains:
714             enum:
715               - renesas,du-r8a774c0
716               - renesas,du-r8a77990
717               - renesas,du-r8a77995
718     then:
719       properties:
720         clocks:
721           minItems: 2
722           maxItems: 4
723           items:
724             - description: Functional clock for DU0
725             - description: Functional clock for DU1
726             - description: DU_DOTCLKIN0 input clock
727             - description: DU_DOTCLKIN1 input clock
728
729         clock-names:
730           minItems: 2
731           maxItems: 4
732           items:
733             - const: du.0
734             - const: du.1
735             - pattern: '^dclkin\.[01]$'
736             - pattern: '^dclkin\.[01]$'
737
738         interrupts:
739           maxItems: 2
740
741         resets:
742           maxItems: 1
743
744         reset-names:
745           items:
746             - const: du.0
747
748         ports:
749           properties:
750             port@0:
751               description: DPAD 0
752             port@1:
753               description: LVDS 0
754             port@2:
755               description: LVDS 1
756             # port@3 is TCON, not supported yet
757             port@3: false
758
759           required:
760             - port@0
761             - port@1
762             - port@2
763
764         renesas,cmms:
765           minItems: 2
766
767         renesas,vsps:
768           minItems: 2
769
770       required:
771         - clock-names
772         - interrupts
773         - resets
774         - reset-names
775         - renesas,vsps
776
777 additionalProperties: false
778
779 examples:
780   # R-Car H3 ES2.0 DU
781   - |
782     #include <dt-bindings/clock/renesas-cpg-mssr.h>
783     #include <dt-bindings/interrupt-controller/arm-gic.h>
784
785     display@feb00000 {
786         compatible = "renesas,du-r8a7795";
787         reg = <0xfeb00000 0x80000>;
788         interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
789                      <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
790                      <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>,
791                      <GIC_SPI 270 IRQ_TYPE_LEVEL_HIGH>;
792         clocks = <&cpg CPG_MOD 724>,
793                  <&cpg CPG_MOD 723>,
794                  <&cpg CPG_MOD 722>,
795                  <&cpg CPG_MOD 721>;
796         clock-names = "du.0", "du.1", "du.2", "du.3";
797         resets = <&cpg 724>, <&cpg 722>;
798         reset-names = "du.0", "du.2";
799
800         renesas,cmms = <&cmm0>, <&cmm1>, <&cmm2>, <&cmm3>;
801         renesas,vsps = <&vspd0 0>, <&vspd1 0>, <&vspd2 0>, <&vspd0 1>;
802
803         ports {
804             #address-cells = <1>;
805             #size-cells = <0>;
806
807             port@0 {
808                 reg = <0>;
809                 endpoint {
810                     remote-endpoint = <&adv7123_in>;
811                 };
812             };
813             port@1 {
814                 reg = <1>;
815                 endpoint {
816                     remote-endpoint = <&dw_hdmi0_in>;
817                 };
818             };
819             port@2 {
820                 reg = <2>;
821                 endpoint {
822                     remote-endpoint = <&dw_hdmi1_in>;
823                 };
824             };
825             port@3 {
826                 reg = <3>;
827                 endpoint {
828                     remote-endpoint = <&lvds0_in>;
829                 };
830             };
831         };
832     };
833
834 ...