xref: /linux/Documentation/devicetree/bindings/display/msm/qcom,glymur-mdss.yaml (revision 3f1c07fc21c68bd3bd2df9d2c9441f6485e934d9)
1*1aee577bSAbel Vesa# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2*1aee577bSAbel Vesa%YAML 1.2
3*1aee577bSAbel Vesa---
4*1aee577bSAbel Vesa$id: http://devicetree.org/schemas/display/msm/qcom,glymur-mdss.yaml#
5*1aee577bSAbel Vesa$schema: http://devicetree.org/meta-schemas/core.yaml#
6*1aee577bSAbel Vesa
7*1aee577bSAbel Vesatitle: Qualcomm Glymur Display MDSS
8*1aee577bSAbel Vesa
9*1aee577bSAbel Vesamaintainers:
10*1aee577bSAbel Vesa  - Abel Vesa <abel.vesa@linaro.org>
11*1aee577bSAbel Vesa
12*1aee577bSAbel Vesadescription:
13*1aee577bSAbel Vesa  Glymur MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
14*1aee577bSAbel Vesa  DPU display controller, DP interfaces, etc.
15*1aee577bSAbel Vesa
16*1aee577bSAbel Vesa$ref: /schemas/display/msm/mdss-common.yaml#
17*1aee577bSAbel Vesa
18*1aee577bSAbel Vesaproperties:
19*1aee577bSAbel Vesa  compatible:
20*1aee577bSAbel Vesa    const: qcom,glymur-mdss
21*1aee577bSAbel Vesa
22*1aee577bSAbel Vesa  clocks:
23*1aee577bSAbel Vesa    items:
24*1aee577bSAbel Vesa      - description: Display AHB
25*1aee577bSAbel Vesa      - description: Display hf AXI
26*1aee577bSAbel Vesa      - description: Display core
27*1aee577bSAbel Vesa
28*1aee577bSAbel Vesa  iommus:
29*1aee577bSAbel Vesa    maxItems: 1
30*1aee577bSAbel Vesa
31*1aee577bSAbel Vesa  interconnects:
32*1aee577bSAbel Vesa    items:
33*1aee577bSAbel Vesa      - description: Interconnect path from mdp0 port to the data bus
34*1aee577bSAbel Vesa      - description: Interconnect path from CPU to the reg bus
35*1aee577bSAbel Vesa
36*1aee577bSAbel Vesa  interconnect-names:
37*1aee577bSAbel Vesa    items:
38*1aee577bSAbel Vesa      - const: mdp0-mem
39*1aee577bSAbel Vesa      - const: cpu-cfg
40*1aee577bSAbel Vesa
41*1aee577bSAbel VesapatternProperties:
42*1aee577bSAbel Vesa  "^display-controller@[0-9a-f]+$":
43*1aee577bSAbel Vesa    type: object
44*1aee577bSAbel Vesa    additionalProperties: true
45*1aee577bSAbel Vesa    properties:
46*1aee577bSAbel Vesa      compatible:
47*1aee577bSAbel Vesa        const: qcom,glymur-dpu
48*1aee577bSAbel Vesa
49*1aee577bSAbel Vesa  "^displayport-controller@[0-9a-f]+$":
50*1aee577bSAbel Vesa    type: object
51*1aee577bSAbel Vesa    additionalProperties: true
52*1aee577bSAbel Vesa    properties:
53*1aee577bSAbel Vesa      compatible:
54*1aee577bSAbel Vesa        const: qcom,glymur-dp
55*1aee577bSAbel Vesa
56*1aee577bSAbel Vesa  "^phy@[0-9a-f]+$":
57*1aee577bSAbel Vesa    type: object
58*1aee577bSAbel Vesa    additionalProperties: true
59*1aee577bSAbel Vesa    properties:
60*1aee577bSAbel Vesa      compatible:
61*1aee577bSAbel Vesa        const: qcom,glymur-dp-phy
62*1aee577bSAbel Vesa
63*1aee577bSAbel Vesarequired:
64*1aee577bSAbel Vesa  - compatible
65*1aee577bSAbel Vesa
66*1aee577bSAbel VesaunevaluatedProperties: false
67*1aee577bSAbel Vesa
68*1aee577bSAbel Vesaexamples:
69*1aee577bSAbel Vesa  - |
70*1aee577bSAbel Vesa    #include <dt-bindings/clock/qcom,rpmh.h>
71*1aee577bSAbel Vesa    #include <dt-bindings/interconnect/qcom,icc.h>
72*1aee577bSAbel Vesa    #include <dt-bindings/interconnect/qcom,glymur-rpmh.h>
73*1aee577bSAbel Vesa    #include <dt-bindings/interrupt-controller/arm-gic.h>
74*1aee577bSAbel Vesa    #include <dt-bindings/phy/phy-qcom-qmp.h>
75*1aee577bSAbel Vesa    #include <dt-bindings/power/qcom,rpmhpd.h>
76*1aee577bSAbel Vesa
77*1aee577bSAbel Vesa    display-subsystem@ae00000 {
78*1aee577bSAbel Vesa            compatible = "qcom,glymur-mdss";
79*1aee577bSAbel Vesa            reg = <0x0ae00000 0x1000>;
80*1aee577bSAbel Vesa            reg-names = "mdss";
81*1aee577bSAbel Vesa
82*1aee577bSAbel Vesa            interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
83*1aee577bSAbel Vesa
84*1aee577bSAbel Vesa            clocks = <&dispcc_ahb_clk>,
85*1aee577bSAbel Vesa                     <&gcc_disp_hf_axi_clk>,
86*1aee577bSAbel Vesa                     <&dispcc_mdp_clk>;
87*1aee577bSAbel Vesa            clock-names = "bus", "nrt_bus", "core";
88*1aee577bSAbel Vesa
89*1aee577bSAbel Vesa            interconnects = <&mmss_noc MASTER_MDP QCOM_ICC_TAG_ALWAYS
90*1aee577bSAbel Vesa                             &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
91*1aee577bSAbel Vesa                            <&hsc_noc MASTER_APPSS_PROC QCOM_ICC_TAG_ACTIVE_ONLY
92*1aee577bSAbel Vesa                             &config_noc SLAVE_DISPLAY_CFG QCOM_ICC_TAG_ACTIVE_ONLY>;
93*1aee577bSAbel Vesa            interconnect-names = "mdp0-mem",
94*1aee577bSAbel Vesa                                 "cpu-cfg";
95*1aee577bSAbel Vesa
96*1aee577bSAbel Vesa            resets = <&disp_cc_mdss_core_bcr>;
97*1aee577bSAbel Vesa
98*1aee577bSAbel Vesa            power-domains = <&mdss_gdsc>;
99*1aee577bSAbel Vesa
100*1aee577bSAbel Vesa            iommus = <&apps_smmu 0x1c00 0x2>;
101*1aee577bSAbel Vesa
102*1aee577bSAbel Vesa            interrupt-controller;
103*1aee577bSAbel Vesa            #interrupt-cells = <1>;
104*1aee577bSAbel Vesa
105*1aee577bSAbel Vesa            #address-cells = <1>;
106*1aee577bSAbel Vesa            #size-cells = <1>;
107*1aee577bSAbel Vesa            ranges;
108*1aee577bSAbel Vesa
109*1aee577bSAbel Vesa            display-controller@ae01000 {
110*1aee577bSAbel Vesa                compatible = "qcom,glymur-dpu";
111*1aee577bSAbel Vesa                reg = <0x0ae01000 0x8f000>,
112*1aee577bSAbel Vesa                      <0x0aeb0000 0x2008>;
113*1aee577bSAbel Vesa                reg-names = "mdp", "vbif";
114*1aee577bSAbel Vesa
115*1aee577bSAbel Vesa                clocks = <&gcc_axi_clk>,
116*1aee577bSAbel Vesa                         <&dispcc_ahb_clk>,
117*1aee577bSAbel Vesa                         <&dispcc_mdp_lut_clk>,
118*1aee577bSAbel Vesa                         <&dispcc_mdp_clk>,
119*1aee577bSAbel Vesa                         <&dispcc_mdp_vsync_clk>;
120*1aee577bSAbel Vesa                clock-names = "nrt_bus",
121*1aee577bSAbel Vesa                              "iface",
122*1aee577bSAbel Vesa                              "lut",
123*1aee577bSAbel Vesa                              "core",
124*1aee577bSAbel Vesa                              "vsync";
125*1aee577bSAbel Vesa
126*1aee577bSAbel Vesa                assigned-clocks = <&dispcc_mdp_vsync_clk>;
127*1aee577bSAbel Vesa                assigned-clock-rates = <19200000>;
128*1aee577bSAbel Vesa
129*1aee577bSAbel Vesa                operating-points-v2 = <&mdp_opp_table>;
130*1aee577bSAbel Vesa                power-domains = <&rpmhpd RPMHPD_MMCX>;
131*1aee577bSAbel Vesa
132*1aee577bSAbel Vesa                interrupt-parent = <&mdss>;
133*1aee577bSAbel Vesa                interrupts = <0>;
134*1aee577bSAbel Vesa
135*1aee577bSAbel Vesa                ports {
136*1aee577bSAbel Vesa                    #address-cells = <1>;
137*1aee577bSAbel Vesa                    #size-cells = <0>;
138*1aee577bSAbel Vesa
139*1aee577bSAbel Vesa                    port@0 {
140*1aee577bSAbel Vesa                        reg = <0>;
141*1aee577bSAbel Vesa                        dpu_intf1_out: endpoint {
142*1aee577bSAbel Vesa                            remote-endpoint = <&dsi0_in>;
143*1aee577bSAbel Vesa                        };
144*1aee577bSAbel Vesa                    };
145*1aee577bSAbel Vesa
146*1aee577bSAbel Vesa                    port@1 {
147*1aee577bSAbel Vesa                        reg = <1>;
148*1aee577bSAbel Vesa                        dpu_intf2_out: endpoint {
149*1aee577bSAbel Vesa                            remote-endpoint = <&dsi1_in>;
150*1aee577bSAbel Vesa                        };
151*1aee577bSAbel Vesa                    };
152*1aee577bSAbel Vesa                };
153*1aee577bSAbel Vesa
154*1aee577bSAbel Vesa                mdp_opp_table: opp-table {
155*1aee577bSAbel Vesa                    compatible = "operating-points-v2";
156*1aee577bSAbel Vesa
157*1aee577bSAbel Vesa                    opp-200000000 {
158*1aee577bSAbel Vesa                        opp-hz = /bits/ 64 <200000000>;
159*1aee577bSAbel Vesa                        required-opps = <&rpmhpd_opp_low_svs>;
160*1aee577bSAbel Vesa                    };
161*1aee577bSAbel Vesa
162*1aee577bSAbel Vesa                    opp-325000000 {
163*1aee577bSAbel Vesa                        opp-hz = /bits/ 64 <325000000>;
164*1aee577bSAbel Vesa                        required-opps = <&rpmhpd_opp_svs>;
165*1aee577bSAbel Vesa                    };
166*1aee577bSAbel Vesa
167*1aee577bSAbel Vesa                    opp-375000000 {
168*1aee577bSAbel Vesa                        opp-hz = /bits/ 64 <375000000>;
169*1aee577bSAbel Vesa                        required-opps = <&rpmhpd_opp_svs_l1>;
170*1aee577bSAbel Vesa                    };
171*1aee577bSAbel Vesa
172*1aee577bSAbel Vesa                    opp-514000000 {
173*1aee577bSAbel Vesa                        opp-hz = /bits/ 64 <514000000>;
174*1aee577bSAbel Vesa                        required-opps = <&rpmhpd_opp_nom>;
175*1aee577bSAbel Vesa                    };
176*1aee577bSAbel Vesa                };
177*1aee577bSAbel Vesa            };
178*1aee577bSAbel Vesa
179*1aee577bSAbel Vesa            displayport-controller@ae90000 {
180*1aee577bSAbel Vesa                compatible = "qcom,glymur-dp";
181*1aee577bSAbel Vesa                reg = <0xae90000 0x200>,
182*1aee577bSAbel Vesa                      <0xae90200 0x200>,
183*1aee577bSAbel Vesa                      <0xae90400 0x600>,
184*1aee577bSAbel Vesa                      <0xae91000 0x400>,
185*1aee577bSAbel Vesa                      <0xae91400 0x400>;
186*1aee577bSAbel Vesa
187*1aee577bSAbel Vesa                interrupt-parent = <&mdss>;
188*1aee577bSAbel Vesa                interrupts = <12>;
189*1aee577bSAbel Vesa
190*1aee577bSAbel Vesa                clocks = <&dispcc_mdss_ahb_clk>,
191*1aee577bSAbel Vesa                         <&dispcc_dptx0_aux_clk>,
192*1aee577bSAbel Vesa                         <&dispcc_dptx0_link_clk>,
193*1aee577bSAbel Vesa                         <&dispcc_dptx0_link_intf_clk>,
194*1aee577bSAbel Vesa                         <&dispcc_dptx0_pixel0_clk>,
195*1aee577bSAbel Vesa                         <&dispcc_dptx0_pixel1_clk>;
196*1aee577bSAbel Vesa                clock-names = "core_iface",
197*1aee577bSAbel Vesa                              "core_aux",
198*1aee577bSAbel Vesa                              "ctrl_link",
199*1aee577bSAbel Vesa                              "ctrl_link_iface",
200*1aee577bSAbel Vesa                              "stream_pixel",
201*1aee577bSAbel Vesa                              "stream_1_pixel";
202*1aee577bSAbel Vesa
203*1aee577bSAbel Vesa                assigned-clocks = <&dispcc_mdss_dptx0_link_clk_src>,
204*1aee577bSAbel Vesa                                  <&dispcc_mdss_dptx0_pixel0_clk_src>,
205*1aee577bSAbel Vesa                                  <&dispcc_mdss_dptx0_pixel1_clk_src>;
206*1aee577bSAbel Vesa                assigned-clock-parents = <&usb_1_ss0_qmpphy QMP_USB43DP_DP_LINK_CLK>,
207*1aee577bSAbel Vesa                                         <&usb_1_ss0_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>,
208*1aee577bSAbel Vesa                                         <&usb_1_ss0_qmpphy QMP_USB43DP_DP_VCO_DIV_CLK>;
209*1aee577bSAbel Vesa
210*1aee577bSAbel Vesa                operating-points-v2 = <&mdss_dp0_opp_table>;
211*1aee577bSAbel Vesa
212*1aee577bSAbel Vesa                power-domains = <&rpmhpd RPMHPD_MMCX>;
213*1aee577bSAbel Vesa
214*1aee577bSAbel Vesa                phys = <&usb_1_ss0_qmpphy QMP_USB43DP_DP_PHY>;
215*1aee577bSAbel Vesa                phy-names = "dp";
216*1aee577bSAbel Vesa
217*1aee577bSAbel Vesa                #sound-dai-cells = <0>;
218*1aee577bSAbel Vesa
219*1aee577bSAbel Vesa                ports {
220*1aee577bSAbel Vesa                    #address-cells = <1>;
221*1aee577bSAbel Vesa                    #size-cells = <0>;
222*1aee577bSAbel Vesa
223*1aee577bSAbel Vesa                    port@0 {
224*1aee577bSAbel Vesa                        reg = <0>;
225*1aee577bSAbel Vesa
226*1aee577bSAbel Vesa                        mdss_dp0_in: endpoint {
227*1aee577bSAbel Vesa                          remote-endpoint = <&mdss_intf0_out>;
228*1aee577bSAbel Vesa                        };
229*1aee577bSAbel Vesa                    };
230*1aee577bSAbel Vesa
231*1aee577bSAbel Vesa                    port@1 {
232*1aee577bSAbel Vesa                        reg = <1>;
233*1aee577bSAbel Vesa
234*1aee577bSAbel Vesa                        mdss_dp0_out: endpoint {
235*1aee577bSAbel Vesa                        };
236*1aee577bSAbel Vesa                    };
237*1aee577bSAbel Vesa                };
238*1aee577bSAbel Vesa
239*1aee577bSAbel Vesa                mdss_dp0_opp_table: opp-table {
240*1aee577bSAbel Vesa                    compatible = "operating-points-v2";
241*1aee577bSAbel Vesa
242*1aee577bSAbel Vesa                    opp-160000000 {
243*1aee577bSAbel Vesa                        opp-hz = /bits/ 64 <160000000>;
244*1aee577bSAbel Vesa                        required-opps = <&rpmhpd_opp_low_svs>;
245*1aee577bSAbel Vesa                    };
246*1aee577bSAbel Vesa
247*1aee577bSAbel Vesa                    opp-270000000 {
248*1aee577bSAbel Vesa                        opp-hz = /bits/ 64 <270000000>;
249*1aee577bSAbel Vesa                        required-opps = <&rpmhpd_opp_svs>;
250*1aee577bSAbel Vesa                    };
251*1aee577bSAbel Vesa
252*1aee577bSAbel Vesa                    opp-540000000 {
253*1aee577bSAbel Vesa                        opp-hz = /bits/ 64 <540000000>;
254*1aee577bSAbel Vesa                        required-opps = <&rpmhpd_opp_svs_l1>;
255*1aee577bSAbel Vesa                    };
256*1aee577bSAbel Vesa
257*1aee577bSAbel Vesa                    opp-810000000 {
258*1aee577bSAbel Vesa                        opp-hz = /bits/ 64 <810000000>;
259*1aee577bSAbel Vesa                        required-opps = <&rpmhpd_opp_nom>;
260*1aee577bSAbel Vesa                    };
261*1aee577bSAbel Vesa                };
262*1aee577bSAbel Vesa            };
263*1aee577bSAbel Vesa        };
264*1aee577bSAbel Vesa...
265