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