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