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