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