1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
4 $id: http://devicetree.org/schemas/display/msm/qcom,sm8650-mdss.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Qualcomm SM8650 Display MDSS
10 - Neil Armstrong <neil.armstrong@linaro.org>
13 SM8650 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
14 DPU display controller, DSI and DP interfaces etc.
16 $ref: /schemas/display/msm/mdss-common.yaml#
20 const: qcom,sm8650-mdss
24 - description: Display AHB
25 - description: Display hf AXI
26 - description: Display core
38 "^display-controller@[0-9a-f]+$":
42 const: qcom,sm8650-dpu
44 "^displayport-controller@[0-9a-f]+$":
55 - const: qcom,sm8650-dsi-ctrl
56 - const: qcom,mdss-dsi-ctrl
62 const: qcom,sm8650-dsi-phy-4nm
67 unevaluatedProperties: false
71 #include <dt-bindings/clock/qcom,rpmh.h>
72 #include <dt-bindings/interrupt-controller/arm-gic.h>
73 #include <dt-bindings/power/qcom,rpmhpd.h>
75 display-subsystem@ae00000 {
76 compatible = "qcom,sm8650-mdss";
77 reg = <0x0ae00000 0x1000>;
80 resets = <&dispcc_core_bcr>;
82 power-domains = <&dispcc_gdsc>;
84 clocks = <&gcc_ahb_clk>,
87 clock-names = "bus", "nrt_bus", "core";
89 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
91 #interrupt-cells = <1>;
93 iommus = <&apps_smmu 0x1c00 0x2>;
99 display-controller@ae01000 {
100 compatible = "qcom,sm8650-dpu";
101 reg = <0x0ae01000 0x8f000>,
103 reg-names = "mdp", "vbif";
105 clocks = <&gcc_axi_clk>,
107 <&dispcc_mdp_lut_clk>,
109 <&dispcc_mdp_vsync_clk>;
110 clock-names = "nrt_bus",
116 assigned-clocks = <&dispcc_mdp_vsync_clk>;
117 assigned-clock-rates = <19200000>;
119 operating-points-v2 = <&mdp_opp_table>;
120 power-domains = <&rpmhpd RPMHPD_MMCX>;
122 interrupt-parent = <&mdss>;
126 #address-cells = <1>;
131 dpu_intf1_out: endpoint {
132 remote-endpoint = <&dsi0_in>;
138 dpu_intf2_out: endpoint {
139 remote-endpoint = <&dsi1_in>;
144 mdp_opp_table: opp-table {
145 compatible = "operating-points-v2";
148 opp-hz = /bits/ 64 <200000000>;
149 required-opps = <&rpmhpd_opp_low_svs>;
153 opp-hz = /bits/ 64 <325000000>;
154 required-opps = <&rpmhpd_opp_svs>;
158 opp-hz = /bits/ 64 <375000000>;
159 required-opps = <&rpmhpd_opp_svs_l1>;
163 opp-hz = /bits/ 64 <514000000>;
164 required-opps = <&rpmhpd_opp_nom>;
170 compatible = "qcom,sm8650-dsi-ctrl", "qcom,mdss-dsi-ctrl";
171 reg = <0x0ae94000 0x400>;
172 reg-names = "dsi_ctrl";
174 interrupt-parent = <&mdss>;
177 clocks = <&dispc_byte_clk>,
183 clock-names = "byte",
190 assigned-clocks = <&dispcc_byte_clk>,
192 assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
194 operating-points-v2 = <&dsi_opp_table>;
195 power-domains = <&rpmhpd RPMHPD_MMCX>;
200 #address-cells = <1>;
204 #address-cells = <1>;
210 remote-endpoint = <&dpu_intf1_out>;
221 dsi_opp_table: opp-table {
222 compatible = "operating-points-v2";
225 opp-hz = /bits/ 64 <187500000>;
226 required-opps = <&rpmhpd_opp_low_svs>;
230 opp-hz = /bits/ 64 <300000000>;
231 required-opps = <&rpmhpd_opp_svs>;
235 opp-hz = /bits/ 64 <358000000>;
236 required-opps = <&rpmhpd_opp_svs_l1>;
241 dsi0_phy: phy@ae94400 {
242 compatible = "qcom,sm8650-dsi-phy-4nm";
243 reg = <0x0ae95000 0x200>,
246 reg-names = "dsi_phy",
253 clocks = <&dispcc_iface_clk>,
255 clock-names = "iface", "ref";
259 compatible = "qcom,sm8650-dsi-ctrl", "qcom,mdss-dsi-ctrl";
260 reg = <0x0ae96000 0x400>;
261 reg-names = "dsi_ctrl";
263 interrupt-parent = <&mdss>;
266 clocks = <&dispc_byte_clk>,
272 clock-names = "byte",
279 assigned-clocks = <&dispcc_byte_clk>,
281 assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
283 operating-points-v2 = <&dsi_opp_table>;
284 power-domains = <&rpmhpd RPMHPD_MMCX>;
289 #address-cells = <1>;
293 #address-cells = <1>;
299 remote-endpoint = <&dpu_intf2_out>;
311 dsi1_phy: phy@ae96400 {
312 compatible = "qcom,sm8650-dsi-phy-4nm";
313 reg = <0x0ae97000 0x200>,
316 reg-names = "dsi_phy",
323 clocks = <&dispcc_iface_clk>,
325 clock-names = "iface", "ref";