xref: /freebsd/sys/contrib/device-tree/Bindings/display/msm/qcom,sm6350-mdss.yaml (revision 7d0873ebb83b19ba1e8a89e679470d885efe12e3)
1aa1a8ff2SEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2f126890aSEmmanuel Vadot%YAML 1.2
3f126890aSEmmanuel Vadot---
4f126890aSEmmanuel Vadot$id: http://devicetree.org/schemas/display/msm/qcom,sm6350-mdss.yaml#
5f126890aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6f126890aSEmmanuel Vadot
7f126890aSEmmanuel Vadottitle: Qualcomm SM6350 Display MDSS
8f126890aSEmmanuel Vadot
9f126890aSEmmanuel Vadotmaintainers:
10f126890aSEmmanuel Vadot  - Krishna Manikandan <quic_mkrishn@quicinc.com>
11f126890aSEmmanuel Vadot
12f126890aSEmmanuel Vadotdescription:
13f126890aSEmmanuel Vadot  SM6350 MSM Mobile Display Subsystem (MDSS), which encapsulates sub-blocks
14f126890aSEmmanuel Vadot  like DPU display controller, DSI and DP interfaces etc.
15f126890aSEmmanuel Vadot
16f126890aSEmmanuel Vadot$ref: /schemas/display/msm/mdss-common.yaml#
17f126890aSEmmanuel Vadot
18f126890aSEmmanuel Vadotproperties:
19f126890aSEmmanuel Vadot  compatible:
20f126890aSEmmanuel Vadot    const: qcom,sm6350-mdss
21f126890aSEmmanuel Vadot
22f126890aSEmmanuel Vadot  clocks:
23f126890aSEmmanuel Vadot    items:
24f126890aSEmmanuel Vadot      - description: Display AHB clock from gcc
25f126890aSEmmanuel Vadot      - description: Display AXI clock from gcc
26f126890aSEmmanuel Vadot      - description: Display core clock
27f126890aSEmmanuel Vadot
28f126890aSEmmanuel Vadot  clock-names:
29f126890aSEmmanuel Vadot    items:
30f126890aSEmmanuel Vadot      - const: iface
31f126890aSEmmanuel Vadot      - const: bus
32f126890aSEmmanuel Vadot      - const: core
33f126890aSEmmanuel Vadot
34f126890aSEmmanuel Vadot  iommus:
35f126890aSEmmanuel Vadot    maxItems: 1
36f126890aSEmmanuel Vadot
37f126890aSEmmanuel Vadot  interconnects:
388d13bc63SEmmanuel Vadot    items:
398d13bc63SEmmanuel Vadot      - description: Interconnect path from mdp0 port to the data bus
408d13bc63SEmmanuel Vadot      - description: Interconnect path from CPU to the reg bus
41f126890aSEmmanuel Vadot
42f126890aSEmmanuel Vadot  interconnect-names:
438d13bc63SEmmanuel Vadot    items:
448d13bc63SEmmanuel Vadot      - const: mdp0-mem
458d13bc63SEmmanuel Vadot      - const: cpu-cfg
46f126890aSEmmanuel Vadot
47f126890aSEmmanuel VadotpatternProperties:
48f126890aSEmmanuel Vadot  "^display-controller@[0-9a-f]+$":
49f126890aSEmmanuel Vadot    type: object
5084943d6fSEmmanuel Vadot    additionalProperties: true
5184943d6fSEmmanuel Vadot
52f126890aSEmmanuel Vadot    properties:
53f126890aSEmmanuel Vadot      compatible:
54f126890aSEmmanuel Vadot        const: qcom,sm6350-dpu
55f126890aSEmmanuel Vadot
56*7d0873ebSEmmanuel Vadot  "^displayport-controller@[0-9a-f]+$":
57*7d0873ebSEmmanuel Vadot    type: object
58*7d0873ebSEmmanuel Vadot    additionalProperties: true
59*7d0873ebSEmmanuel Vadot
60*7d0873ebSEmmanuel Vadot    properties:
61*7d0873ebSEmmanuel Vadot      compatible:
62*7d0873ebSEmmanuel Vadot        contains:
63*7d0873ebSEmmanuel Vadot          const: qcom,sm6350-dp
64*7d0873ebSEmmanuel Vadot
65f126890aSEmmanuel Vadot  "^dsi@[0-9a-f]+$":
66f126890aSEmmanuel Vadot    type: object
6784943d6fSEmmanuel Vadot    additionalProperties: true
6884943d6fSEmmanuel Vadot
69f126890aSEmmanuel Vadot    properties:
70f126890aSEmmanuel Vadot      compatible:
71f126890aSEmmanuel Vadot        items:
72f126890aSEmmanuel Vadot          - const: qcom,sm6350-dsi-ctrl
73f126890aSEmmanuel Vadot          - const: qcom,mdss-dsi-ctrl
74f126890aSEmmanuel Vadot
75f126890aSEmmanuel Vadot  "^phy@[0-9a-f]+$":
76f126890aSEmmanuel Vadot    type: object
7784943d6fSEmmanuel Vadot    additionalProperties: true
7884943d6fSEmmanuel Vadot
79f126890aSEmmanuel Vadot    properties:
80f126890aSEmmanuel Vadot      compatible:
81f126890aSEmmanuel Vadot        const: qcom,dsi-phy-10nm
82f126890aSEmmanuel Vadot
83f126890aSEmmanuel VadotunevaluatedProperties: false
84f126890aSEmmanuel Vadot
85f126890aSEmmanuel Vadotexamples:
86f126890aSEmmanuel Vadot  - |
87f126890aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,dispcc-sm6350.h>
88f126890aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,gcc-sm6350.h>
89f126890aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,rpmh.h>
90f126890aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
91f126890aSEmmanuel Vadot    #include <dt-bindings/power/qcom-rpmpd.h>
92f126890aSEmmanuel Vadot
93f126890aSEmmanuel Vadot    display-subsystem@ae00000 {
94f126890aSEmmanuel Vadot        compatible = "qcom,sm6350-mdss";
95f126890aSEmmanuel Vadot        reg = <0x0ae00000 0x1000>;
96f126890aSEmmanuel Vadot        reg-names = "mdss";
97f126890aSEmmanuel Vadot
98f126890aSEmmanuel Vadot        power-domains = <&dispcc MDSS_GDSC>;
99f126890aSEmmanuel Vadot
100f126890aSEmmanuel Vadot        clocks = <&gcc GCC_DISP_AHB_CLK>,
101f126890aSEmmanuel Vadot                 <&gcc GCC_DISP_AXI_CLK>,
102f126890aSEmmanuel Vadot                 <&dispcc DISP_CC_MDSS_MDP_CLK>;
103f126890aSEmmanuel Vadot        clock-names = "iface", "bus", "core";
104f126890aSEmmanuel Vadot
105f126890aSEmmanuel Vadot        interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
106f126890aSEmmanuel Vadot        interrupt-controller;
107f126890aSEmmanuel Vadot        #interrupt-cells = <1>;
108f126890aSEmmanuel Vadot
109f126890aSEmmanuel Vadot        iommus = <&apps_smmu 0x800 0x2>;
110f126890aSEmmanuel Vadot        #address-cells = <1>;
111f126890aSEmmanuel Vadot        #size-cells = <1>;
112f126890aSEmmanuel Vadot        ranges;
113f126890aSEmmanuel Vadot
114f126890aSEmmanuel Vadot        display-controller@ae01000 {
115f126890aSEmmanuel Vadot            compatible = "qcom,sm6350-dpu";
116f126890aSEmmanuel Vadot            reg = <0x0ae01000 0x8f000>,
117f126890aSEmmanuel Vadot                  <0x0aeb0000 0x2008>;
118f126890aSEmmanuel Vadot            reg-names = "mdp", "vbif";
119f126890aSEmmanuel Vadot
120f126890aSEmmanuel Vadot            clocks = <&gcc GCC_DISP_AXI_CLK>,
121f126890aSEmmanuel Vadot              <&dispcc DISP_CC_MDSS_AHB_CLK>,
122f126890aSEmmanuel Vadot              <&dispcc DISP_CC_MDSS_ROT_CLK>,
123f126890aSEmmanuel Vadot              <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>,
124f126890aSEmmanuel Vadot              <&dispcc DISP_CC_MDSS_MDP_CLK>,
125f126890aSEmmanuel Vadot              <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
126f126890aSEmmanuel Vadot            clock-names = "bus", "iface", "rot", "lut", "core",
127f126890aSEmmanuel Vadot                    "vsync";
128f126890aSEmmanuel Vadot
129f126890aSEmmanuel Vadot            assigned-clocks = <&dispcc DISP_CC_MDSS_MDP_CLK>,
130f126890aSEmmanuel Vadot                              <&dispcc DISP_CC_MDSS_VSYNC_CLK>,
131f126890aSEmmanuel Vadot                              <&dispcc DISP_CC_MDSS_ROT_CLK>,
132f126890aSEmmanuel Vadot                              <&dispcc DISP_CC_MDSS_AHB_CLK>;
133f126890aSEmmanuel Vadot            assigned-clock-rates = <300000000>,
134f126890aSEmmanuel Vadot                                   <19200000>,
135f126890aSEmmanuel Vadot                                   <19200000>,
136f126890aSEmmanuel Vadot                                   <19200000>;
137f126890aSEmmanuel Vadot
138f126890aSEmmanuel Vadot            interrupt-parent = <&mdss>;
139f126890aSEmmanuel Vadot            interrupts = <0>;
140f126890aSEmmanuel Vadot            operating-points-v2 = <&mdp_opp_table>;
141f126890aSEmmanuel Vadot            power-domains = <&rpmhpd SM6350_CX>;
142f126890aSEmmanuel Vadot
143f126890aSEmmanuel Vadot            ports {
144f126890aSEmmanuel Vadot                #address-cells = <1>;
145f126890aSEmmanuel Vadot                #size-cells = <0>;
146f126890aSEmmanuel Vadot
147f126890aSEmmanuel Vadot                port@0 {
148f126890aSEmmanuel Vadot                    reg = <0>;
149f126890aSEmmanuel Vadot                    dpu_intf1_out: endpoint {
150f126890aSEmmanuel Vadot                        remote-endpoint = <&dsi0_in>;
151f126890aSEmmanuel Vadot                    };
152f126890aSEmmanuel Vadot                };
153f126890aSEmmanuel Vadot            };
154f126890aSEmmanuel Vadot        };
155f126890aSEmmanuel Vadot
156f126890aSEmmanuel Vadot        dsi@ae94000 {
157f126890aSEmmanuel Vadot            compatible = "qcom,sm6350-dsi-ctrl", "qcom,mdss-dsi-ctrl";
158f126890aSEmmanuel Vadot            reg = <0x0ae94000 0x400>;
159f126890aSEmmanuel Vadot            reg-names = "dsi_ctrl";
160f126890aSEmmanuel Vadot
161f126890aSEmmanuel Vadot            interrupt-parent = <&mdss>;
162f126890aSEmmanuel Vadot            interrupts = <4>;
163f126890aSEmmanuel Vadot
164f126890aSEmmanuel Vadot            clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
165f126890aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
166f126890aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
167f126890aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_ESC0_CLK>,
168f126890aSEmmanuel Vadot                     <&dispcc DISP_CC_MDSS_AHB_CLK>,
169f126890aSEmmanuel Vadot                     <&gcc GCC_DISP_AXI_CLK>;
170f126890aSEmmanuel Vadot            clock-names = "byte",
171f126890aSEmmanuel Vadot                          "byte_intf",
172f126890aSEmmanuel Vadot                          "pixel",
173f126890aSEmmanuel Vadot                          "core",
174f126890aSEmmanuel Vadot                          "iface",
175f126890aSEmmanuel Vadot                          "bus";
176f126890aSEmmanuel Vadot
177f126890aSEmmanuel Vadot            assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
178f126890aSEmmanuel Vadot                              <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
179f126890aSEmmanuel Vadot            assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
180f126890aSEmmanuel Vadot
181f126890aSEmmanuel Vadot            operating-points-v2 = <&dsi_opp_table>;
182f126890aSEmmanuel Vadot            power-domains = <&rpmhpd SM6350_MX>;
183f126890aSEmmanuel Vadot
184f126890aSEmmanuel Vadot            phys = <&dsi0_phy>;
185f126890aSEmmanuel Vadot            phy-names = "dsi";
186f126890aSEmmanuel Vadot
187f126890aSEmmanuel Vadot            #address-cells = <1>;
188f126890aSEmmanuel Vadot            #size-cells = <0>;
189f126890aSEmmanuel Vadot
190f126890aSEmmanuel Vadot            ports {
191f126890aSEmmanuel Vadot                #address-cells = <1>;
192f126890aSEmmanuel Vadot                #size-cells = <0>;
193f126890aSEmmanuel Vadot
194f126890aSEmmanuel Vadot                port@0 {
195f126890aSEmmanuel Vadot                    reg = <0>;
196f126890aSEmmanuel Vadot                    dsi0_in: endpoint {
197f126890aSEmmanuel Vadot                        remote-endpoint = <&dpu_intf1_out>;
198f126890aSEmmanuel Vadot                    };
199f126890aSEmmanuel Vadot                };
200f126890aSEmmanuel Vadot
201f126890aSEmmanuel Vadot                port@1 {
202f126890aSEmmanuel Vadot                    reg = <1>;
203f126890aSEmmanuel Vadot                    dsi0_out: endpoint {
204f126890aSEmmanuel Vadot                    };
205f126890aSEmmanuel Vadot                };
206f126890aSEmmanuel Vadot            };
207f126890aSEmmanuel Vadot        };
208f126890aSEmmanuel Vadot
209f126890aSEmmanuel Vadot        dsi0_phy: phy@ae94400 {
210f126890aSEmmanuel Vadot            compatible = "qcom,dsi-phy-10nm";
211f126890aSEmmanuel Vadot            reg = <0x0ae94400 0x200>,
212f126890aSEmmanuel Vadot                  <0x0ae94600 0x280>,
213f126890aSEmmanuel Vadot                  <0x0ae94a00 0x1e0>;
214f126890aSEmmanuel Vadot            reg-names = "dsi_phy",
215f126890aSEmmanuel Vadot                        "dsi_phy_lane",
216f126890aSEmmanuel Vadot                        "dsi_pll";
217f126890aSEmmanuel Vadot
218f126890aSEmmanuel Vadot            #clock-cells = <1>;
219f126890aSEmmanuel Vadot            #phy-cells = <0>;
220f126890aSEmmanuel Vadot
221f126890aSEmmanuel Vadot            clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>, <&rpmhcc RPMH_CXO_CLK>;
222f126890aSEmmanuel Vadot            clock-names = "iface", "ref";
223f126890aSEmmanuel Vadot        };
224f126890aSEmmanuel Vadot    };
225f126890aSEmmanuel Vadot...
226