1*c9ccf3a3SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only or BSD-2-Clause 2*c9ccf3a3SEmmanuel Vadot%YAML 1.2 3*c9ccf3a3SEmmanuel Vadot--- 4*c9ccf3a3SEmmanuel Vadot$id: http://devicetree.org/schemas/display/msm/dpu-msm8998.yaml# 5*c9ccf3a3SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*c9ccf3a3SEmmanuel Vadot 7*c9ccf3a3SEmmanuel Vadottitle: Qualcomm Display DPU dt properties for MSM8998 target 8*c9ccf3a3SEmmanuel Vadot 9*c9ccf3a3SEmmanuel Vadotmaintainers: 10*c9ccf3a3SEmmanuel Vadot - AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> 11*c9ccf3a3SEmmanuel Vadot 12*c9ccf3a3SEmmanuel Vadotdescription: | 13*c9ccf3a3SEmmanuel Vadot Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates 14*c9ccf3a3SEmmanuel Vadot sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree 15*c9ccf3a3SEmmanuel Vadot bindings of MDSS and DPU are mentioned for MSM8998 target. 16*c9ccf3a3SEmmanuel Vadot 17*c9ccf3a3SEmmanuel Vadotproperties: 18*c9ccf3a3SEmmanuel Vadot compatible: 19*c9ccf3a3SEmmanuel Vadot items: 20*c9ccf3a3SEmmanuel Vadot - const: qcom,msm8998-mdss 21*c9ccf3a3SEmmanuel Vadot 22*c9ccf3a3SEmmanuel Vadot reg: 23*c9ccf3a3SEmmanuel Vadot maxItems: 1 24*c9ccf3a3SEmmanuel Vadot 25*c9ccf3a3SEmmanuel Vadot reg-names: 26*c9ccf3a3SEmmanuel Vadot const: mdss 27*c9ccf3a3SEmmanuel Vadot 28*c9ccf3a3SEmmanuel Vadot power-domains: 29*c9ccf3a3SEmmanuel Vadot maxItems: 1 30*c9ccf3a3SEmmanuel Vadot 31*c9ccf3a3SEmmanuel Vadot clocks: 32*c9ccf3a3SEmmanuel Vadot items: 33*c9ccf3a3SEmmanuel Vadot - description: Display AHB clock 34*c9ccf3a3SEmmanuel Vadot - description: Display AXI clock 35*c9ccf3a3SEmmanuel Vadot - description: Display core clock 36*c9ccf3a3SEmmanuel Vadot 37*c9ccf3a3SEmmanuel Vadot clock-names: 38*c9ccf3a3SEmmanuel Vadot items: 39*c9ccf3a3SEmmanuel Vadot - const: iface 40*c9ccf3a3SEmmanuel Vadot - const: bus 41*c9ccf3a3SEmmanuel Vadot - const: core 42*c9ccf3a3SEmmanuel Vadot 43*c9ccf3a3SEmmanuel Vadot interrupts: 44*c9ccf3a3SEmmanuel Vadot maxItems: 1 45*c9ccf3a3SEmmanuel Vadot 46*c9ccf3a3SEmmanuel Vadot interrupt-controller: true 47*c9ccf3a3SEmmanuel Vadot 48*c9ccf3a3SEmmanuel Vadot "#address-cells": true 49*c9ccf3a3SEmmanuel Vadot 50*c9ccf3a3SEmmanuel Vadot "#size-cells": true 51*c9ccf3a3SEmmanuel Vadot 52*c9ccf3a3SEmmanuel Vadot "#interrupt-cells": 53*c9ccf3a3SEmmanuel Vadot const: 1 54*c9ccf3a3SEmmanuel Vadot 55*c9ccf3a3SEmmanuel Vadot iommus: 56*c9ccf3a3SEmmanuel Vadot items: 57*c9ccf3a3SEmmanuel Vadot - description: Phandle to apps_smmu node with SID mask for Hard-Fail port0 58*c9ccf3a3SEmmanuel Vadot 59*c9ccf3a3SEmmanuel Vadot ranges: true 60*c9ccf3a3SEmmanuel Vadot 61*c9ccf3a3SEmmanuel VadotpatternProperties: 62*c9ccf3a3SEmmanuel Vadot "^display-controller@[0-9a-f]+$": 63*c9ccf3a3SEmmanuel Vadot type: object 64*c9ccf3a3SEmmanuel Vadot description: Node containing the properties of DPU. 65*c9ccf3a3SEmmanuel Vadot 66*c9ccf3a3SEmmanuel Vadot properties: 67*c9ccf3a3SEmmanuel Vadot compatible: 68*c9ccf3a3SEmmanuel Vadot items: 69*c9ccf3a3SEmmanuel Vadot - const: qcom,msm8998-dpu 70*c9ccf3a3SEmmanuel Vadot 71*c9ccf3a3SEmmanuel Vadot reg: 72*c9ccf3a3SEmmanuel Vadot items: 73*c9ccf3a3SEmmanuel Vadot - description: Address offset and size for mdp register set 74*c9ccf3a3SEmmanuel Vadot - description: Address offset and size for regdma register set 75*c9ccf3a3SEmmanuel Vadot - description: Address offset and size for vbif register set 76*c9ccf3a3SEmmanuel Vadot - description: Address offset and size for non-realtime vbif register set 77*c9ccf3a3SEmmanuel Vadot 78*c9ccf3a3SEmmanuel Vadot reg-names: 79*c9ccf3a3SEmmanuel Vadot items: 80*c9ccf3a3SEmmanuel Vadot - const: mdp 81*c9ccf3a3SEmmanuel Vadot - const: regdma 82*c9ccf3a3SEmmanuel Vadot - const: vbif 83*c9ccf3a3SEmmanuel Vadot - const: vbif_nrt 84*c9ccf3a3SEmmanuel Vadot 85*c9ccf3a3SEmmanuel Vadot clocks: 86*c9ccf3a3SEmmanuel Vadot items: 87*c9ccf3a3SEmmanuel Vadot - description: Display ahb clock 88*c9ccf3a3SEmmanuel Vadot - description: Display axi clock 89*c9ccf3a3SEmmanuel Vadot - description: Display mem-noc clock 90*c9ccf3a3SEmmanuel Vadot - description: Display core clock 91*c9ccf3a3SEmmanuel Vadot - description: Display vsync clock 92*c9ccf3a3SEmmanuel Vadot 93*c9ccf3a3SEmmanuel Vadot clock-names: 94*c9ccf3a3SEmmanuel Vadot items: 95*c9ccf3a3SEmmanuel Vadot - const: iface 96*c9ccf3a3SEmmanuel Vadot - const: bus 97*c9ccf3a3SEmmanuel Vadot - const: mnoc 98*c9ccf3a3SEmmanuel Vadot - const: core 99*c9ccf3a3SEmmanuel Vadot - const: vsync 100*c9ccf3a3SEmmanuel Vadot 101*c9ccf3a3SEmmanuel Vadot interrupts: 102*c9ccf3a3SEmmanuel Vadot maxItems: 1 103*c9ccf3a3SEmmanuel Vadot 104*c9ccf3a3SEmmanuel Vadot power-domains: 105*c9ccf3a3SEmmanuel Vadot maxItems: 1 106*c9ccf3a3SEmmanuel Vadot 107*c9ccf3a3SEmmanuel Vadot operating-points-v2: true 108*c9ccf3a3SEmmanuel Vadot ports: 109*c9ccf3a3SEmmanuel Vadot $ref: /schemas/graph.yaml#/properties/ports 110*c9ccf3a3SEmmanuel Vadot description: | 111*c9ccf3a3SEmmanuel Vadot Contains the list of output ports from DPU device. These ports 112*c9ccf3a3SEmmanuel Vadot connect to interfaces that are external to the DPU hardware, 113*c9ccf3a3SEmmanuel Vadot such as DSI, DP etc. Each output port contains an endpoint that 114*c9ccf3a3SEmmanuel Vadot describes how it is connected to an external interface. 115*c9ccf3a3SEmmanuel Vadot 116*c9ccf3a3SEmmanuel Vadot properties: 117*c9ccf3a3SEmmanuel Vadot port@0: 118*c9ccf3a3SEmmanuel Vadot $ref: /schemas/graph.yaml#/properties/port 119*c9ccf3a3SEmmanuel Vadot description: DPU_INTF1 (DSI1) 120*c9ccf3a3SEmmanuel Vadot 121*c9ccf3a3SEmmanuel Vadot port@1: 122*c9ccf3a3SEmmanuel Vadot $ref: /schemas/graph.yaml#/properties/port 123*c9ccf3a3SEmmanuel Vadot description: DPU_INTF2 (DSI2) 124*c9ccf3a3SEmmanuel Vadot 125*c9ccf3a3SEmmanuel Vadot required: 126*c9ccf3a3SEmmanuel Vadot - port@0 127*c9ccf3a3SEmmanuel Vadot - port@1 128*c9ccf3a3SEmmanuel Vadot 129*c9ccf3a3SEmmanuel Vadot required: 130*c9ccf3a3SEmmanuel Vadot - compatible 131*c9ccf3a3SEmmanuel Vadot - reg 132*c9ccf3a3SEmmanuel Vadot - reg-names 133*c9ccf3a3SEmmanuel Vadot - clocks 134*c9ccf3a3SEmmanuel Vadot - interrupts 135*c9ccf3a3SEmmanuel Vadot - power-domains 136*c9ccf3a3SEmmanuel Vadot - operating-points-v2 137*c9ccf3a3SEmmanuel Vadot - ports 138*c9ccf3a3SEmmanuel Vadot 139*c9ccf3a3SEmmanuel Vadotrequired: 140*c9ccf3a3SEmmanuel Vadot - compatible 141*c9ccf3a3SEmmanuel Vadot - reg 142*c9ccf3a3SEmmanuel Vadot - reg-names 143*c9ccf3a3SEmmanuel Vadot - power-domains 144*c9ccf3a3SEmmanuel Vadot - clocks 145*c9ccf3a3SEmmanuel Vadot - interrupts 146*c9ccf3a3SEmmanuel Vadot - interrupt-controller 147*c9ccf3a3SEmmanuel Vadot - iommus 148*c9ccf3a3SEmmanuel Vadot - ranges 149*c9ccf3a3SEmmanuel Vadot 150*c9ccf3a3SEmmanuel VadotadditionalProperties: false 151*c9ccf3a3SEmmanuel Vadot 152*c9ccf3a3SEmmanuel Vadotexamples: 153*c9ccf3a3SEmmanuel Vadot - | 154*c9ccf3a3SEmmanuel Vadot #include <dt-bindings/clock/qcom,mmcc-msm8998.h> 155*c9ccf3a3SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 156*c9ccf3a3SEmmanuel Vadot #include <dt-bindings/power/qcom-rpmpd.h> 157*c9ccf3a3SEmmanuel Vadot 158*c9ccf3a3SEmmanuel Vadot mdss: display-subsystem@c900000 { 159*c9ccf3a3SEmmanuel Vadot compatible = "qcom,msm8998-mdss"; 160*c9ccf3a3SEmmanuel Vadot reg = <0x0c900000 0x1000>; 161*c9ccf3a3SEmmanuel Vadot reg-names = "mdss"; 162*c9ccf3a3SEmmanuel Vadot 163*c9ccf3a3SEmmanuel Vadot clocks = <&mmcc MDSS_AHB_CLK>, 164*c9ccf3a3SEmmanuel Vadot <&mmcc MDSS_AXI_CLK>, 165*c9ccf3a3SEmmanuel Vadot <&mmcc MDSS_MDP_CLK>; 166*c9ccf3a3SEmmanuel Vadot clock-names = "iface", "bus", "core"; 167*c9ccf3a3SEmmanuel Vadot 168*c9ccf3a3SEmmanuel Vadot #address-cells = <1>; 169*c9ccf3a3SEmmanuel Vadot #interrupt-cells = <1>; 170*c9ccf3a3SEmmanuel Vadot #size-cells = <1>; 171*c9ccf3a3SEmmanuel Vadot 172*c9ccf3a3SEmmanuel Vadot interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 173*c9ccf3a3SEmmanuel Vadot interrupt-controller; 174*c9ccf3a3SEmmanuel Vadot iommus = <&mmss_smmu 0>; 175*c9ccf3a3SEmmanuel Vadot 176*c9ccf3a3SEmmanuel Vadot power-domains = <&mmcc MDSS_GDSC>; 177*c9ccf3a3SEmmanuel Vadot ranges; 178*c9ccf3a3SEmmanuel Vadot 179*c9ccf3a3SEmmanuel Vadot display-controller@c901000 { 180*c9ccf3a3SEmmanuel Vadot compatible = "qcom,msm8998-dpu"; 181*c9ccf3a3SEmmanuel Vadot reg = <0x0c901000 0x8f000>, 182*c9ccf3a3SEmmanuel Vadot <0x0c9a8e00 0xf0>, 183*c9ccf3a3SEmmanuel Vadot <0x0c9b0000 0x2008>, 184*c9ccf3a3SEmmanuel Vadot <0x0c9b8000 0x1040>; 185*c9ccf3a3SEmmanuel Vadot reg-names = "mdp", "regdma", "vbif", "vbif_nrt"; 186*c9ccf3a3SEmmanuel Vadot 187*c9ccf3a3SEmmanuel Vadot clocks = <&mmcc MDSS_AHB_CLK>, 188*c9ccf3a3SEmmanuel Vadot <&mmcc MDSS_AXI_CLK>, 189*c9ccf3a3SEmmanuel Vadot <&mmcc MNOC_AHB_CLK>, 190*c9ccf3a3SEmmanuel Vadot <&mmcc MDSS_MDP_CLK>, 191*c9ccf3a3SEmmanuel Vadot <&mmcc MDSS_VSYNC_CLK>; 192*c9ccf3a3SEmmanuel Vadot clock-names = "iface", "bus", "mnoc", "core", "vsync"; 193*c9ccf3a3SEmmanuel Vadot 194*c9ccf3a3SEmmanuel Vadot interrupt-parent = <&mdss>; 195*c9ccf3a3SEmmanuel Vadot interrupts = <0>; 196*c9ccf3a3SEmmanuel Vadot operating-points-v2 = <&mdp_opp_table>; 197*c9ccf3a3SEmmanuel Vadot power-domains = <&rpmpd MSM8998_VDDMX>; 198*c9ccf3a3SEmmanuel Vadot 199*c9ccf3a3SEmmanuel Vadot ports { 200*c9ccf3a3SEmmanuel Vadot #address-cells = <1>; 201*c9ccf3a3SEmmanuel Vadot #size-cells = <0>; 202*c9ccf3a3SEmmanuel Vadot 203*c9ccf3a3SEmmanuel Vadot port@0 { 204*c9ccf3a3SEmmanuel Vadot reg = <0>; 205*c9ccf3a3SEmmanuel Vadot dpu_intf1_out: endpoint { 206*c9ccf3a3SEmmanuel Vadot remote-endpoint = <&dsi0_in>; 207*c9ccf3a3SEmmanuel Vadot }; 208*c9ccf3a3SEmmanuel Vadot }; 209*c9ccf3a3SEmmanuel Vadot 210*c9ccf3a3SEmmanuel Vadot port@1 { 211*c9ccf3a3SEmmanuel Vadot reg = <1>; 212*c9ccf3a3SEmmanuel Vadot dpu_intf2_out: endpoint { 213*c9ccf3a3SEmmanuel Vadot remote-endpoint = <&dsi1_in>; 214*c9ccf3a3SEmmanuel Vadot }; 215*c9ccf3a3SEmmanuel Vadot }; 216*c9ccf3a3SEmmanuel Vadot }; 217*c9ccf3a3SEmmanuel Vadot }; 218*c9ccf3a3SEmmanuel Vadot }; 219*c9ccf3a3SEmmanuel Vadot... 220