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