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