1*2846c905SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2*2846c905SEmmanuel Vadot%YAML 1.2 3*2846c905SEmmanuel Vadot--- 4*2846c905SEmmanuel Vadot$id: http://devicetree.org/schemas/display/msm/qcom,sm6150-mdss.yaml# 5*2846c905SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*2846c905SEmmanuel Vadot 7*2846c905SEmmanuel Vadottitle: Qualcomm SM6150 Display MDSS 8*2846c905SEmmanuel Vadot 9*2846c905SEmmanuel Vadotmaintainers: 10*2846c905SEmmanuel Vadot - Abhinav Kumar <quic_abhinavk@quicinc.com> 11*2846c905SEmmanuel Vadot - Dmitry Baryshkov <dmitry.baryshkov@linaro.org> 12*2846c905SEmmanuel Vadot 13*2846c905SEmmanuel Vadotdescription: 14*2846c905SEmmanuel Vadot Device tree bindings for MSM Mobile Display Subsystem(MDSS) that encapsulates 15*2846c905SEmmanuel Vadot sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree 16*2846c905SEmmanuel Vadot bindings of MDSS are mentioned for SM6150 target. 17*2846c905SEmmanuel Vadot 18*2846c905SEmmanuel Vadot$ref: /schemas/display/msm/mdss-common.yaml# 19*2846c905SEmmanuel Vadot 20*2846c905SEmmanuel Vadotproperties: 21*2846c905SEmmanuel Vadot compatible: 22*2846c905SEmmanuel Vadot items: 23*2846c905SEmmanuel Vadot - const: qcom,sm6150-mdss 24*2846c905SEmmanuel Vadot 25*2846c905SEmmanuel Vadot clocks: 26*2846c905SEmmanuel Vadot items: 27*2846c905SEmmanuel Vadot - description: Display AHB clock from gcc 28*2846c905SEmmanuel Vadot - description: Display hf axi clock 29*2846c905SEmmanuel Vadot - description: Display core clock 30*2846c905SEmmanuel Vadot 31*2846c905SEmmanuel Vadot clock-names: 32*2846c905SEmmanuel Vadot items: 33*2846c905SEmmanuel Vadot - const: iface 34*2846c905SEmmanuel Vadot - const: bus 35*2846c905SEmmanuel Vadot - const: core 36*2846c905SEmmanuel Vadot 37*2846c905SEmmanuel Vadot iommus: 38*2846c905SEmmanuel Vadot maxItems: 1 39*2846c905SEmmanuel Vadot 40*2846c905SEmmanuel Vadot interconnects: 41*2846c905SEmmanuel Vadot maxItems: 2 42*2846c905SEmmanuel Vadot 43*2846c905SEmmanuel Vadot interconnect-names: 44*2846c905SEmmanuel Vadot maxItems: 2 45*2846c905SEmmanuel Vadot 46*2846c905SEmmanuel VadotpatternProperties: 47*2846c905SEmmanuel Vadot "^display-controller@[0-9a-f]+$": 48*2846c905SEmmanuel Vadot type: object 49*2846c905SEmmanuel Vadot additionalProperties: true 50*2846c905SEmmanuel Vadot properties: 51*2846c905SEmmanuel Vadot compatible: 52*2846c905SEmmanuel Vadot const: qcom,sm6150-dpu 53*2846c905SEmmanuel Vadot 54*2846c905SEmmanuel Vadot "^dsi@[0-9a-f]+$": 55*2846c905SEmmanuel Vadot type: object 56*2846c905SEmmanuel Vadot additionalProperties: true 57*2846c905SEmmanuel Vadot properties: 58*2846c905SEmmanuel Vadot compatible: 59*2846c905SEmmanuel Vadot items: 60*2846c905SEmmanuel Vadot - const: qcom,sm6150-dsi-ctrl 61*2846c905SEmmanuel Vadot - const: qcom,mdss-dsi-ctrl 62*2846c905SEmmanuel Vadot 63*2846c905SEmmanuel Vadot "^phy@[0-9a-f]+$": 64*2846c905SEmmanuel Vadot type: object 65*2846c905SEmmanuel Vadot additionalProperties: true 66*2846c905SEmmanuel Vadot properties: 67*2846c905SEmmanuel Vadot compatible: 68*2846c905SEmmanuel Vadot const: qcom,sm6150-dsi-phy-14nm 69*2846c905SEmmanuel Vadot 70*2846c905SEmmanuel VadotunevaluatedProperties: false 71*2846c905SEmmanuel Vadot 72*2846c905SEmmanuel Vadotexamples: 73*2846c905SEmmanuel Vadot - | 74*2846c905SEmmanuel Vadot #include <dt-bindings/clock/qcom,rpmh.h> 75*2846c905SEmmanuel Vadot #include <dt-bindings/interconnect/qcom,icc.h> 76*2846c905SEmmanuel Vadot #include <dt-bindings/interconnect/qcom,qcs615-rpmh.h> 77*2846c905SEmmanuel Vadot #include <dt-bindings/interrupt-controller/arm-gic.h> 78*2846c905SEmmanuel Vadot #include <dt-bindings/power/qcom,rpmhpd.h> 79*2846c905SEmmanuel Vadot 80*2846c905SEmmanuel Vadot display-subsystem@ae00000 { 81*2846c905SEmmanuel Vadot #address-cells = <1>; 82*2846c905SEmmanuel Vadot #size-cells = <1>; 83*2846c905SEmmanuel Vadot compatible = "qcom,sm6150-mdss"; 84*2846c905SEmmanuel Vadot reg = <0x0ae00000 0x1000>; 85*2846c905SEmmanuel Vadot reg-names = "mdss"; 86*2846c905SEmmanuel Vadot 87*2846c905SEmmanuel Vadot interconnects = <&mmss_noc MASTER_MDP0 QCOM_ICC_TAG_ALWAYS 88*2846c905SEmmanuel Vadot &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, 89*2846c905SEmmanuel Vadot <&gem_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY 90*2846c905SEmmanuel Vadot &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>; 91*2846c905SEmmanuel Vadot interconnect-names = "mdp0-mem", "cpu-cfg"; 92*2846c905SEmmanuel Vadot 93*2846c905SEmmanuel Vadot power-domains = <&dispcc_mdss_gdsc>; 94*2846c905SEmmanuel Vadot 95*2846c905SEmmanuel Vadot clocks = <&dispcc_mdss_ahb_clk>, 96*2846c905SEmmanuel Vadot <&gcc_disp_hf_axi_clk>, 97*2846c905SEmmanuel Vadot <&dispcc_mdss_mdp_clk>; 98*2846c905SEmmanuel Vadot 99*2846c905SEmmanuel Vadot interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 100*2846c905SEmmanuel Vadot interrupt-controller; 101*2846c905SEmmanuel Vadot #interrupt-cells = <1>; 102*2846c905SEmmanuel Vadot 103*2846c905SEmmanuel Vadot iommus = <&apps_smmu 0x800 0x0>; 104*2846c905SEmmanuel Vadot 105*2846c905SEmmanuel Vadot ranges; 106*2846c905SEmmanuel Vadot 107*2846c905SEmmanuel Vadot display-controller@ae01000 { 108*2846c905SEmmanuel Vadot compatible = "qcom,sm6150-dpu"; 109*2846c905SEmmanuel Vadot reg = <0x0ae01000 0x8f000>, 110*2846c905SEmmanuel Vadot <0x0aeb0000 0x2008>; 111*2846c905SEmmanuel Vadot reg-names = "mdp", "vbif"; 112*2846c905SEmmanuel Vadot 113*2846c905SEmmanuel Vadot clocks = <&dispcc_mdss_ahb_clk>, 114*2846c905SEmmanuel Vadot <&gcc_disp_hf_axi_clk>, 115*2846c905SEmmanuel Vadot <&dispcc_mdss_mdp_clk>, 116*2846c905SEmmanuel Vadot <&dispcc_mdss_vsync_clk>; 117*2846c905SEmmanuel Vadot clock-names = "iface", "bus", "core", "vsync"; 118*2846c905SEmmanuel Vadot 119*2846c905SEmmanuel Vadot assigned-clocks = <&dispcc_mdss_vsync_clk>; 120*2846c905SEmmanuel Vadot assigned-clock-rates = <19200000>; 121*2846c905SEmmanuel Vadot 122*2846c905SEmmanuel Vadot operating-points-v2 = <&mdp_opp_table>; 123*2846c905SEmmanuel Vadot power-domains = <&rpmhpd RPMHPD_CX>; 124*2846c905SEmmanuel Vadot 125*2846c905SEmmanuel Vadot interrupt-parent = <&mdss>; 126*2846c905SEmmanuel Vadot interrupts = <0>; 127*2846c905SEmmanuel Vadot 128*2846c905SEmmanuel Vadot ports { 129*2846c905SEmmanuel Vadot #address-cells = <1>; 130*2846c905SEmmanuel Vadot #size-cells = <0>; 131*2846c905SEmmanuel Vadot 132*2846c905SEmmanuel Vadot port@0 { 133*2846c905SEmmanuel Vadot reg = <0>; 134*2846c905SEmmanuel Vadot dpu_intf0_out: endpoint { 135*2846c905SEmmanuel Vadot }; 136*2846c905SEmmanuel Vadot }; 137*2846c905SEmmanuel Vadot 138*2846c905SEmmanuel Vadot port@1 { 139*2846c905SEmmanuel Vadot reg = <1>; 140*2846c905SEmmanuel Vadot dpu_intf1_out: endpoint { 141*2846c905SEmmanuel Vadot remote-endpoint = <&mdss_dsi0_in>; 142*2846c905SEmmanuel Vadot }; 143*2846c905SEmmanuel Vadot }; 144*2846c905SEmmanuel Vadot }; 145*2846c905SEmmanuel Vadot 146*2846c905SEmmanuel Vadot mdp_opp_table: opp-table { 147*2846c905SEmmanuel Vadot compatible = "operating-points-v2"; 148*2846c905SEmmanuel Vadot 149*2846c905SEmmanuel Vadot opp-19200000 { 150*2846c905SEmmanuel Vadot opp-hz = /bits/ 64 <19200000>; 151*2846c905SEmmanuel Vadot required-opps = <&rpmhpd_opp_low_svs>; 152*2846c905SEmmanuel Vadot }; 153*2846c905SEmmanuel Vadot 154*2846c905SEmmanuel Vadot opp-25600000 { 155*2846c905SEmmanuel Vadot opp-hz = /bits/ 64 <25600000>; 156*2846c905SEmmanuel Vadot required-opps = <&rpmhpd_opp_svs>; 157*2846c905SEmmanuel Vadot }; 158*2846c905SEmmanuel Vadot 159*2846c905SEmmanuel Vadot opp-307200000 { 160*2846c905SEmmanuel Vadot opp-hz = /bits/ 64 <307200000>; 161*2846c905SEmmanuel Vadot required-opps = <&rpmhpd_opp_nom>; 162*2846c905SEmmanuel Vadot }; 163*2846c905SEmmanuel Vadot }; 164*2846c905SEmmanuel Vadot }; 165*2846c905SEmmanuel Vadot 166*2846c905SEmmanuel Vadot dsi@ae94000 { 167*2846c905SEmmanuel Vadot compatible = "qcom,sm6150-dsi-ctrl", 168*2846c905SEmmanuel Vadot "qcom,mdss-dsi-ctrl"; 169*2846c905SEmmanuel Vadot reg = <0x0ae94000 0x400>; 170*2846c905SEmmanuel Vadot reg-names = "dsi_ctrl"; 171*2846c905SEmmanuel Vadot 172*2846c905SEmmanuel Vadot interrupt-parent = <&mdss>; 173*2846c905SEmmanuel Vadot interrupts = <4>; 174*2846c905SEmmanuel Vadot 175*2846c905SEmmanuel Vadot clocks = <&dispcc_mdss_byte0_clk>, 176*2846c905SEmmanuel Vadot <&dispcc_mdss_byte0_intf_clk>, 177*2846c905SEmmanuel Vadot <&dispcc_mdss_pclk0_clk>, 178*2846c905SEmmanuel Vadot <&dispcc_mdss_esc0_clk>, 179*2846c905SEmmanuel Vadot <&dispcc_mdss_ahb_clk>, 180*2846c905SEmmanuel Vadot <&gcc_disp_hf_axi_clk>; 181*2846c905SEmmanuel Vadot clock-names = "byte", 182*2846c905SEmmanuel Vadot "byte_intf", 183*2846c905SEmmanuel Vadot "pixel", 184*2846c905SEmmanuel Vadot "core", 185*2846c905SEmmanuel Vadot "iface", 186*2846c905SEmmanuel Vadot "bus"; 187*2846c905SEmmanuel Vadot 188*2846c905SEmmanuel Vadot assigned-clocks = <&dispcc_mdss_byte0_clk_src>, 189*2846c905SEmmanuel Vadot <&dispcc_mdss_pclk0_clk_src>; 190*2846c905SEmmanuel Vadot assigned-clock-parents = <&mdss_dsi0_phy 0>, 191*2846c905SEmmanuel Vadot <&mdss_dsi0_phy 1>; 192*2846c905SEmmanuel Vadot 193*2846c905SEmmanuel Vadot operating-points-v2 = <&dsi0_opp_table>; 194*2846c905SEmmanuel Vadot 195*2846c905SEmmanuel Vadot phys = <&mdss_dsi0_phy>; 196*2846c905SEmmanuel Vadot 197*2846c905SEmmanuel Vadot #address-cells = <1>; 198*2846c905SEmmanuel Vadot #size-cells = <0>; 199*2846c905SEmmanuel Vadot 200*2846c905SEmmanuel Vadot ports { 201*2846c905SEmmanuel Vadot #address-cells = <1>; 202*2846c905SEmmanuel Vadot #size-cells = <0>; 203*2846c905SEmmanuel Vadot 204*2846c905SEmmanuel Vadot port@0 { 205*2846c905SEmmanuel Vadot reg = <0>; 206*2846c905SEmmanuel Vadot mdss_dsi0_in: endpoint { 207*2846c905SEmmanuel Vadot remote-endpoint = <&dpu_intf1_out>; 208*2846c905SEmmanuel Vadot }; 209*2846c905SEmmanuel Vadot }; 210*2846c905SEmmanuel Vadot 211*2846c905SEmmanuel Vadot port@1 { 212*2846c905SEmmanuel Vadot reg = <1>; 213*2846c905SEmmanuel Vadot mdss_dsi0_out: endpoint { 214*2846c905SEmmanuel Vadot }; 215*2846c905SEmmanuel Vadot }; 216*2846c905SEmmanuel Vadot }; 217*2846c905SEmmanuel Vadot 218*2846c905SEmmanuel Vadot dsi0_opp_table: opp-table { 219*2846c905SEmmanuel Vadot compatible = "operating-points-v2"; 220*2846c905SEmmanuel Vadot 221*2846c905SEmmanuel Vadot opp-164000000 { 222*2846c905SEmmanuel Vadot opp-hz = /bits/ 64 <164000000>; 223*2846c905SEmmanuel Vadot required-opps = <&rpmhpd_opp_low_svs>; 224*2846c905SEmmanuel Vadot }; 225*2846c905SEmmanuel Vadot }; 226*2846c905SEmmanuel Vadot }; 227*2846c905SEmmanuel Vadot 228*2846c905SEmmanuel Vadot mdss_dsi0_phy: phy@ae94400 { 229*2846c905SEmmanuel Vadot compatible = "qcom,sm6150-dsi-phy-14nm"; 230*2846c905SEmmanuel Vadot reg = <0x0ae94400 0x100>, 231*2846c905SEmmanuel Vadot <0x0ae94500 0x300>, 232*2846c905SEmmanuel Vadot <0x0ae94800 0x188>; 233*2846c905SEmmanuel Vadot reg-names = "dsi_phy", 234*2846c905SEmmanuel Vadot "dsi_phy_lane", 235*2846c905SEmmanuel Vadot "dsi_pll"; 236*2846c905SEmmanuel Vadot 237*2846c905SEmmanuel Vadot #clock-cells = <1>; 238*2846c905SEmmanuel Vadot #phy-cells = <0>; 239*2846c905SEmmanuel Vadot 240*2846c905SEmmanuel Vadot clocks = <&dispcc_mdss_ahb_clk>, 241*2846c905SEmmanuel Vadot <&rpmhcc RPMH_CXO_CLK>; 242*2846c905SEmmanuel Vadot clock-names = "iface", "ref"; 243*2846c905SEmmanuel Vadot }; 244*2846c905SEmmanuel Vadot }; 245*2846c905SEmmanuel Vadot... 246