xref: /linux/Documentation/devicetree/bindings/display/msm/qcom,kaanapali-mdss.yaml (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
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