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,sc7280-mdss.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm SC7280 Display MDSS 8 9maintainers: 10 - Krishna Manikandan <quic_mkrishn@quicinc.com> 11 12description: 13 Device tree bindings for MSM Mobile Display Subsystem (MDSS) that encapsulates 14 sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree 15 bindings of MDSS are mentioned for SC7280. 16 17$ref: /schemas/display/msm/mdss-common.yaml# 18 19properties: 20 compatible: 21 const: qcom,sc7280-mdss 22 23 clocks: 24 items: 25 - description: Display AHB clock from gcc 26 - description: Display AHB clock from dispcc 27 - description: Display core clock 28 29 clock-names: 30 items: 31 - const: iface 32 - const: ahb 33 - const: core 34 35 iommus: 36 maxItems: 1 37 38 interconnects: 39 maxItems: 1 40 41 interconnect-names: 42 maxItems: 1 43 44patternProperties: 45 "^display-controller@[0-9a-f]+$": 46 type: object 47 properties: 48 compatible: 49 const: qcom,sc7280-dpu 50 51 "^displayport-controller@[0-9a-f]+$": 52 type: object 53 properties: 54 compatible: 55 const: qcom,sc7280-dp 56 57 "^dsi@[0-9a-f]+$": 58 type: object 59 properties: 60 compatible: 61 items: 62 - const: qcom,sc7280-dsi-ctrl 63 - const: qcom,mdss-dsi-ctrl 64 65 "^edp@[0-9a-f]+$": 66 type: object 67 properties: 68 compatible: 69 const: qcom,sc7280-edp 70 71 "^phy@[0-9a-f]+$": 72 type: object 73 properties: 74 compatible: 75 enum: 76 - qcom,sc7280-dsi-phy-7nm 77 - qcom,sc7280-edp-phy 78 79required: 80 - compatible 81 82unevaluatedProperties: false 83 84examples: 85 - | 86 #include <dt-bindings/clock/qcom,dispcc-sc7280.h> 87 #include <dt-bindings/clock/qcom,gcc-sc7280.h> 88 #include <dt-bindings/clock/qcom,rpmh.h> 89 #include <dt-bindings/interrupt-controller/arm-gic.h> 90 #include <dt-bindings/interconnect/qcom,sc7280.h> 91 #include <dt-bindings/power/qcom-rpmpd.h> 92 93 display-subsystem@ae00000 { 94 #address-cells = <1>; 95 #size-cells = <1>; 96 compatible = "qcom,sc7280-mdss"; 97 reg = <0xae00000 0x1000>; 98 reg-names = "mdss"; 99 power-domains = <&dispcc DISP_CC_MDSS_CORE_GDSC>; 100 clocks = <&gcc GCC_DISP_AHB_CLK>, 101 <&dispcc DISP_CC_MDSS_AHB_CLK>, 102 <&dispcc DISP_CC_MDSS_MDP_CLK>; 103 clock-names = "iface", 104 "ahb", 105 "core"; 106 107 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 108 interrupt-controller; 109 #interrupt-cells = <1>; 110 111 interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>; 112 interconnect-names = "mdp0-mem"; 113 114 iommus = <&apps_smmu 0x900 0x402>; 115 ranges; 116 117 display-controller@ae01000 { 118 compatible = "qcom,sc7280-dpu"; 119 reg = <0x0ae01000 0x8f000>, 120 <0x0aeb0000 0x2008>; 121 122 reg-names = "mdp", "vbif"; 123 124 clocks = <&gcc GCC_DISP_HF_AXI_CLK>, 125 <&gcc GCC_DISP_SF_AXI_CLK>, 126 <&dispcc DISP_CC_MDSS_AHB_CLK>, 127 <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>, 128 <&dispcc DISP_CC_MDSS_MDP_CLK>, 129 <&dispcc DISP_CC_MDSS_VSYNC_CLK>; 130 clock-names = "bus", 131 "nrt_bus", 132 "iface", 133 "lut", 134 "core", 135 "vsync"; 136 137 interrupt-parent = <&mdss>; 138 interrupts = <0>; 139 power-domains = <&rpmhpd SC7280_CX>; 140 operating-points-v2 = <&mdp_opp_table>; 141 142 ports { 143 #address-cells = <1>; 144 #size-cells = <0>; 145 146 port@0 { 147 reg = <0>; 148 dpu_intf1_out: endpoint { 149 remote-endpoint = <&dsi0_in>; 150 }; 151 }; 152 153 port@1 { 154 reg = <1>; 155 dpu_intf5_out: endpoint { 156 remote-endpoint = <&edp_in>; 157 }; 158 }; 159 160 port@2 { 161 reg = <2>; 162 dpu_intf0_out: endpoint { 163 remote-endpoint = <&dp_in>; 164 }; 165 }; 166 }; 167 }; 168 169 dsi@ae94000 { 170 compatible = "qcom,sc7280-dsi-ctrl", "qcom,mdss-dsi-ctrl"; 171 reg = <0x0ae94000 0x400>; 172 reg-names = "dsi_ctrl"; 173 174 interrupt-parent = <&mdss>; 175 interrupts = <4>; 176 177 clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>, 178 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>, 179 <&dispcc DISP_CC_MDSS_PCLK0_CLK>, 180 <&dispcc DISP_CC_MDSS_ESC0_CLK>, 181 <&dispcc DISP_CC_MDSS_AHB_CLK>, 182 <&gcc GCC_DISP_HF_AXI_CLK>; 183 clock-names = "byte", 184 "byte_intf", 185 "pixel", 186 "core", 187 "iface", 188 "bus"; 189 190 assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, 191 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>; 192 assigned-clock-parents = <&mdss_dsi_phy 0>, <&mdss_dsi_phy 1>; 193 194 operating-points-v2 = <&dsi_opp_table>; 195 power-domains = <&rpmhpd SC7280_CX>; 196 197 phys = <&mdss_dsi_phy>; 198 phy-names = "dsi"; 199 200 #address-cells = <1>; 201 #size-cells = <0>; 202 203 ports { 204 #address-cells = <1>; 205 #size-cells = <0>; 206 207 port@0 { 208 reg = <0>; 209 dsi0_in: endpoint { 210 remote-endpoint = <&dpu_intf1_out>; 211 }; 212 }; 213 214 port@1 { 215 reg = <1>; 216 dsi0_out: endpoint { 217 }; 218 }; 219 }; 220 221 dsi_opp_table: opp-table { 222 compatible = "operating-points-v2"; 223 224 opp-187500000 { 225 opp-hz = /bits/ 64 <187500000>; 226 required-opps = <&rpmhpd_opp_low_svs>; 227 }; 228 229 opp-300000000 { 230 opp-hz = /bits/ 64 <300000000>; 231 required-opps = <&rpmhpd_opp_svs>; 232 }; 233 234 opp-358000000 { 235 opp-hz = /bits/ 64 <358000000>; 236 required-opps = <&rpmhpd_opp_svs_l1>; 237 }; 238 }; 239 }; 240 241 mdss_dsi_phy: phy@ae94400 { 242 compatible = "qcom,sc7280-dsi-phy-7nm"; 243 reg = <0x0ae94400 0x200>, 244 <0x0ae94600 0x280>, 245 <0x0ae94900 0x280>; 246 reg-names = "dsi_phy", 247 "dsi_phy_lane", 248 "dsi_pll"; 249 250 #clock-cells = <1>; 251 #phy-cells = <0>; 252 253 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 254 <&rpmhcc RPMH_CXO_CLK>; 255 clock-names = "iface", "ref"; 256 257 vdds-supply = <&vreg_dsi_supply>; 258 }; 259 260 edp@aea0000 { 261 compatible = "qcom,sc7280-edp"; 262 pinctrl-names = "default"; 263 pinctrl-0 = <&edp_hot_plug_det>; 264 265 reg = <0xaea0000 0x200>, 266 <0xaea0200 0x200>, 267 <0xaea0400 0xc00>, 268 <0xaea1000 0x400>; 269 270 interrupt-parent = <&mdss>; 271 interrupts = <14>; 272 273 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 274 <&dispcc DISP_CC_MDSS_EDP_AUX_CLK>, 275 <&dispcc DISP_CC_MDSS_EDP_LINK_CLK>, 276 <&dispcc DISP_CC_MDSS_EDP_LINK_INTF_CLK>, 277 <&dispcc DISP_CC_MDSS_EDP_PIXEL_CLK>; 278 clock-names = "core_iface", 279 "core_aux", 280 "ctrl_link", 281 "ctrl_link_iface", 282 "stream_pixel"; 283 assigned-clocks = <&dispcc DISP_CC_MDSS_EDP_LINK_CLK_SRC>, 284 <&dispcc DISP_CC_MDSS_EDP_PIXEL_CLK_SRC>; 285 assigned-clock-parents = <&mdss_edp_phy 0>, <&mdss_edp_phy 1>; 286 287 phys = <&mdss_edp_phy>; 288 phy-names = "dp"; 289 290 operating-points-v2 = <&edp_opp_table>; 291 power-domains = <&rpmhpd SC7280_CX>; 292 293 ports { 294 #address-cells = <1>; 295 #size-cells = <0>; 296 297 port@0 { 298 reg = <0>; 299 edp_in: endpoint { 300 remote-endpoint = <&dpu_intf5_out>; 301 }; 302 }; 303 304 port@1 { 305 reg = <1>; 306 mdss_edp_out: endpoint { }; 307 }; 308 }; 309 310 edp_opp_table: opp-table { 311 compatible = "operating-points-v2"; 312 313 opp-160000000 { 314 opp-hz = /bits/ 64 <160000000>; 315 required-opps = <&rpmhpd_opp_low_svs>; 316 }; 317 318 opp-270000000 { 319 opp-hz = /bits/ 64 <270000000>; 320 required-opps = <&rpmhpd_opp_svs>; 321 }; 322 323 opp-540000000 { 324 opp-hz = /bits/ 64 <540000000>; 325 required-opps = <&rpmhpd_opp_nom>; 326 }; 327 328 opp-810000000 { 329 opp-hz = /bits/ 64 <810000000>; 330 required-opps = <&rpmhpd_opp_nom>; 331 }; 332 }; 333 }; 334 335 mdss_edp_phy: phy@aec2a00 { 336 compatible = "qcom,sc7280-edp-phy"; 337 338 reg = <0xaec2a00 0x19c>, 339 <0xaec2200 0xa0>, 340 <0xaec2600 0xa0>, 341 <0xaec2000 0x1c0>; 342 343 clocks = <&rpmhcc RPMH_CXO_CLK>, 344 <&gcc GCC_EDP_CLKREF_EN>; 345 clock-names = "aux", 346 "cfg_ahb"; 347 348 #clock-cells = <1>; 349 #phy-cells = <0>; 350 }; 351 352 displayport-controller@ae90000 { 353 compatible = "qcom,sc7280-dp"; 354 355 reg = <0xae90000 0x200>, 356 <0xae90200 0x200>, 357 <0xae90400 0xc00>, 358 <0xae91000 0x400>, 359 <0xae91400 0x400>; 360 361 interrupt-parent = <&mdss>; 362 interrupts = <12>; 363 364 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 365 <&dispcc DISP_CC_MDSS_DP_AUX_CLK>, 366 <&dispcc DISP_CC_MDSS_DP_LINK_CLK>, 367 <&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>, 368 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>; 369 clock-names = "core_iface", 370 "core_aux", 371 "ctrl_link", 372 "ctrl_link_iface", 373 "stream_pixel"; 374 assigned-clocks = <&dispcc DISP_CC_MDSS_DP_LINK_CLK_SRC>, 375 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>; 376 assigned-clock-parents = <&dp_phy 0>, <&dp_phy 1>; 377 phys = <&dp_phy>; 378 phy-names = "dp"; 379 380 operating-points-v2 = <&dp_opp_table>; 381 power-domains = <&rpmhpd SC7280_CX>; 382 383 #sound-dai-cells = <0>; 384 385 ports { 386 #address-cells = <1>; 387 #size-cells = <0>; 388 389 port@0 { 390 reg = <0>; 391 dp_in: endpoint { 392 remote-endpoint = <&dpu_intf0_out>; 393 }; 394 }; 395 396 port@1 { 397 reg = <1>; 398 dp_out: endpoint { }; 399 }; 400 }; 401 402 dp_opp_table: opp-table { 403 compatible = "operating-points-v2"; 404 405 opp-160000000 { 406 opp-hz = /bits/ 64 <160000000>; 407 required-opps = <&rpmhpd_opp_low_svs>; 408 }; 409 410 opp-270000000 { 411 opp-hz = /bits/ 64 <270000000>; 412 required-opps = <&rpmhpd_opp_svs>; 413 }; 414 415 opp-540000000 { 416 opp-hz = /bits/ 64 <540000000>; 417 required-opps = <&rpmhpd_opp_svs_l1>; 418 }; 419 420 opp-810000000 { 421 opp-hz = /bits/ 64 <810000000>; 422 required-opps = <&rpmhpd_opp_nom>; 423 }; 424 }; 425 }; 426 }; 427... 428