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,sc7180-mdss.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm SC7180 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 SC7180 target. 16 17$ref: /schemas/display/msm/mdss-common.yaml# 18 19properties: 20 compatible: 21 items: 22 - const: qcom,sc7180-mdss 23 24 clocks: 25 items: 26 - description: Display AHB clock from gcc 27 - description: Display AHB clock from dispcc 28 - description: Display core clock 29 30 clock-names: 31 items: 32 - const: iface 33 - const: ahb 34 - const: core 35 36 iommus: 37 maxItems: 1 38 39 interconnects: 40 maxItems: 1 41 42 interconnect-names: 43 maxItems: 1 44 45patternProperties: 46 "^display-controller@[0-9a-f]+$": 47 type: object 48 properties: 49 compatible: 50 const: qcom,sc7180-dpu 51 52 "^displayport-controller@[0-9a-f]+$": 53 type: object 54 properties: 55 compatible: 56 const: qcom,sc7180-dp 57 58 "^dsi@[0-9a-f]+$": 59 type: object 60 properties: 61 compatible: 62 const: qcom,mdss-dsi-ctrl 63 64 "^phy@[0-9a-f]+$": 65 type: object 66 properties: 67 compatible: 68 const: qcom,dsi-phy-10nm 69 70unevaluatedProperties: false 71 72examples: 73 - | 74 #include <dt-bindings/clock/qcom,dispcc-sc7180.h> 75 #include <dt-bindings/clock/qcom,gcc-sc7180.h> 76 #include <dt-bindings/clock/qcom,rpmh.h> 77 #include <dt-bindings/interrupt-controller/arm-gic.h> 78 #include <dt-bindings/interconnect/qcom,sdm845.h> 79 #include <dt-bindings/power/qcom-rpmpd.h> 80 81 display-subsystem@ae00000 { 82 #address-cells = <1>; 83 #size-cells = <1>; 84 compatible = "qcom,sc7180-mdss"; 85 reg = <0xae00000 0x1000>; 86 reg-names = "mdss"; 87 power-domains = <&dispcc MDSS_GDSC>; 88 clocks = <&gcc GCC_DISP_AHB_CLK>, 89 <&dispcc DISP_CC_MDSS_AHB_CLK>, 90 <&dispcc DISP_CC_MDSS_MDP_CLK>; 91 clock-names = "iface", "ahb", "core"; 92 93 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 94 interrupt-controller; 95 #interrupt-cells = <1>; 96 97 interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>; 98 interconnect-names = "mdp0-mem"; 99 100 iommus = <&apps_smmu 0x800 0x2>; 101 ranges; 102 103 display-controller@ae01000 { 104 compatible = "qcom,sc7180-dpu"; 105 reg = <0x0ae01000 0x8f000>, 106 <0x0aeb0000 0x2008>; 107 108 reg-names = "mdp", "vbif"; 109 110 clocks = <&gcc GCC_DISP_HF_AXI_CLK>, 111 <&dispcc DISP_CC_MDSS_AHB_CLK>, 112 <&dispcc DISP_CC_MDSS_ROT_CLK>, 113 <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>, 114 <&dispcc DISP_CC_MDSS_MDP_CLK>, 115 <&dispcc DISP_CC_MDSS_VSYNC_CLK>; 116 clock-names = "bus", "iface", "rot", "lut", "core", 117 "vsync"; 118 119 interrupt-parent = <&mdss>; 120 interrupts = <0>; 121 power-domains = <&rpmhpd SC7180_CX>; 122 operating-points-v2 = <&mdp_opp_table>; 123 124 ports { 125 #address-cells = <1>; 126 #size-cells = <0>; 127 128 port@0 { 129 reg = <0>; 130 dpu_intf1_out: endpoint { 131 remote-endpoint = <&dsi0_in>; 132 }; 133 }; 134 135 port@2 { 136 reg = <2>; 137 dpu_intf0_out: endpoint { 138 remote-endpoint = <&dp_in>; 139 }; 140 }; 141 }; 142 }; 143 144 dsi@ae94000 { 145 compatible = "qcom,mdss-dsi-ctrl"; 146 reg = <0x0ae94000 0x400>; 147 reg-names = "dsi_ctrl"; 148 149 interrupt-parent = <&mdss>; 150 interrupts = <4>; 151 152 clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>, 153 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>, 154 <&dispcc DISP_CC_MDSS_PCLK0_CLK>, 155 <&dispcc DISP_CC_MDSS_ESC0_CLK>, 156 <&dispcc DISP_CC_MDSS_AHB_CLK>, 157 <&gcc GCC_DISP_HF_AXI_CLK>; 158 clock-names = "byte", 159 "byte_intf", 160 "pixel", 161 "core", 162 "iface", 163 "bus"; 164 165 assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>; 166 assigned-clock-parents = <&dsi_phy 0>, <&dsi_phy 1>; 167 168 operating-points-v2 = <&dsi_opp_table>; 169 power-domains = <&rpmhpd SC7180_CX>; 170 171 phys = <&dsi_phy>; 172 phy-names = "dsi"; 173 174 #address-cells = <1>; 175 #size-cells = <0>; 176 177 ports { 178 #address-cells = <1>; 179 #size-cells = <0>; 180 181 port@0 { 182 reg = <0>; 183 dsi0_in: endpoint { 184 remote-endpoint = <&dpu_intf1_out>; 185 }; 186 }; 187 188 port@1 { 189 reg = <1>; 190 dsi0_out: endpoint { 191 }; 192 }; 193 }; 194 195 dsi_opp_table: opp-table { 196 compatible = "operating-points-v2"; 197 198 opp-187500000 { 199 opp-hz = /bits/ 64 <187500000>; 200 required-opps = <&rpmhpd_opp_low_svs>; 201 }; 202 203 opp-300000000 { 204 opp-hz = /bits/ 64 <300000000>; 205 required-opps = <&rpmhpd_opp_svs>; 206 }; 207 208 opp-358000000 { 209 opp-hz = /bits/ 64 <358000000>; 210 required-opps = <&rpmhpd_opp_svs_l1>; 211 }; 212 }; 213 }; 214 215 dsi_phy: phy@ae94400 { 216 compatible = "qcom,dsi-phy-10nm"; 217 reg = <0x0ae94400 0x200>, 218 <0x0ae94600 0x280>, 219 <0x0ae94a00 0x1e0>; 220 reg-names = "dsi_phy", 221 "dsi_phy_lane", 222 "dsi_pll"; 223 224 #clock-cells = <1>; 225 #phy-cells = <0>; 226 227 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 228 <&rpmhcc RPMH_CXO_CLK>; 229 clock-names = "iface", "ref"; 230 vdds-supply = <&vreg_dsi_phy>; 231 }; 232 233 displayport-controller@ae90000 { 234 compatible = "qcom,sc7180-dp"; 235 236 reg = <0xae90000 0x200>, 237 <0xae90200 0x200>, 238 <0xae90400 0xc00>, 239 <0xae91000 0x400>, 240 <0xae91400 0x400>; 241 242 interrupt-parent = <&mdss>; 243 interrupts = <12>; 244 245 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, 246 <&dispcc DISP_CC_MDSS_DP_AUX_CLK>, 247 <&dispcc DISP_CC_MDSS_DP_LINK_CLK>, 248 <&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>, 249 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>; 250 clock-names = "core_iface", "core_aux", "ctrl_link", 251 "ctrl_link_iface", "stream_pixel"; 252 assigned-clocks = <&dispcc DISP_CC_MDSS_DP_LINK_CLK_SRC>, 253 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>; 254 assigned-clock-parents = <&dp_phy 0>, <&dp_phy 1>; 255 phys = <&dp_phy>; 256 phy-names = "dp"; 257 258 operating-points-v2 = <&dp_opp_table>; 259 power-domains = <&rpmhpd SC7180_CX>; 260 261 #sound-dai-cells = <0>; 262 263 ports { 264 #address-cells = <1>; 265 #size-cells = <0>; 266 port@0 { 267 reg = <0>; 268 dp_in: endpoint { 269 remote-endpoint = <&dpu_intf0_out>; 270 }; 271 }; 272 273 port@1 { 274 reg = <1>; 275 dp_out: endpoint { }; 276 }; 277 }; 278 279 dp_opp_table: opp-table { 280 compatible = "operating-points-v2"; 281 282 opp-160000000 { 283 opp-hz = /bits/ 64 <160000000>; 284 required-opps = <&rpmhpd_opp_low_svs>; 285 }; 286 287 opp-270000000 { 288 opp-hz = /bits/ 64 <270000000>; 289 required-opps = <&rpmhpd_opp_svs>; 290 }; 291 292 opp-540000000 { 293 opp-hz = /bits/ 64 <540000000>; 294 required-opps = <&rpmhpd_opp_svs_l1>; 295 }; 296 297 opp-810000000 { 298 opp-hz = /bits/ 64 <810000000>; 299 required-opps = <&rpmhpd_opp_nom>; 300 }; 301 }; 302 }; 303 }; 304... 305