0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/display/renesas,du.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: Renesas R-Car Display Unit (DU)
0008
0009 maintainers:
0010 - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
0011
0012 description: |
0013 These DT bindings describe the Display Unit embedded in the Renesas R-Car
0014 Gen1, R-Car Gen2, R-Car Gen3, RZ/G1 and RZ/G2 SoCs.
0015
0016 properties:
0017 compatible:
0018 enum:
0019 - renesas,du-r8a7742 # for RZ/G1H compatible DU
0020 - renesas,du-r8a7743 # for RZ/G1M compatible DU
0021 - renesas,du-r8a7744 # for RZ/G1N compatible DU
0022 - renesas,du-r8a7745 # for RZ/G1E compatible DU
0023 - renesas,du-r8a77470 # for RZ/G1C compatible DU
0024 - renesas,du-r8a774a1 # for RZ/G2M compatible DU
0025 - renesas,du-r8a774b1 # for RZ/G2N compatible DU
0026 - renesas,du-r8a774c0 # for RZ/G2E compatible DU
0027 - renesas,du-r8a774e1 # for RZ/G2H compatible DU
0028 - renesas,du-r8a7779 # for R-Car H1 compatible DU
0029 - renesas,du-r8a7790 # for R-Car H2 compatible DU
0030 - renesas,du-r8a7791 # for R-Car M2-W compatible DU
0031 - renesas,du-r8a7792 # for R-Car V2H compatible DU
0032 - renesas,du-r8a7793 # for R-Car M2-N compatible DU
0033 - renesas,du-r8a7794 # for R-Car E2 compatible DU
0034 - renesas,du-r8a7795 # for R-Car H3 compatible DU
0035 - renesas,du-r8a7796 # for R-Car M3-W compatible DU
0036 - renesas,du-r8a77961 # for R-Car M3-W+ compatible DU
0037 - renesas,du-r8a77965 # for R-Car M3-N compatible DU
0038 - renesas,du-r8a77970 # for R-Car V3M compatible DU
0039 - renesas,du-r8a77980 # for R-Car V3H compatible DU
0040 - renesas,du-r8a77990 # for R-Car E3 compatible DU
0041 - renesas,du-r8a77995 # for R-Car D3 compatible DU
0042 - renesas,du-r8a779a0 # for R-Car V3U compatible DU
0043
0044 reg:
0045 maxItems: 1
0046
0047 # See compatible-specific constraints below.
0048 clocks: true
0049 clock-names: true
0050 interrupts:
0051 description: Interrupt specifiers, one per DU channel
0052 resets: true
0053 reset-names: true
0054
0055 power-domains:
0056 maxItems: 1
0057
0058 ports:
0059 $ref: /schemas/graph.yaml#/properties/ports
0060 description: |
0061 The connections to the DU output video ports are modeled using the OF
0062 graph bindings specified in Documentation/devicetree/bindings/graph.txt.
0063 The number of ports and their assignment are model-dependent. Each port
0064 shall have a single endpoint.
0065
0066 patternProperties:
0067 "^port@[0-3]$":
0068 $ref: /schemas/graph.yaml#/properties/port
0069 unevaluatedProperties: false
0070
0071 required:
0072 - port@0
0073 - port@1
0074
0075 unevaluatedProperties: false
0076
0077 renesas,cmms:
0078 $ref: "/schemas/types.yaml#/definitions/phandle-array"
0079 items:
0080 maxItems: 1
0081 description:
0082 A list of phandles to the CMM instances present in the SoC, one for each
0083 available DU channel.
0084
0085 renesas,vsps:
0086 $ref: "/schemas/types.yaml#/definitions/phandle-array"
0087 items:
0088 items:
0089 - description: phandle to VSP instance that serves the DU channel
0090 - description: Channel index identifying the LIF instance in that VSP
0091 description:
0092 A list of phandle and channel index tuples to the VSPs that handle the
0093 memory interfaces for the DU channels.
0094
0095 required:
0096 - compatible
0097 - reg
0098 - clocks
0099 - interrupts
0100 - ports
0101
0102 allOf:
0103 - if:
0104 properties:
0105 compatible:
0106 contains:
0107 const: renesas,du-r8a7779
0108 then:
0109 properties:
0110 clocks:
0111 minItems: 1
0112 items:
0113 - description: Functional clock
0114 - description: DU_DOTCLKIN0 input clock
0115 - description: DU_DOTCLKIN1 input clock
0116
0117 clock-names:
0118 minItems: 1
0119 items:
0120 - const: du.0
0121 - pattern: '^dclkin\.[01]$'
0122 - pattern: '^dclkin\.[01]$'
0123
0124 interrupts:
0125 maxItems: 1
0126
0127 resets:
0128 maxItems: 1
0129
0130 ports:
0131 properties:
0132 port@0:
0133 description: DPAD 0
0134 port@1:
0135 description: DPAD 1
0136 # port@2 is TCON, not supported yet
0137 port@2: false
0138 port@3: false
0139
0140 required:
0141 - port@0
0142 - port@1
0143
0144 required:
0145 - interrupts
0146
0147 - if:
0148 properties:
0149 compatible:
0150 contains:
0151 enum:
0152 - renesas,du-r8a7743
0153 - renesas,du-r8a7744
0154 - renesas,du-r8a7791
0155 - renesas,du-r8a7793
0156 then:
0157 properties:
0158 clocks:
0159 minItems: 2
0160 items:
0161 - description: Functional clock for DU0
0162 - description: Functional clock for DU1
0163 - description: DU_DOTCLKIN0 input clock
0164 - description: DU_DOTCLKIN1 input clock
0165
0166 clock-names:
0167 minItems: 2
0168 items:
0169 - const: du.0
0170 - const: du.1
0171 - pattern: '^dclkin\.[01]$'
0172 - pattern: '^dclkin\.[01]$'
0173
0174 interrupts:
0175 maxItems: 2
0176
0177 resets:
0178 maxItems: 1
0179
0180 reset-names:
0181 items:
0182 - const: du.0
0183
0184 ports:
0185 properties:
0186 port@0:
0187 description: DPAD 0
0188 port@1:
0189 description: LVDS 0
0190 # port@2 is TCON, not supported yet
0191 port@2: false
0192 port@3: false
0193
0194 required:
0195 - port@0
0196 - port@1
0197
0198 required:
0199 - clock-names
0200 - interrupts
0201 - resets
0202 - reset-names
0203
0204 - if:
0205 properties:
0206 compatible:
0207 contains:
0208 enum:
0209 - renesas,du-r8a7745
0210 - renesas,du-r8a7792
0211 then:
0212 properties:
0213 clocks:
0214 minItems: 2
0215 items:
0216 - description: Functional clock for DU0
0217 - description: Functional clock for DU1
0218 - description: DU_DOTCLKIN0 input clock
0219 - description: DU_DOTCLKIN1 input clock
0220
0221 clock-names:
0222 minItems: 2
0223 items:
0224 - const: du.0
0225 - const: du.1
0226 - pattern: '^dclkin\.[01]$'
0227 - pattern: '^dclkin\.[01]$'
0228
0229 interrupts:
0230 maxItems: 2
0231
0232 resets:
0233 maxItems: 1
0234
0235 reset-names:
0236 items:
0237 - const: du.0
0238
0239 ports:
0240 properties:
0241 port@0:
0242 description: DPAD 0
0243 port@1:
0244 description: DPAD 1
0245 port@2: false
0246 port@3: false
0247
0248 required:
0249 - port@0
0250 - port@1
0251
0252 required:
0253 - clock-names
0254 - interrupts
0255 - resets
0256 - reset-names
0257
0258 - if:
0259 properties:
0260 compatible:
0261 contains:
0262 enum:
0263 - renesas,du-r8a7794
0264 then:
0265 properties:
0266 clocks:
0267 minItems: 2
0268 items:
0269 - description: Functional clock for DU0
0270 - description: Functional clock for DU1
0271 - description: DU_DOTCLKIN0 input clock
0272 - description: DU_DOTCLKIN1 input clock
0273
0274 clock-names:
0275 minItems: 2
0276 items:
0277 - const: du.0
0278 - const: du.1
0279 - pattern: '^dclkin\.[01]$'
0280 - pattern: '^dclkin\.[01]$'
0281
0282 interrupts:
0283 maxItems: 2
0284
0285 resets:
0286 maxItems: 1
0287
0288 reset-names:
0289 items:
0290 - const: du.0
0291
0292 ports:
0293 properties:
0294 port@0:
0295 description: DPAD 0
0296 port@1:
0297 description: DPAD 1
0298 # port@2 is TCON, not supported yet
0299 port@2: false
0300 port@3: false
0301
0302 required:
0303 - port@0
0304 - port@1
0305
0306 required:
0307 - clock-names
0308 - interrupts
0309 - resets
0310 - reset-names
0311
0312 - if:
0313 properties:
0314 compatible:
0315 contains:
0316 enum:
0317 - renesas,du-r8a77470
0318 then:
0319 properties:
0320 clocks:
0321 minItems: 2
0322 items:
0323 - description: Functional clock for DU0
0324 - description: Functional clock for DU1
0325 - description: DU_DOTCLKIN0 input clock
0326 - description: DU_DOTCLKIN1 input clock
0327
0328 clock-names:
0329 minItems: 2
0330 items:
0331 - const: du.0
0332 - const: du.1
0333 - pattern: '^dclkin\.[01]$'
0334 - pattern: '^dclkin\.[01]$'
0335
0336 interrupts:
0337 maxItems: 2
0338
0339 resets:
0340 maxItems: 1
0341
0342 reset-names:
0343 items:
0344 - const: du.0
0345
0346 ports:
0347 properties:
0348 port@0:
0349 description: DPAD 0
0350 port@1:
0351 description: DPAD 1
0352 port@2:
0353 description: LVDS 0
0354 # port@3 is DVENC, not supported yet
0355 port@3: false
0356
0357 required:
0358 - port@0
0359 - port@1
0360 - port@2
0361
0362 required:
0363 - clock-names
0364 - interrupts
0365 - resets
0366 - reset-names
0367
0368 - if:
0369 properties:
0370 compatible:
0371 contains:
0372 enum:
0373 - renesas,du-r8a7742
0374 - renesas,du-r8a7790
0375 then:
0376 properties:
0377 clocks:
0378 minItems: 3
0379 items:
0380 - description: Functional clock for DU0
0381 - description: Functional clock for DU1
0382 - description: Functional clock for DU2
0383 - description: DU_DOTCLKIN0 input clock
0384 - description: DU_DOTCLKIN1 input clock
0385 - description: DU_DOTCLKIN2 input clock
0386
0387 clock-names:
0388 minItems: 3
0389 items:
0390 - const: du.0
0391 - const: du.1
0392 - const: du.2
0393 - pattern: '^dclkin\.[012]$'
0394 - pattern: '^dclkin\.[012]$'
0395 - pattern: '^dclkin\.[012]$'
0396
0397 interrupts:
0398 maxItems: 3
0399
0400 resets:
0401 maxItems: 1
0402
0403 reset-names:
0404 items:
0405 - const: du.0
0406
0407 ports:
0408 properties:
0409 port@0:
0410 description: DPAD 0
0411 port@1:
0412 description: LVDS 0
0413 port@2:
0414 description: LVDS 1
0415 # port@3 is TCON, not supported yet
0416 port@3: false
0417
0418 required:
0419 - port@0
0420 - port@1
0421 - port@2
0422
0423 required:
0424 - clock-names
0425 - interrupts
0426 - resets
0427 - reset-names
0428
0429 - if:
0430 properties:
0431 compatible:
0432 contains:
0433 enum:
0434 - renesas,du-r8a7795
0435 then:
0436 properties:
0437 clocks:
0438 minItems: 4
0439 items:
0440 - description: Functional clock for DU0
0441 - description: Functional clock for DU1
0442 - description: Functional clock for DU2
0443 - description: Functional clock for DU4
0444 - description: DU_DOTCLKIN0 input clock
0445 - description: DU_DOTCLKIN1 input clock
0446 - description: DU_DOTCLKIN2 input clock
0447 - description: DU_DOTCLKIN3 input clock
0448
0449 clock-names:
0450 minItems: 4
0451 items:
0452 - const: du.0
0453 - const: du.1
0454 - const: du.2
0455 - const: du.3
0456 - pattern: '^dclkin\.[0123]$'
0457 - pattern: '^dclkin\.[0123]$'
0458 - pattern: '^dclkin\.[0123]$'
0459 - pattern: '^dclkin\.[0123]$'
0460
0461 interrupts:
0462 maxItems: 4
0463
0464 resets:
0465 maxItems: 2
0466
0467 reset-names:
0468 items:
0469 - const: du.0
0470 - const: du.2
0471
0472 ports:
0473 properties:
0474 port@0:
0475 description: DPAD 0
0476 port@1:
0477 description: HDMI 0
0478 port@2:
0479 description: HDMI 1
0480 port@3:
0481 description: LVDS 0
0482
0483 required:
0484 - port@0
0485 - port@1
0486 - port@2
0487 - port@3
0488
0489 renesas,cmms:
0490 minItems: 4
0491
0492 renesas,vsps:
0493 minItems: 4
0494
0495 required:
0496 - clock-names
0497 - interrupts
0498 - resets
0499 - reset-names
0500 - renesas,vsps
0501
0502 - if:
0503 properties:
0504 compatible:
0505 contains:
0506 enum:
0507 - renesas,du-r8a774a1
0508 - renesas,du-r8a7796
0509 - renesas,du-r8a77961
0510 then:
0511 properties:
0512 clocks:
0513 minItems: 3
0514 items:
0515 - description: Functional clock for DU0
0516 - description: Functional clock for DU1
0517 - description: Functional clock for DU2
0518 - description: DU_DOTCLKIN0 input clock
0519 - description: DU_DOTCLKIN1 input clock
0520 - description: DU_DOTCLKIN2 input clock
0521
0522 clock-names:
0523 minItems: 3
0524 items:
0525 - const: du.0
0526 - const: du.1
0527 - const: du.2
0528 - pattern: '^dclkin\.[012]$'
0529 - pattern: '^dclkin\.[012]$'
0530 - pattern: '^dclkin\.[012]$'
0531
0532 interrupts:
0533 maxItems: 3
0534
0535 resets:
0536 maxItems: 2
0537
0538 reset-names:
0539 items:
0540 - const: du.0
0541 - const: du.2
0542
0543 ports:
0544 properties:
0545 port@0:
0546 description: DPAD 0
0547 port@1:
0548 description: HDMI 0
0549 port@2:
0550 description: LVDS 0
0551 port@3: false
0552
0553 required:
0554 - port@0
0555 - port@1
0556 - port@2
0557
0558 renesas,cmms:
0559 minItems: 3
0560
0561 renesas,vsps:
0562 minItems: 3
0563
0564 required:
0565 - clock-names
0566 - interrupts
0567 - resets
0568 - reset-names
0569 - renesas,vsps
0570
0571 - if:
0572 properties:
0573 compatible:
0574 contains:
0575 enum:
0576 - renesas,du-r8a774b1
0577 - renesas,du-r8a774e1
0578 - renesas,du-r8a77965
0579 then:
0580 properties:
0581 clocks:
0582 minItems: 3
0583 items:
0584 - description: Functional clock for DU0
0585 - description: Functional clock for DU1
0586 - description: Functional clock for DU3
0587 - description: DU_DOTCLKIN0 input clock
0588 - description: DU_DOTCLKIN1 input clock
0589 - description: DU_DOTCLKIN3 input clock
0590
0591 clock-names:
0592 minItems: 3
0593 items:
0594 - const: du.0
0595 - const: du.1
0596 - const: du.3
0597 - pattern: '^dclkin\.[013]$'
0598 - pattern: '^dclkin\.[013]$'
0599 - pattern: '^dclkin\.[013]$'
0600
0601 interrupts:
0602 maxItems: 3
0603
0604 resets:
0605 maxItems: 2
0606
0607 reset-names:
0608 items:
0609 - const: du.0
0610 - const: du.3
0611
0612 ports:
0613 properties:
0614 port@0:
0615 description: DPAD 0
0616 port@1:
0617 description: HDMI 0
0618 port@2:
0619 description: LVDS 0
0620 port@3: false
0621
0622 required:
0623 - port@0
0624 - port@1
0625 - port@2
0626
0627 renesas,cmms:
0628 minItems: 3
0629
0630 renesas,vsps:
0631 minItems: 3
0632
0633 required:
0634 - clock-names
0635 - interrupts
0636 - resets
0637 - reset-names
0638 - renesas,vsps
0639
0640 - if:
0641 properties:
0642 compatible:
0643 contains:
0644 enum:
0645 - renesas,du-r8a77970
0646 - renesas,du-r8a77980
0647 then:
0648 properties:
0649 clocks:
0650 minItems: 1
0651 items:
0652 - description: Functional clock for DU0
0653 - description: DU_DOTCLKIN0 input clock
0654
0655 clock-names:
0656 minItems: 1
0657 items:
0658 - const: du.0
0659 - const: dclkin.0
0660
0661 interrupts:
0662 maxItems: 1
0663
0664 resets:
0665 maxItems: 1
0666
0667 reset-names:
0668 items:
0669 - const: du.0
0670
0671 ports:
0672 properties:
0673 port@0:
0674 description: DPAD 0
0675 port@1:
0676 description: LVDS 0
0677 port@2: false
0678 port@3: false
0679
0680 required:
0681 - port@0
0682 - port@1
0683
0684 renesas,vsps:
0685 minItems: 1
0686
0687 required:
0688 - clock-names
0689 - interrupts
0690 - resets
0691 - reset-names
0692 - renesas,vsps
0693
0694 - if:
0695 properties:
0696 compatible:
0697 contains:
0698 enum:
0699 - renesas,du-r8a774c0
0700 - renesas,du-r8a77990
0701 - renesas,du-r8a77995
0702 then:
0703 properties:
0704 clocks:
0705 minItems: 2
0706 items:
0707 - description: Functional clock for DU0
0708 - description: Functional clock for DU1
0709 - description: DU_DOTCLKIN0 input clock
0710 - description: DU_DOTCLKIN1 input clock
0711
0712 clock-names:
0713 minItems: 2
0714 items:
0715 - const: du.0
0716 - const: du.1
0717 - pattern: '^dclkin\.[01]$'
0718 - pattern: '^dclkin\.[01]$'
0719
0720 interrupts:
0721 maxItems: 2
0722
0723 resets:
0724 maxItems: 1
0725
0726 reset-names:
0727 items:
0728 - const: du.0
0729
0730 ports:
0731 properties:
0732 port@0:
0733 description: DPAD 0
0734 port@1:
0735 description: LVDS 0
0736 port@2:
0737 description: LVDS 1
0738 # port@3 is TCON, not supported yet
0739 port@3: false
0740
0741 required:
0742 - port@0
0743 - port@1
0744 - port@2
0745
0746 renesas,cmms:
0747 minItems: 2
0748
0749 renesas,vsps:
0750 minItems: 2
0751
0752 required:
0753 - clock-names
0754 - interrupts
0755 - resets
0756 - reset-names
0757 - renesas,vsps
0758
0759 - if:
0760 properties:
0761 compatible:
0762 contains:
0763 enum:
0764 - renesas,du-r8a779a0
0765 then:
0766 properties:
0767 clocks:
0768 items:
0769 - description: Functional clock
0770
0771 clock-names:
0772 items:
0773 - const: du.0
0774
0775 interrupts:
0776 maxItems: 2
0777
0778 resets:
0779 maxItems: 1
0780
0781 reset-names:
0782 items:
0783 - const: du.0
0784
0785 ports:
0786 properties:
0787 port@0:
0788 description: DSI 0
0789 port@1:
0790 description: DSI 1
0791 port@2: false
0792 port@3: false
0793
0794 required:
0795 - port@0
0796 - port@1
0797
0798 renesas,vsps:
0799 minItems: 2
0800
0801 required:
0802 - clock-names
0803 - interrupts
0804 - resets
0805 - reset-names
0806 - renesas,vsps
0807
0808 additionalProperties: false
0809
0810 examples:
0811 # R-Car H3 ES2.0 DU
0812 - |
0813 #include <dt-bindings/clock/renesas-cpg-mssr.h>
0814 #include <dt-bindings/interrupt-controller/arm-gic.h>
0815
0816 display@feb00000 {
0817 compatible = "renesas,du-r8a7795";
0818 reg = <0xfeb00000 0x80000>;
0819 interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
0820 <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
0821 <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>,
0822 <GIC_SPI 270 IRQ_TYPE_LEVEL_HIGH>;
0823 clocks = <&cpg CPG_MOD 724>,
0824 <&cpg CPG_MOD 723>,
0825 <&cpg CPG_MOD 722>,
0826 <&cpg CPG_MOD 721>;
0827 clock-names = "du.0", "du.1", "du.2", "du.3";
0828 resets = <&cpg 724>, <&cpg 722>;
0829 reset-names = "du.0", "du.2";
0830
0831 renesas,cmms = <&cmm0>, <&cmm1>, <&cmm2>, <&cmm3>;
0832 renesas,vsps = <&vspd0 0>, <&vspd1 0>, <&vspd2 0>, <&vspd0 1>;
0833
0834 ports {
0835 #address-cells = <1>;
0836 #size-cells = <0>;
0837
0838 port@0 {
0839 reg = <0>;
0840 endpoint {
0841 remote-endpoint = <&adv7123_in>;
0842 };
0843 };
0844 port@1 {
0845 reg = <1>;
0846 endpoint {
0847 remote-endpoint = <&dw_hdmi0_in>;
0848 };
0849 };
0850 port@2 {
0851 reg = <2>;
0852 endpoint {
0853 remote-endpoint = <&dw_hdmi1_in>;
0854 };
0855 };
0856 port@3 {
0857 reg = <3>;
0858 endpoint {
0859 remote-endpoint = <&lvds0_in>;
0860 };
0861 };
0862 };
0863 };
0864
0865 ...