Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: display/msm: qcom, kaanapali-mdss: Add Kaanapali

Kaanapali introduces DPU 13.0.0 and DSI 2.10. Compared to SM8750,
Kaanapali has significant register changes, making it incompatible
with SM8750. So add MDSS/MDP display subsystem for Qualcomm Kaanapali.

Co-developed-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: Yuanjie Yang <yuanjie.yang@oss.qualcomm.com>
Patchwork: https://patchwork.freedesktop.org/patch/698700/
Link: https://lore.kernel.org/r/20260115092749.533-5-yuanjie.yang@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

authored by

Yuanjie Yang and committed by
Dmitry Baryshkov
52601597 ac9d8bf7

+297
+297
Documentation/devicetree/bindings/display/msm/qcom,kaanapali-mdss.yaml
··· 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 + 7 + title: Qualcomm Kaanapali Display MDSS 8 + 9 + maintainers: 10 + - Yongxing Mou <yongxing.mou@oss.qualcomm.com> 11 + - Yuanjie Yang <yuanjie.yang@oss.qualcomm.com> 12 + 13 + description: 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 + 19 + properties: 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 + 43 + patternProperties: 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 + 66 + required: 67 + - compatible 68 + 69 + unevaluatedProperties: false 70 + 71 + examples: 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 + };