1*01950c46SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2*01950c46SEmmanuel Vadot%YAML 1.2 3*01950c46SEmmanuel Vadot--- 4*01950c46SEmmanuel Vadot$id: http://devicetree.org/schemas/display/msm/qcom,x1e80100-mdss.yaml# 5*01950c46SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*01950c46SEmmanuel Vadot 7*01950c46SEmmanuel Vadottitle: Qualcomm X1E80100 Display MDSS 8*01950c46SEmmanuel Vadot 9*01950c46SEmmanuel Vadotmaintainers: 10*01950c46SEmmanuel Vadot - Abel Vesa <abel.vesa@linaro.org> 11*01950c46SEmmanuel Vadot 12*01950c46SEmmanuel Vadotdescription: 13*01950c46SEmmanuel Vadot X1E80100 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like 14*01950c46SEmmanuel Vadot DPU display controller, DP interfaces, etc. 15*01950c46SEmmanuel Vadot 16*01950c46SEmmanuel Vadot$ref: /schemas/display/msm/mdss-common.yaml# 17*01950c46SEmmanuel Vadot 18*01950c46SEmmanuel Vadotproperties: 19*01950c46SEmmanuel Vadot compatible: 20*01950c46SEmmanuel Vadot const: qcom,x1e80100-mdss 21*01950c46SEmmanuel Vadot 22*01950c46SEmmanuel Vadot clocks: 23*01950c46SEmmanuel Vadot items: 24*01950c46SEmmanuel Vadot - description: Display AHB 25*01950c46SEmmanuel Vadot - description: Display hf AXI 26*01950c46SEmmanuel Vadot - description: Display core 27*01950c46SEmmanuel Vadot 28*01950c46SEmmanuel Vadot iommus: 29*01950c46SEmmanuel Vadot maxItems: 1 30*01950c46SEmmanuel Vadot 31*01950c46SEmmanuel Vadot interconnects: 32*01950c46SEmmanuel Vadot maxItems: 3 33*01950c46SEmmanuel Vadot 34*01950c46SEmmanuel Vadot interconnect-names: 35*01950c46SEmmanuel Vadot maxItems: 3 36*01950c46SEmmanuel Vadot 37*01950c46SEmmanuel VadotpatternProperties: 38*01950c46SEmmanuel Vadot "^display-controller@[0-9a-f]+$": 39*01950c46SEmmanuel Vadot type: object 40*01950c46SEmmanuel Vadot additionalProperties: true 41*01950c46SEmmanuel Vadot properties: 42*01950c46SEmmanuel Vadot compatible: 43*01950c46SEmmanuel Vadot const: qcom,x1e80100-dpu 44*01950c46SEmmanuel Vadot 45*01950c46SEmmanuel Vadot "^displayport-controller@[0-9a-f]+$": 46*01950c46SEmmanuel Vadot type: object 47*01950c46SEmmanuel Vadot additionalProperties: true 48*01950c46SEmmanuel Vadot properties: 49*01950c46SEmmanuel Vadot compatible: 50*01950c46SEmmanuel Vadot const: qcom,x1e80100-dp 51*01950c46SEmmanuel Vadot 52*01950c46SEmmanuel Vadot "^phy@[0-9a-f]+$": 53*01950c46SEmmanuel Vadot type: object 54*01950c46SEmmanuel Vadot additionalProperties: true 55*01950c46SEmmanuel Vadot properties: 56*01950c46SEmmanuel Vadot compatible: 57*01950c46SEmmanuel Vadot const: qcom,x1e80100-dp-phy 58*01950c46SEmmanuel Vadot 59*01950c46SEmmanuel Vadotrequired: 60*01950c46SEmmanuel Vadot - compatible 61*01950c46SEmmanuel Vadot 62*01950c46SEmmanuel VadotunevaluatedProperties: false 63*01950c46SEmmanuel Vadot 64*01950c46SEmmanuel Vadotexamples: 65*01950c46SEmmanuel Vadot - | 66*01950c46SEmmanuel Vadot #include <dt-bindings/clock/qcom,rpmh.h> 67*01950c46SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 68*01950c46SEmmanuel Vadot #include <dt-bindings/interconnect/qcom,x1e80100-rpmh.h> 69*01950c46SEmmanuel Vadot #include <dt-bindings/phy/phy-qcom-qmp.h> 70*01950c46SEmmanuel Vadot #include <dt-bindings/power/qcom,rpmhpd.h> 71*01950c46SEmmanuel Vadot 72*01950c46SEmmanuel Vadot display-subsystem@ae00000 { 73*01950c46SEmmanuel Vadot compatible = "qcom,x1e80100-mdss"; 74*01950c46SEmmanuel Vadot reg = <0x0ae00000 0x1000>; 75*01950c46SEmmanuel Vadot reg-names = "mdss"; 76*01950c46SEmmanuel Vadot 77*01950c46SEmmanuel Vadot interconnects = <&mmss_noc MASTER_MDP 0 &gem_noc SLAVE_LLCC 0>, 78*01950c46SEmmanuel Vadot <&mc_virt MASTER_LLCC 0 &mc_virt SLAVE_EBI1 0>, 79*01950c46SEmmanuel Vadot <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_DISPLAY_CFG 0>; 80*01950c46SEmmanuel Vadot interconnect-names = "mdp0-mem", "mdp1-mem", "cpu-cfg"; 81*01950c46SEmmanuel Vadot 82*01950c46SEmmanuel Vadot resets = <&dispcc_core_bcr>; 83*01950c46SEmmanuel Vadot 84*01950c46SEmmanuel Vadot power-domains = <&dispcc_gdsc>; 85*01950c46SEmmanuel Vadot 86*01950c46SEmmanuel Vadot clocks = <&dispcc_ahb_clk>, 87*01950c46SEmmanuel Vadot <&gcc_disp_hf_axi_clk>, 88*01950c46SEmmanuel Vadot <&dispcc_mdp_clk>; 89*01950c46SEmmanuel Vadot clock-names = "bus", "nrt_bus", "core"; 90*01950c46SEmmanuel Vadot 91*01950c46SEmmanuel Vadot interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 92*01950c46SEmmanuel Vadot interrupt-controller; 93*01950c46SEmmanuel Vadot #interrupt-cells = <1>; 94*01950c46SEmmanuel Vadot 95*01950c46SEmmanuel Vadot iommus = <&apps_smmu 0x1c00 0x2>; 96*01950c46SEmmanuel Vadot 97*01950c46SEmmanuel Vadot #address-cells = <1>; 98*01950c46SEmmanuel Vadot #size-cells = <1>; 99*01950c46SEmmanuel Vadot ranges; 100*01950c46SEmmanuel Vadot 101*01950c46SEmmanuel Vadot display-controller@ae01000 { 102*01950c46SEmmanuel Vadot compatible = "qcom,x1e80100-dpu"; 103*01950c46SEmmanuel Vadot reg = <0x0ae01000 0x8f000>, 104*01950c46SEmmanuel Vadot <0x0aeb0000 0x2008>; 105*01950c46SEmmanuel Vadot reg-names = "mdp", "vbif"; 106*01950c46SEmmanuel Vadot 107*01950c46SEmmanuel Vadot clocks = <&gcc_axi_clk>, 108*01950c46SEmmanuel Vadot <&dispcc_ahb_clk>, 109*01950c46SEmmanuel Vadot <&dispcc_mdp_lut_clk>, 110*01950c46SEmmanuel Vadot <&dispcc_mdp_clk>, 111*01950c46SEmmanuel Vadot <&dispcc_mdp_vsync_clk>; 112*01950c46SEmmanuel Vadot clock-names = "nrt_bus", 113*01950c46SEmmanuel Vadot "iface", 114*01950c46SEmmanuel Vadot "lut", 115*01950c46SEmmanuel Vadot "core", 116*01950c46SEmmanuel Vadot "vsync"; 117*01950c46SEmmanuel Vadot 118*01950c46SEmmanuel Vadot assigned-clocks = <&dispcc_mdp_vsync_clk>; 119*01950c46SEmmanuel Vadot assigned-clock-rates = <19200000>; 120*01950c46SEmmanuel Vadot 121*01950c46SEmmanuel Vadot operating-points-v2 = <&mdp_opp_table>; 122*01950c46SEmmanuel Vadot power-domains = <&rpmhpd RPMHPD_MMCX>; 123*01950c46SEmmanuel Vadot 124*01950c46SEmmanuel Vadot interrupt-parent = <&mdss>; 125*01950c46SEmmanuel Vadot interrupts = <0>; 126*01950c46SEmmanuel Vadot 127*01950c46SEmmanuel Vadot ports { 128*01950c46SEmmanuel Vadot #address-cells = <1>; 129*01950c46SEmmanuel Vadot #size-cells = <0>; 130*01950c46SEmmanuel Vadot 131*01950c46SEmmanuel Vadot port@0 { 132*01950c46SEmmanuel Vadot reg = <0>; 133*01950c46SEmmanuel Vadot dpu_intf1_out: endpoint { 134*01950c46SEmmanuel Vadot remote-endpoint = <&dsi0_in>; 135*01950c46SEmmanuel Vadot }; 136*01950c46SEmmanuel Vadot }; 137*01950c46SEmmanuel Vadot 138*01950c46SEmmanuel Vadot port@1 { 139*01950c46SEmmanuel Vadot reg = <1>; 140*01950c46SEmmanuel Vadot dpu_intf2_out: endpoint { 141*01950c46SEmmanuel Vadot remote-endpoint = <&dsi1_in>; 142*01950c46SEmmanuel Vadot }; 143*01950c46SEmmanuel Vadot }; 144*01950c46SEmmanuel Vadot }; 145*01950c46SEmmanuel Vadot 146*01950c46SEmmanuel Vadot mdp_opp_table: opp-table { 147*01950c46SEmmanuel Vadot compatible = "operating-points-v2"; 148*01950c46SEmmanuel Vadot 149*01950c46SEmmanuel Vadot opp-200000000 { 150*01950c46SEmmanuel Vadot opp-hz = /bits/ 64 <200000000>; 151*01950c46SEmmanuel Vadot required-opps = <&rpmhpd_opp_low_svs>; 152*01950c46SEmmanuel Vadot }; 153*01950c46SEmmanuel Vadot 154*01950c46SEmmanuel Vadot opp-325000000 { 155*01950c46SEmmanuel Vadot opp-hz = /bits/ 64 <325000000>; 156*01950c46SEmmanuel Vadot required-opps = <&rpmhpd_opp_svs>; 157*01950c46SEmmanuel Vadot }; 158*01950c46SEmmanuel Vadot 159*01950c46SEmmanuel Vadot opp-375000000 { 160*01950c46SEmmanuel Vadot opp-hz = /bits/ 64 <375000000>; 161*01950c46SEmmanuel Vadot required-opps = <&rpmhpd_opp_svs_l1>; 162*01950c46SEmmanuel Vadot }; 163*01950c46SEmmanuel Vadot 164*01950c46SEmmanuel Vadot opp-514000000 { 165*01950c46SEmmanuel Vadot opp-hz = /bits/ 64 <514000000>; 166*01950c46SEmmanuel Vadot required-opps = <&rpmhpd_opp_nom>; 167*01950c46SEmmanuel Vadot }; 168*01950c46SEmmanuel Vadot }; 169*01950c46SEmmanuel Vadot }; 170*01950c46SEmmanuel Vadot 171*01950c46SEmmanuel Vadot displayport-controller@ae90000 { 172*01950c46SEmmanuel Vadot compatible = "qcom,x1e80100-dp"; 173*01950c46SEmmanuel Vadot reg = <0 0xae90000 0 0x200>, 174*01950c46SEmmanuel Vadot <0 0xae90200 0 0x200>, 175*01950c46SEmmanuel Vadot <0 0xae90400 0 0x600>, 176*01950c46SEmmanuel Vadot <0 0xae91000 0 0x400>, 177*01950c46SEmmanuel Vadot <0 0xae91400 0 0x400>; 178*01950c46SEmmanuel Vadot 179*01950c46SEmmanuel Vadot interrupt-parent = <&mdss>; 180*01950c46SEmmanuel Vadot interrupts = <12>; 181*01950c46SEmmanuel Vadot 182*01950c46SEmmanuel Vadot clocks = <&dispcc_mdss_ahb_clk>, 183*01950c46SEmmanuel Vadot <&dispcc_dptx0_aux_clk>, 184*01950c46SEmmanuel Vadot <&dispcc_dptx0_link_clk>, 185*01950c46SEmmanuel Vadot <&dispcc_dptx0_link_intf_clk>, 186*01950c46SEmmanuel Vadot <&dispcc_dptx0_pixel0_clk>; 187*01950c46SEmmanuel Vadot clock-names = "core_iface", "core_aux", 188*01950c46SEmmanuel Vadot "ctrl_link", 189*01950c46SEmmanuel Vadot "ctrl_link_iface", 190*01950c46SEmmanuel Vadot "stream_pixel"; 191*01950c46SEmmanuel Vadot 192*01950c46SEmmanuel Vadot assigned-clocks = <&dispcc_mdss_dptx0_link_clk_src>, 193*01950c46SEmmanuel Vadot <&dispcc_mdss_dptx0_pixel0_clk_src>; 194*01950c46SEmmanuel Vadot assigned-clock-parents = <&usb_1_ss0_qmpphy QMP_USB43DP_DP_LINK_CLK>, 195*01950c46SEmmanuel Vadot <&usb_1_ss0_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>; 196*01950c46SEmmanuel Vadot 197*01950c46SEmmanuel Vadot operating-points-v2 = <&mdss_dp0_opp_table>; 198*01950c46SEmmanuel Vadot 199*01950c46SEmmanuel Vadot power-domains = <&rpmhpd RPMHPD_MMCX>; 200*01950c46SEmmanuel Vadot 201*01950c46SEmmanuel Vadot phys = <&usb_1_ss0_qmpphy QMP_USB43DP_DP_PHY>; 202*01950c46SEmmanuel Vadot phy-names = "dp"; 203*01950c46SEmmanuel Vadot 204*01950c46SEmmanuel Vadot #sound-dai-cells = <0>; 205*01950c46SEmmanuel Vadot 206*01950c46SEmmanuel Vadot ports { 207*01950c46SEmmanuel Vadot #address-cells = <1>; 208*01950c46SEmmanuel Vadot #size-cells = <0>; 209*01950c46SEmmanuel Vadot 210*01950c46SEmmanuel Vadot port@0 { 211*01950c46SEmmanuel Vadot reg = <0>; 212*01950c46SEmmanuel Vadot 213*01950c46SEmmanuel Vadot mdss_dp0_in: endpoint { 214*01950c46SEmmanuel Vadot remote-endpoint = <&mdss_intf0_out>; 215*01950c46SEmmanuel Vadot }; 216*01950c46SEmmanuel Vadot }; 217*01950c46SEmmanuel Vadot 218*01950c46SEmmanuel Vadot port@1 { 219*01950c46SEmmanuel Vadot reg = <1>; 220*01950c46SEmmanuel Vadot 221*01950c46SEmmanuel Vadot mdss_dp0_out: endpoint { 222*01950c46SEmmanuel Vadot }; 223*01950c46SEmmanuel Vadot }; 224*01950c46SEmmanuel Vadot }; 225*01950c46SEmmanuel Vadot 226*01950c46SEmmanuel Vadot mdss_dp0_opp_table: opp-table { 227*01950c46SEmmanuel Vadot compatible = "operating-points-v2"; 228*01950c46SEmmanuel Vadot 229*01950c46SEmmanuel Vadot opp-160000000 { 230*01950c46SEmmanuel Vadot opp-hz = /bits/ 64 <160000000>; 231*01950c46SEmmanuel Vadot required-opps = <&rpmhpd_opp_low_svs>; 232*01950c46SEmmanuel Vadot }; 233*01950c46SEmmanuel Vadot 234*01950c46SEmmanuel Vadot opp-270000000 { 235*01950c46SEmmanuel Vadot opp-hz = /bits/ 64 <270000000>; 236*01950c46SEmmanuel Vadot required-opps = <&rpmhpd_opp_svs>; 237*01950c46SEmmanuel Vadot }; 238*01950c46SEmmanuel Vadot 239*01950c46SEmmanuel Vadot opp-540000000 { 240*01950c46SEmmanuel Vadot opp-hz = /bits/ 64 <540000000>; 241*01950c46SEmmanuel Vadot required-opps = <&rpmhpd_opp_svs_l1>; 242*01950c46SEmmanuel Vadot }; 243*01950c46SEmmanuel Vadot 244*01950c46SEmmanuel Vadot opp-810000000 { 245*01950c46SEmmanuel Vadot opp-hz = /bits/ 64 <810000000>; 246*01950c46SEmmanuel Vadot required-opps = <&rpmhpd_opp_nom>; 247*01950c46SEmmanuel Vadot }; 248*01950c46SEmmanuel Vadot }; 249*01950c46SEmmanuel Vadot }; 250*01950c46SEmmanuel Vadot }; 251*01950c46SEmmanuel Vadot... 252