Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/msm/qcom,sc8180x-mdss.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SC8180X Display MDSS
8
9maintainers:
10 - Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
11
12description:
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 SC8180X target.
16
17$ref: /schemas/display/msm/mdss-common.yaml#
18
19properties:
20 compatible:
21 items:
22 - const: qcom,sc8180x-mdss
23
24 clocks:
25 items:
26 - description: Display AHB clock from gcc
27 - description: Display hf axi clock
28 - description: Display sf axi clock
29 - description: Display core clock
30
31 clock-names:
32 items:
33 - const: iface
34 - const: bus
35 - const: nrt_bus
36 - const: core
37
38 iommus:
39 maxItems: 1
40
41 interconnects:
42 maxItems: 3
43
44 interconnect-names:
45 maxItems: 3
46
47patternProperties:
48 "^display-controller@[0-9a-f]+$":
49 type: object
50 additionalProperties: true
51
52 properties:
53 compatible:
54 const: qcom,sc8180x-dpu
55
56 "^displayport-controller@[0-9a-f]+$":
57 type: object
58 additionalProperties: true
59
60 properties:
61 compatible:
62 enum:
63 - qcom,sc8180x-dp
64 - qcom,sc8180x-edp
65
66 "^dsi@[0-9a-f]+$":
67 type: object
68 additionalProperties: true
69
70 properties:
71 compatible:
72 contains:
73 const: qcom,sc8180x-dsi-ctrl
74
75 "^phy@[0-9a-f]+$":
76 type: object
77 additionalProperties: true
78
79 properties:
80 compatible:
81 const: qcom,dsi-phy-7nm
82
83unevaluatedProperties: false
84
85examples:
86 - |
87 #include <dt-bindings/clock/qcom,dispcc-sm8250.h>
88 #include <dt-bindings/clock/qcom,gcc-sc8180x.h>
89 #include <dt-bindings/clock/qcom,rpmh.h>
90 #include <dt-bindings/interrupt-controller/arm-gic.h>
91 #include <dt-bindings/interconnect/qcom,sc8180x.h>
92 #include <dt-bindings/power/qcom-rpmpd.h>
93
94 display-subsystem@ae00000 {
95 compatible = "qcom,sc8180x-mdss";
96 reg = <0x0ae00000 0x1000>;
97 reg-names = "mdss";
98
99 interconnects = <&mmss_noc MASTER_MDP_PORT0 &mc_virt SLAVE_EBI_CH0>,
100 <&mmss_noc MASTER_MDP_PORT1 &mc_virt SLAVE_EBI_CH0>,
101 <&gem_noc MASTER_AMPSS_M0 &config_noc SLAVE_DISPLAY_CFG>;
102 interconnect-names = "mdp0-mem",
103 "mdp1-mem",
104 "cpu-cfg";
105
106 power-domains = <&dispcc MDSS_GDSC>;
107
108 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
109 <&gcc GCC_DISP_HF_AXI_CLK>,
110 <&gcc GCC_DISP_SF_AXI_CLK>,
111 <&dispcc DISP_CC_MDSS_MDP_CLK>;
112 clock-names = "iface", "bus", "nrt_bus", "core";
113
114 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
115 interrupt-controller;
116 #interrupt-cells = <1>;
117
118 iommus = <&apps_smmu 0x800 0x420>;
119
120 #address-cells = <1>;
121 #size-cells = <1>;
122 ranges;
123
124 display-controller@ae01000 {
125 compatible = "qcom,sc8180x-dpu";
126 reg = <0x0ae01000 0x8f000>,
127 <0x0aeb0000 0x2008>;
128 reg-names = "mdp", "vbif";
129
130 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
131 <&gcc GCC_DISP_HF_AXI_CLK>,
132 <&dispcc DISP_CC_MDSS_MDP_CLK>,
133 <&dispcc DISP_CC_MDSS_VSYNC_CLK>,
134 <&dispcc DISP_CC_MDSS_ROT_CLK>,
135 <&dispcc DISP_CC_MDSS_MDP_LUT_CLK>;
136 clock-names = "iface",
137 "bus",
138 "core",
139 "vsync",
140 "rot",
141 "lut";
142
143 assigned-clocks = <&dispcc DISP_CC_MDSS_VSYNC_CLK>;
144 assigned-clock-rates = <19200000>;
145
146 operating-points-v2 = <&mdp_opp_table>;
147 power-domains = <&rpmhpd SC8180X_MMCX>;
148
149 interrupt-parent = <&mdss>;
150 interrupts = <0>;
151
152 ports {
153 #address-cells = <1>;
154 #size-cells = <0>;
155
156 port@0 {
157 reg = <0>;
158 dpu_intf1_out: endpoint {
159 remote-endpoint = <&dsi0_in>;
160 };
161 };
162
163 port@1 {
164 reg = <1>;
165 dpu_intf2_out: endpoint {
166 remote-endpoint = <&dsi1_in>;
167 };
168 };
169 };
170
171 mdp_opp_table: opp-table {
172 compatible = "operating-points-v2";
173
174 opp-171428571 {
175 opp-hz = /bits/ 64 <171428571>;
176 required-opps = <&rpmhpd_opp_low_svs>;
177 };
178
179 opp-300000000 {
180 opp-hz = /bits/ 64 <300000000>;
181 required-opps = <&rpmhpd_opp_svs>;
182 };
183
184 opp-345000000 {
185 opp-hz = /bits/ 64 <345000000>;
186 required-opps = <&rpmhpd_opp_svs_l1>;
187 };
188
189 opp-460000000 {
190 opp-hz = /bits/ 64 <460000000>;
191 required-opps = <&rpmhpd_opp_nom>;
192 };
193 };
194 };
195
196 dsi@ae94000 {
197 compatible = "qcom,sc8180x-dsi-ctrl",
198 "qcom,mdss-dsi-ctrl";
199 reg = <0x0ae94000 0x400>;
200 reg-names = "dsi_ctrl";
201
202 interrupt-parent = <&mdss>;
203 interrupts = <4>;
204
205 clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK>,
206 <&dispcc DISP_CC_MDSS_BYTE0_INTF_CLK>,
207 <&dispcc DISP_CC_MDSS_PCLK0_CLK>,
208 <&dispcc DISP_CC_MDSS_ESC0_CLK>,
209 <&dispcc DISP_CC_MDSS_AHB_CLK>,
210 <&gcc GCC_DISP_HF_AXI_CLK>;
211 clock-names = "byte",
212 "byte_intf",
213 "pixel",
214 "core",
215 "iface",
216 "bus";
217
218 assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE0_CLK_SRC>,
219 <&dispcc DISP_CC_MDSS_PCLK0_CLK_SRC>;
220 assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
221
222 operating-points-v2 = <&dsi_opp_table>;
223 power-domains = <&rpmhpd SC8180X_MMCX>;
224
225 phys = <&dsi0_phy>;
226 phy-names = "dsi";
227
228 #address-cells = <1>;
229 #size-cells = <0>;
230
231 ports {
232 #address-cells = <1>;
233 #size-cells = <0>;
234
235 port@0 {
236 reg = <0>;
237 dsi0_in: endpoint {
238 remote-endpoint = <&dpu_intf1_out>;
239 };
240 };
241
242 port@1 {
243 reg = <1>;
244 dsi0_out: endpoint {
245 };
246 };
247 };
248
249 dsi_opp_table: opp-table {
250 compatible = "operating-points-v2";
251
252 opp-187500000 {
253 opp-hz = /bits/ 64 <187500000>;
254 required-opps = <&rpmhpd_opp_low_svs>;
255 };
256
257 opp-300000000 {
258 opp-hz = /bits/ 64 <300000000>;
259 required-opps = <&rpmhpd_opp_svs>;
260 };
261
262 opp-358000000 {
263 opp-hz = /bits/ 64 <358000000>;
264 required-opps = <&rpmhpd_opp_svs_l1>;
265 };
266 };
267 };
268
269 dsi0_phy: phy@ae94400 {
270 compatible = "qcom,dsi-phy-7nm";
271 reg = <0x0ae94400 0x200>,
272 <0x0ae94600 0x280>,
273 <0x0ae94900 0x260>;
274 reg-names = "dsi_phy",
275 "dsi_phy_lane",
276 "dsi_pll";
277
278 #clock-cells = <1>;
279 #phy-cells = <0>;
280
281 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
282 <&rpmhcc RPMH_CXO_CLK>;
283 clock-names = "iface", "ref";
284 vdds-supply = <&vreg_dsi_phy>;
285 };
286
287 dsi@ae96000 {
288 compatible = "qcom,sc8180x-dsi-ctrl",
289 "qcom,mdss-dsi-ctrl";
290 reg = <0x0ae96000 0x400>;
291 reg-names = "dsi_ctrl";
292
293 interrupt-parent = <&mdss>;
294 interrupts = <5>;
295
296 clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK>,
297 <&dispcc DISP_CC_MDSS_BYTE1_INTF_CLK>,
298 <&dispcc DISP_CC_MDSS_PCLK1_CLK>,
299 <&dispcc DISP_CC_MDSS_ESC1_CLK>,
300 <&dispcc DISP_CC_MDSS_AHB_CLK>,
301 <&gcc GCC_DISP_HF_AXI_CLK>;
302 clock-names = "byte",
303 "byte_intf",
304 "pixel",
305 "core",
306 "iface",
307 "bus";
308
309 assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>,
310 <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>;
311 assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
312
313 operating-points-v2 = <&dsi_opp_table>;
314 power-domains = <&rpmhpd SC8180X_MMCX>;
315
316 phys = <&dsi1_phy>;
317 phy-names = "dsi";
318
319 #address-cells = <1>;
320 #size-cells = <0>;
321
322 ports {
323 #address-cells = <1>;
324 #size-cells = <0>;
325
326 port@0 {
327 reg = <0>;
328 dsi1_in: endpoint {
329 remote-endpoint = <&dpu_intf2_out>;
330 };
331 };
332
333 port@1 {
334 reg = <1>;
335 dsi1_out: endpoint {
336 };
337 };
338 };
339 };
340
341 dsi1_phy: phy@ae96400 {
342 compatible = "qcom,dsi-phy-7nm";
343 reg = <0x0ae96400 0x200>,
344 <0x0ae96600 0x280>,
345 <0x0ae96900 0x260>;
346 reg-names = "dsi_phy",
347 "dsi_phy_lane",
348 "dsi_pll";
349
350 #clock-cells = <1>;
351 #phy-cells = <0>;
352
353 clocks = <&dispcc DISP_CC_MDSS_AHB_CLK>,
354 <&rpmhcc RPMH_CXO_CLK>;
355 clock-names = "iface", "ref";
356 vdds-supply = <&vreg_dsi_phy>;
357 };
358 };
359...