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