1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
4 $id: http://devicetree.org/schemas/display/msm/qcom,sc7280-mdss.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Qualcomm SC7280 Display MDSS
10 - Krishna Manikandan <quic_mkrishn@quicinc.com>
13 Device tree bindings for MSM Mobile Display Subsystem (MDSS) that encapsulates
14 sub-blocks like DPU display controller, DSI and DP interfaces etc. Device tree
15 bindings of MDSS are mentioned for SC7280.
17 $ref: /schemas/display/msm/mdss-common.yaml#
21 const: qcom,sc7280-mdss
25 - description: Display AHB clock from gcc
26 - description: Display AHB clock from dispcc
27 - description: Display core clock
40 - description: Interconnect path from mdp0 port to the data bus
41 - description: Interconnect path from CPU to the reg bus
49 "^display-controller@[0-9a-f]+$":
51 additionalProperties: true
55 const: qcom,sc7280-dpu
57 "^displayport-controller@[0-9a-f]+$":
59 additionalProperties: true
67 additionalProperties: true
72 - const: qcom,sc7280-dsi-ctrl
73 - const: qcom,mdss-dsi-ctrl
77 additionalProperties: true
81 const: qcom,sc7280-edp
85 additionalProperties: true
90 - qcom,sc7280-dsi-phy-7nm
96 unevaluatedProperties: false
100 #include <dt-bindings/clock/qcom,dispcc-sc7280.h>
101 #include <dt-bindings/clock/qcom,gcc-sc7280.h>
102 #include <dt-bindings/clock/qcom,rpmh.h>
103 #include <dt-bindings/interrupt-controller/arm-gic.h>
104 #include <dt-bindings/interconnect/qcom,sc7280.h>
105 #include <dt-bindings/power/qcom-rpmpd.h>
107 display-subsystem@ae00000 {
108 #address-cells = <1>;
110 compatible = "qcom,sc7280-mdss";
111 reg = <0xae00000 0x1000>;
113 power-domains = <&dispcc DISP_CC_MDSS_CORE_GDSC>;
114 clocks = <&gcc GCC_DISP_AHB_CLK>,
115 <&dispcc DISP_CC_MDSS_AHB_CLK>,
116 <&dispcc DISP_CC_MDSS_MDP_CLK>;
117 clock-names = "iface",
121 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
122 interrupt-controller;
123 #interrupt-cells = <1>;
125 interconnects = <&mmss_noc MASTER_MDP0 &mc_virt SLAVE_EBI1>,
126 <&gem_noc MASTER_APPSS_PROC &cnoc2 SLAVE_DISPLAY_CFG>;
127 interconnect-names = "mdp0-mem",
130 iommus = <&apps_smmu 0x900 0x402>;
133 display-controller@ae01000 {
134 compatible = "qcom,sc7280-dpu";
135 reg = <0x0ae01000 0x8f000>,
138 reg-names = "mdp", "vbif";
140 clocks = <&gcc GCC_DISP_HF_AXI_CLK>,
141 <&gcc GCC_DISP_SF_AXI_CLK>,
142 <&dispcc DISP_CC_MDSS_AHB_CLK>,
143 <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
144 <&dispcc DISP_CC_MDSS_MDP_CLK>,
145 <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
153 interrupt-parent = <&mdss>;
155 power-domains = <&rpmhpd SC7280_CX>;
156 operating-points-v2 = <&mdp_opp_table>;
159 #address-cells = <1>;
164 dpu_intf1_out: endpoint {
165 remote-endpoint = <&dsi0_in>;
171 dpu_intf5_out: endpoint {
172 remote-endpoint = <&edp_in>;
178 dpu_intf0_out: endpoint {
179 remote-endpoint = <&dp_in>;
186 compatible = "qcom,sc7280-dsi-ctrl", "qcom,mdss-dsi-ctrl";
187 reg = <0x0ae94000 0x400>;
188 reg-names = "dsi_ctrl";
190 interrupt-parent = <&mdss>;
193 clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
194 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
195 <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
196 <&dispcc DISP_CC_MDSS_ESC0_CLK>,
197 <&dispcc DISP_CC_MDSS_AHB_CLK>,
198 <&gcc GCC_DISP_HF_AXI_CLK>;
199 clock-names = "byte",
206 assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
207 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
208 assigned-clock-parents = <&mdss_dsi_phy 0>, <&mdss_dsi_phy 1>;
210 operating-points-v2 = <&dsi_opp_table>;
211 power-domains = <&rpmhpd SC7280_CX>;
213 phys = <&mdss_dsi_phy>;
216 #address-cells = <1>;
220 #address-cells = <1>;
226 remote-endpoint = <&dpu_intf1_out>;
237 dsi_opp_table: opp-table {
238 compatible = "operating-points-v2";
241 opp-hz = /bits/ 64 <187500000>;
242 required-opps = <&rpmhpd_opp_low_svs>;
246 opp-hz = /bits/ 64 <300000000>;
247 required-opps = <&rpmhpd_opp_svs>;
251 opp-hz = /bits/ 64 <358000000>;
252 required-opps = <&rpmhpd_opp_svs_l1>;
257 mdss_dsi_phy: phy@ae94400 {
258 compatible = "qcom,sc7280-dsi-phy-7nm";
259 reg = <0x0ae94400 0x200>,
262 reg-names = "dsi_phy",
269 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
270 <&rpmhcc RPMH_CXO_CLK>;
271 clock-names = "iface", "ref";
273 vdds-supply = <&vreg_dsi_supply>;
277 compatible = "qcom,sc7280-edp";
278 pinctrl-names = "default";
279 pinctrl-0 = <&edp_hot_plug_det>;
281 reg = <0xaea0000 0x200>,
286 interrupt-parent = <&mdss>;
289 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
290 <&dispcc DISP_CC_MDSS_EDP_AUX_CLK>,
291 <&dispcc DISP_CC_MDSS_EDP_LINK_CLK>,
292 <&dispcc DISP_CC_MDSS_EDP_LINK_INTF_CLK>,
293 <&dispcc DISP_CC_MDSS_EDP_PIXEL_CLK>;
294 clock-names = "core_iface",
299 assigned-clocks = <&dispcc DISP_CC_MDSS_EDP_LINK_CLK_SRC>,
300 <&dispcc DISP_CC_MDSS_EDP_PIXEL_CLK_SRC>;
301 assigned-clock-parents = <&mdss_edp_phy 0>, <&mdss_edp_phy 1>;
303 phys = <&mdss_edp_phy>;
306 operating-points-v2 = <&edp_opp_table>;
307 power-domains = <&rpmhpd SC7280_CX>;
310 #address-cells = <1>;
316 remote-endpoint = <&dpu_intf5_out>;
322 mdss_edp_out: endpoint { };
326 edp_opp_table: opp-table {
327 compatible = "operating-points-v2";
330 opp-hz = /bits/ 64 <160000000>;
331 required-opps = <&rpmhpd_opp_low_svs>;
335 opp-hz = /bits/ 64 <270000000>;
336 required-opps = <&rpmhpd_opp_svs>;
340 opp-hz = /bits/ 64 <540000000>;
341 required-opps = <&rpmhpd_opp_nom>;
345 opp-hz = /bits/ 64 <810000000>;
346 required-opps = <&rpmhpd_opp_nom>;
351 mdss_edp_phy: phy@aec2a00 {
352 compatible = "qcom,sc7280-edp-phy";
354 reg = <0xaec2a00 0x19c>,
359 clocks = <&rpmhcc RPMH_CXO_CLK>,
360 <&gcc GCC_EDP_CLKREF_EN>;
368 displayport-controller@ae90000 {
369 compatible = "qcom,sc7280-dp";
371 reg = <0xae90000 0x200>,
377 interrupt-parent = <&mdss>;
380 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
381 <&dispcc DISP_CC_MDSS_DP_AUX_CLK>,
382 <&dispcc DISP_CC_MDSS_DP_LINK_CLK>,
383 <&dispcc DISP_CC_MDSS_DP_LINK_INTF_CLK>,
384 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK>;
385 clock-names = "core_iface",
390 assigned-clocks = <&dispcc DISP_CC_MDSS_DP_LINK_CLK_SRC>,
391 <&dispcc DISP_CC_MDSS_DP_PIXEL_CLK_SRC>;
392 assigned-clock-parents = <&dp_phy 0>, <&dp_phy 1>;
396 operating-points-v2 = <&dp_opp_table>;
397 power-domains = <&rpmhpd SC7280_CX>;
399 #sound-dai-cells = <0>;
402 #address-cells = <1>;
408 remote-endpoint = <&dpu_intf0_out>;
414 dp_out: endpoint { };
418 dp_opp_table: opp-table {
419 compatible = "operating-points-v2";
422 opp-hz = /bits/ 64 <160000000>;
423 required-opps = <&rpmhpd_opp_low_svs>;
427 opp-hz = /bits/ 64 <270000000>;
428 required-opps = <&rpmhpd_opp_svs>;
432 opp-hz = /bits/ 64 <540000000>;
433 required-opps = <&rpmhpd_opp_svs_l1>;
437 opp-hz = /bits/ 64 <810000000>;
438 required-opps = <&rpmhpd_opp_nom>;