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