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,kaanapali-mdss.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm Kaanapali Display MDSS 8 9maintainers: 10 - Yongxing Mou <yongxing.mou@oss.qualcomm.com> 11 - Yuanjie Yang <yuanjie.yang@oss.qualcomm.com> 12 13description: 14 Kaanapali MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks 15 like DPU display controller, DSI and DP interfaces etc. 16 17$ref: /schemas/display/msm/mdss-common.yaml# 18 19properties: 20 compatible: 21 const: qcom,kaanapali-mdss 22 23 clocks: 24 items: 25 - description: Display AHB 26 - description: Display hf AXI 27 - description: Display core 28 - description: Display AHB SWI 29 30 iommus: 31 maxItems: 1 32 33 interconnects: 34 items: 35 - description: Interconnect path from mdp0 port to the data bus 36 - description: Interconnect path from CPU to the reg bus 37 38 interconnect-names: 39 items: 40 - const: mdp0-mem 41 - const: cpu-cfg 42 43patternProperties: 44 "^display-controller@[0-9a-f]+$": 45 type: object 46 additionalProperties: true 47 properties: 48 compatible: 49 const: qcom,kaanapali-dpu 50 51 "^dsi@[0-9a-f]+$": 52 type: object 53 additionalProperties: true 54 properties: 55 compatible: 56 contains: 57 const: qcom,kaanapali-dsi-ctrl 58 59 "^phy@[0-9a-f]+$": 60 type: object 61 additionalProperties: true 62 properties: 63 compatible: 64 const: qcom,kaanapali-dsi-phy-3nm 65 66required: 67 - compatible 68 69unevaluatedProperties: false 70 71examples: 72 - | 73 #include <dt-bindings/clock/qcom,rpmh.h> 74 #include <dt-bindings/interconnect/qcom,icc.h> 75 #include <dt-bindings/interrupt-controller/arm-gic.h> 76 #include <dt-bindings/phy/phy-qcom-qmp.h> 77 #include <dt-bindings/power/qcom,rpmhpd.h> 78 79 display-subsystem@9800000 { 80 compatible = "qcom,kaanapali-mdss"; 81 reg = <0x09800000 0x1000>; 82 reg-names = "mdss"; 83 84 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>; 85 86 clocks = <&disp_cc_mdss_ahb_clk>, 87 <&gcc_disp_hf_axi_clk>, 88 <&disp_cc_mdss_mdp_clk>, 89 <&disp_cc_mdss_ahb_swi_clk>; 90 resets = <&disp_cc_mdss_core_bcr>; 91 92 power-domains = <&mdss_gdsc>; 93 94 iommus = <&apps_smmu 0x800 0x2>; 95 96 interrupt-controller; 97 #interrupt-cells = <1>; 98 99 #address-cells = <1>; 100 #size-cells = <1>; 101 ranges; 102 103 display-controller@9801000 { 104 compatible = "qcom,kaanapali-dpu"; 105 reg = <0x09801000 0x1c8000>, 106 <0x09b16000 0x3000>; 107 reg-names = "mdp", 108 "vbif"; 109 110 interrupts-extended = <&mdss 0>; 111 112 clocks = <&gcc_disp_hf_axi_clk>, 113 <&disp_cc_mdss_ahb_clk>, 114 <&disp_cc_mdss_mdp_lut_clk>, 115 <&disp_cc_mdss_mdp_clk>, 116 <&disp_cc_mdss_vsync_clk>; 117 clock-names = "nrt_bus", 118 "iface", 119 "lut", 120 "core", 121 "vsync"; 122 123 assigned-clocks = <&disp_cc_mdss_vsync_clk>; 124 assigned-clock-rates = <19200000>; 125 126 operating-points-v2 = <&mdp_opp_table>; 127 128 power-domains = <&rpmhpd RPMHPD_MMCX>; 129 130 ports { 131 #address-cells = <1>; 132 #size-cells = <0>; 133 134 port@0 { 135 reg = <0>; 136 137 dpu_intf1_out: endpoint { 138 remote-endpoint = <&mdss_dsi0_in>; 139 }; 140 }; 141 142 port@1 { 143 reg = <1>; 144 145 dpu_intf2_out: endpoint { 146 remote-endpoint = <&mdss_dsi1_in>; 147 }; 148 }; 149 }; 150 151 mdp_opp_table: opp-table { 152 compatible = "operating-points-v2"; 153 154 opp-156000000 { 155 opp-hz = /bits/ 64 <156000000>; 156 required-opps = <&rpmhpd_opp_low_svs_d1>; 157 }; 158 159 opp-207000000 { 160 opp-hz = /bits/ 64 <207000000>; 161 required-opps = <&rpmhpd_opp_low_svs>; 162 }; 163 164 opp-337000000 { 165 opp-hz = /bits/ 64 <337000000>; 166 required-opps = <&rpmhpd_opp_svs>; 167 }; 168 169 opp-417000000 { 170 opp-hz = /bits/ 64 <417000000>; 171 required-opps = <&rpmhpd_opp_svs_l1>; 172 }; 173 174 opp-532000000 { 175 opp-hz = /bits/ 64 <532000000>; 176 required-opps = <&rpmhpd_opp_nom>; 177 }; 178 179 opp-600000000 { 180 opp-hz = /bits/ 64 <600000000>; 181 required-opps = <&rpmhpd_opp_nom_l1>; 182 }; 183 184 opp-650000000 { 185 opp-hz = /bits/ 64 <650000000>; 186 required-opps = <&rpmhpd_opp_turbo>; 187 }; 188 }; 189 }; 190 191 dsi@9ac0000 { 192 compatible = "qcom,kaanapali-dsi-ctrl", "qcom,mdss-dsi-ctrl"; 193 reg = <0x09ac0000 0x1000>; 194 reg-names = "dsi_ctrl"; 195 196 interrupts-extended = <&mdss 4>; 197 198 clocks = <&disp_cc_mdss_byte0_clk>, 199 <&disp_cc_mdss_byte0_intf_clk>, 200 <&disp_cc_mdss_pclk0_clk>, 201 <&disp_cc_mdss_esc0_clk>, 202 <&disp_cc_mdss_ahb_clk>, 203 <&gcc_disp_hf_axi_clk>, 204 <&mdss_dsi0_phy 1>, 205 <&mdss_dsi0_phy 0>, 206 <&disp_cc_esync0_clk>, 207 <&disp_cc_osc_clk>, 208 <&disp_cc_mdss_byte0_clk_src>, 209 <&disp_cc_mdss_pclk0_clk_src>; 210 clock-names = "byte", 211 "byte_intf", 212 "pixel", 213 "core", 214 "iface", 215 "bus", 216 "dsi_pll_pixel", 217 "dsi_pll_byte", 218 "esync", 219 "osc", 220 "byte_src", 221 "pixel_src"; 222 223 operating-points-v2 = <&mdss_dsi_opp_table>; 224 225 power-domains = <&rpmhpd RPMHPD_MMCX>; 226 227 phys = <&mdss_dsi0_phy>; 228 phy-names = "dsi"; 229 230 #address-cells = <1>; 231 #size-cells = <0>; 232 233 ports { 234 #address-cells = <1>; 235 #size-cells = <0>; 236 237 port@0 { 238 reg = <0>; 239 240 mdss_dsi0_in: endpoint { 241 remote-endpoint = <&dpu_intf1_out>; 242 }; 243 }; 244 245 port@1 { 246 reg = <1>; 247 248 mdss_dsi0_out: endpoint { 249 remote-endpoint = <&panel0_in>; 250 data-lanes = <0 1 2 3>; 251 }; 252 }; 253 }; 254 255 mdss_dsi_opp_table: opp-table { 256 compatible = "operating-points-v2"; 257 258 opp-187500000 { 259 opp-hz = /bits/ 64 <187500000>; 260 required-opps = <&rpmhpd_opp_low_svs_d1>; 261 }; 262 263 opp-250000000 { 264 opp-hz = /bits/ 64 <250000000>; 265 required-opps = <&rpmhpd_opp_low_svs>; 266 }; 267 268 opp-312500000 { 269 opp-hz = /bits/ 64 <312500000>; 270 required-opps = <&rpmhpd_opp_svs>; 271 }; 272 273 opp-358000000 { 274 opp-hz = /bits/ 64 <358000000>; 275 required-opps = <&rpmhpd_opp_svs_l1>; 276 }; 277 }; 278 }; 279 280 mdss_dsi0_phy: phy@9ac1000 { 281 compatible = "qcom,kaanapali-dsi-phy-3nm"; 282 reg = <0x09ac1000 0x1cc>, 283 <0x09ac1200 0x80>, 284 <0x09ac1500 0x400>; 285 reg-names = "dsi_phy", 286 "dsi_phy_lane", 287 "dsi_pll"; 288 289 clocks = <&disp_cc_mdss_ahb_clk>, 290 <&rpmhcc RPMH_CXO_CLK>; 291 clock-names = "iface", 292 "ref"; 293 294 #clock-cells = <1>; 295 #phy-cells = <0>; 296 }; 297 }; 298