| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/display/renesas,du.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Renesas R-Car Display Unit (DU) |
| |
| maintainers: |
| - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| |
| description: | |
| These DT bindings describe the Display Unit embedded in the Renesas R-Car |
| Gen1, R-Car Gen2, R-Car Gen3, RZ/G1 and RZ/G2 SoCs. |
| |
| properties: |
| compatible: |
| enum: |
| - renesas,du-r8a7742 # for RZ/G1H compatible DU |
| - renesas,du-r8a7743 # for RZ/G1M compatible DU |
| - renesas,du-r8a7744 # for RZ/G1N compatible DU |
| - renesas,du-r8a7745 # for RZ/G1E compatible DU |
| - renesas,du-r8a77470 # for RZ/G1C compatible DU |
| - renesas,du-r8a774a1 # for RZ/G2M compatible DU |
| - renesas,du-r8a774b1 # for RZ/G2N compatible DU |
| - renesas,du-r8a774c0 # for RZ/G2E compatible DU |
| - renesas,du-r8a774e1 # for RZ/G2H compatible DU |
| - renesas,du-r8a7779 # for R-Car H1 compatible DU |
| - renesas,du-r8a7790 # for R-Car H2 compatible DU |
| - renesas,du-r8a7791 # for R-Car M2-W compatible DU |
| - renesas,du-r8a7792 # for R-Car V2H compatible DU |
| - renesas,du-r8a7793 # for R-Car M2-N compatible DU |
| - renesas,du-r8a7794 # for R-Car E2 compatible DU |
| - renesas,du-r8a7795 # for R-Car H3 compatible DU |
| - renesas,du-r8a7796 # for R-Car M3-W compatible DU |
| - renesas,du-r8a77961 # for R-Car M3-W+ compatible DU |
| - renesas,du-r8a77965 # for R-Car M3-N compatible DU |
| - renesas,du-r8a77970 # for R-Car V3M compatible DU |
| - renesas,du-r8a77980 # for R-Car V3H compatible DU |
| - renesas,du-r8a77990 # for R-Car E3 compatible DU |
| - renesas,du-r8a77995 # for R-Car D3 compatible DU |
| - renesas,du-r8a779a0 # for R-Car V3U compatible DU |
| - renesas,du-r8a779g0 # for R-Car V4H compatible DU |
| |
| reg: |
| maxItems: 1 |
| |
| # See compatible-specific constraints below. |
| clocks: true |
| clock-names: true |
| interrupts: |
| description: Interrupt specifiers, one per DU channel |
| resets: true |
| reset-names: true |
| |
| power-domains: |
| maxItems: 1 |
| |
| ports: |
| $ref: /schemas/graph.yaml#/properties/ports |
| description: | |
| The connections to the DU output video ports are modeled using the OF |
| graph bindings specified in Documentation/devicetree/bindings/graph.txt. |
| The number of ports and their assignment are model-dependent. Each port |
| shall have a single endpoint. |
| |
| patternProperties: |
| "^port@[0-3]$": |
| $ref: /schemas/graph.yaml#/properties/port |
| unevaluatedProperties: false |
| |
| required: |
| - port@0 |
| - port@1 |
| |
| unevaluatedProperties: false |
| |
| renesas,cmms: |
| $ref: "/schemas/types.yaml#/definitions/phandle-array" |
| items: |
| maxItems: 1 |
| description: |
| A list of phandles to the CMM instances present in the SoC, one for each |
| available DU channel. |
| |
| renesas,vsps: |
| $ref: "/schemas/types.yaml#/definitions/phandle-array" |
| items: |
| items: |
| - description: phandle to VSP instance that serves the DU channel |
| - description: Channel index identifying the LIF instance in that VSP |
| description: |
| A list of phandle and channel index tuples to the VSPs that handle the |
| memory interfaces for the DU channels. |
| |
| required: |
| - compatible |
| - reg |
| - clocks |
| - interrupts |
| - ports |
| |
| allOf: |
| - if: |
| properties: |
| compatible: |
| contains: |
| const: renesas,du-r8a7779 |
| then: |
| properties: |
| clocks: |
| minItems: 1 |
| items: |
| - description: Functional clock |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| |
| clock-names: |
| minItems: 1 |
| items: |
| - const: du.0 |
| - pattern: '^dclkin\.[01]$' |
| - pattern: '^dclkin\.[01]$' |
| |
| interrupts: |
| maxItems: 1 |
| |
| resets: |
| maxItems: 1 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: DPAD 1 |
| # port@2 is TCON, not supported yet |
| port@2: false |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| |
| required: |
| - interrupts |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a7743 |
| - renesas,du-r8a7744 |
| - renesas,du-r8a7791 |
| - renesas,du-r8a7793 |
| then: |
| properties: |
| clocks: |
| minItems: 2 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| |
| clock-names: |
| minItems: 2 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - pattern: '^dclkin\.[01]$' |
| - pattern: '^dclkin\.[01]$' |
| |
| interrupts: |
| maxItems: 2 |
| |
| resets: |
| maxItems: 1 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: LVDS 0 |
| # port@2 is TCON, not supported yet |
| port@2: false |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a7745 |
| - renesas,du-r8a7792 |
| then: |
| properties: |
| clocks: |
| minItems: 2 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| |
| clock-names: |
| minItems: 2 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - pattern: '^dclkin\.[01]$' |
| - pattern: '^dclkin\.[01]$' |
| |
| interrupts: |
| maxItems: 2 |
| |
| resets: |
| maxItems: 1 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: DPAD 1 |
| port@2: false |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a7794 |
| then: |
| properties: |
| clocks: |
| minItems: 2 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| |
| clock-names: |
| minItems: 2 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - pattern: '^dclkin\.[01]$' |
| - pattern: '^dclkin\.[01]$' |
| |
| interrupts: |
| maxItems: 2 |
| |
| resets: |
| maxItems: 1 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: DPAD 1 |
| # port@2 is TCON, not supported yet |
| port@2: false |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a77470 |
| then: |
| properties: |
| clocks: |
| minItems: 2 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| |
| clock-names: |
| minItems: 2 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - pattern: '^dclkin\.[01]$' |
| - pattern: '^dclkin\.[01]$' |
| |
| interrupts: |
| maxItems: 2 |
| |
| resets: |
| maxItems: 1 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: DPAD 1 |
| port@2: |
| description: LVDS 0 |
| # port@3 is DVENC, not supported yet |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| - port@2 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a7742 |
| - renesas,du-r8a7790 |
| then: |
| properties: |
| clocks: |
| minItems: 3 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: Functional clock for DU2 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| - description: DU_DOTCLKIN2 input clock |
| |
| clock-names: |
| minItems: 3 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - const: du.2 |
| - pattern: '^dclkin\.[012]$' |
| - pattern: '^dclkin\.[012]$' |
| - pattern: '^dclkin\.[012]$' |
| |
| interrupts: |
| maxItems: 3 |
| |
| resets: |
| maxItems: 1 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: LVDS 0 |
| port@2: |
| description: LVDS 1 |
| # port@3 is TCON, not supported yet |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| - port@2 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a7795 |
| then: |
| properties: |
| clocks: |
| minItems: 4 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: Functional clock for DU2 |
| - description: Functional clock for DU4 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| - description: DU_DOTCLKIN2 input clock |
| - description: DU_DOTCLKIN3 input clock |
| |
| clock-names: |
| minItems: 4 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - const: du.2 |
| - const: du.3 |
| - pattern: '^dclkin\.[0123]$' |
| - pattern: '^dclkin\.[0123]$' |
| - pattern: '^dclkin\.[0123]$' |
| - pattern: '^dclkin\.[0123]$' |
| |
| interrupts: |
| maxItems: 4 |
| |
| resets: |
| maxItems: 2 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| - const: du.2 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: HDMI 0 |
| port@2: |
| description: HDMI 1 |
| port@3: |
| description: LVDS 0 |
| |
| required: |
| - port@0 |
| - port@1 |
| - port@2 |
| - port@3 |
| |
| renesas,cmms: |
| minItems: 4 |
| |
| renesas,vsps: |
| minItems: 4 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| - renesas,vsps |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a774a1 |
| - renesas,du-r8a7796 |
| - renesas,du-r8a77961 |
| then: |
| properties: |
| clocks: |
| minItems: 3 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: Functional clock for DU2 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| - description: DU_DOTCLKIN2 input clock |
| |
| clock-names: |
| minItems: 3 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - const: du.2 |
| - pattern: '^dclkin\.[012]$' |
| - pattern: '^dclkin\.[012]$' |
| - pattern: '^dclkin\.[012]$' |
| |
| interrupts: |
| maxItems: 3 |
| |
| resets: |
| maxItems: 2 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| - const: du.2 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: HDMI 0 |
| port@2: |
| description: LVDS 0 |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| - port@2 |
| |
| renesas,cmms: |
| minItems: 3 |
| |
| renesas,vsps: |
| minItems: 3 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| - renesas,vsps |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a774b1 |
| - renesas,du-r8a774e1 |
| - renesas,du-r8a77965 |
| then: |
| properties: |
| clocks: |
| minItems: 3 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: Functional clock for DU3 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| - description: DU_DOTCLKIN3 input clock |
| |
| clock-names: |
| minItems: 3 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - const: du.3 |
| - pattern: '^dclkin\.[013]$' |
| - pattern: '^dclkin\.[013]$' |
| - pattern: '^dclkin\.[013]$' |
| |
| interrupts: |
| maxItems: 3 |
| |
| resets: |
| maxItems: 2 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| - const: du.3 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: HDMI 0 |
| port@2: |
| description: LVDS 0 |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| - port@2 |
| |
| renesas,cmms: |
| minItems: 3 |
| |
| renesas,vsps: |
| minItems: 3 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| - renesas,vsps |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a77970 |
| - renesas,du-r8a77980 |
| then: |
| properties: |
| clocks: |
| minItems: 1 |
| items: |
| - description: Functional clock for DU0 |
| - description: DU_DOTCLKIN0 input clock |
| |
| clock-names: |
| minItems: 1 |
| items: |
| - const: du.0 |
| - const: dclkin.0 |
| |
| interrupts: |
| maxItems: 1 |
| |
| resets: |
| maxItems: 1 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: LVDS 0 |
| port@2: false |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| |
| renesas,vsps: |
| minItems: 1 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| - renesas,vsps |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a774c0 |
| - renesas,du-r8a77990 |
| - renesas,du-r8a77995 |
| then: |
| properties: |
| clocks: |
| minItems: 2 |
| items: |
| - description: Functional clock for DU0 |
| - description: Functional clock for DU1 |
| - description: DU_DOTCLKIN0 input clock |
| - description: DU_DOTCLKIN1 input clock |
| |
| clock-names: |
| minItems: 2 |
| items: |
| - const: du.0 |
| - const: du.1 |
| - pattern: '^dclkin\.[01]$' |
| - pattern: '^dclkin\.[01]$' |
| |
| interrupts: |
| maxItems: 2 |
| |
| resets: |
| maxItems: 1 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| |
| ports: |
| properties: |
| port@0: |
| description: DPAD 0 |
| port@1: |
| description: LVDS 0 |
| port@2: |
| description: LVDS 1 |
| # port@3 is TCON, not supported yet |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| - port@2 |
| |
| renesas,cmms: |
| minItems: 2 |
| |
| renesas,vsps: |
| minItems: 2 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| - renesas,vsps |
| |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - renesas,du-r8a779a0 |
| - renesas,du-r8a779g0 |
| then: |
| properties: |
| clocks: |
| items: |
| - description: Functional clock |
| |
| clock-names: |
| items: |
| - const: du.0 |
| |
| interrupts: |
| maxItems: 2 |
| |
| resets: |
| maxItems: 1 |
| |
| reset-names: |
| items: |
| - const: du.0 |
| |
| ports: |
| properties: |
| port@0: |
| description: DSI 0 |
| port@1: |
| description: DSI 1 |
| port@2: false |
| port@3: false |
| |
| required: |
| - port@0 |
| - port@1 |
| |
| renesas,vsps: |
| minItems: 2 |
| |
| required: |
| - clock-names |
| - interrupts |
| - resets |
| - reset-names |
| - renesas,vsps |
| |
| additionalProperties: false |
| |
| examples: |
| # R-Car H3 ES2.0 DU |
| - | |
| #include <dt-bindings/clock/renesas-cpg-mssr.h> |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| |
| display@feb00000 { |
| compatible = "renesas,du-r8a7795"; |
| reg = <0xfeb00000 0x80000>; |
| interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 269 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 270 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&cpg CPG_MOD 724>, |
| <&cpg CPG_MOD 723>, |
| <&cpg CPG_MOD 722>, |
| <&cpg CPG_MOD 721>; |
| clock-names = "du.0", "du.1", "du.2", "du.3"; |
| resets = <&cpg 724>, <&cpg 722>; |
| reset-names = "du.0", "du.2"; |
| |
| renesas,cmms = <&cmm0>, <&cmm1>, <&cmm2>, <&cmm3>; |
| renesas,vsps = <&vspd0 0>, <&vspd1 0>, <&vspd2 0>, <&vspd0 1>; |
| |
| ports { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port@0 { |
| reg = <0>; |
| endpoint { |
| remote-endpoint = <&adv7123_in>; |
| }; |
| }; |
| port@1 { |
| reg = <1>; |
| endpoint { |
| remote-endpoint = <&dw_hdmi0_in>; |
| }; |
| }; |
| port@2 { |
| reg = <2>; |
| endpoint { |
| remote-endpoint = <&dw_hdmi1_in>; |
| }; |
| }; |
| port@3 { |
| reg = <3>; |
| endpoint { |
| remote-endpoint = <&lvds0_in>; |
| }; |
| }; |
| }; |
| }; |
| |
| ... |