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