Skip to content

Commit cbcef05

Browse files
superna9999lumag
authored andcommitted
dt-bindings: display: msm: document the SM8650 Mobile Display Subsystem
Document the Mobile Display Subsystem (MDSS) on the SM8650 Platform. Reviewed-by: Krzysztof Kozlowski <[email protected]> Signed-off-by: Neil Armstrong <[email protected]> Patchwork: https://patchwork.freedesktop.org/patch/564982/ Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Dmitry Baryshkov <[email protected]>
1 parent 3e135a7 commit cbcef05

File tree

1 file changed

+322
-0
lines changed

1 file changed

+322
-0
lines changed
Lines changed: 322 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,322 @@
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,sm8650-mdss.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Qualcomm SM8650 Display MDSS
8+
9+
maintainers:
10+
- Neil Armstrong <[email protected]>
11+
12+
description:
13+
SM8650 MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks like
14+
DPU display controller, DSI and DP interfaces etc.
15+
16+
$ref: /schemas/display/msm/mdss-common.yaml#
17+
18+
properties:
19+
compatible:
20+
const: qcom,sm8650-mdss
21+
22+
clocks:
23+
items:
24+
- description: Display AHB
25+
- description: Display hf AXI
26+
- description: Display core
27+
28+
iommus:
29+
maxItems: 1
30+
31+
interconnects:
32+
maxItems: 2
33+
34+
interconnect-names:
35+
maxItems: 2
36+
37+
patternProperties:
38+
"^display-controller@[0-9a-f]+$":
39+
type: object
40+
properties:
41+
compatible:
42+
const: qcom,sm8650-dpu
43+
44+
"^dsi@[0-9a-f]+$":
45+
type: object
46+
properties:
47+
compatible:
48+
items:
49+
- const: qcom,sm8650-dsi-ctrl
50+
- const: qcom,mdss-dsi-ctrl
51+
52+
"^phy@[0-9a-f]+$":
53+
type: object
54+
properties:
55+
compatible:
56+
const: qcom,sm8650-dsi-phy-4nm
57+
58+
required:
59+
- compatible
60+
61+
unevaluatedProperties: false
62+
63+
examples:
64+
- |
65+
#include <dt-bindings/clock/qcom,rpmh.h>
66+
#include <dt-bindings/interrupt-controller/arm-gic.h>
67+
#include <dt-bindings/power/qcom,rpmhpd.h>
68+
69+
display-subsystem@ae00000 {
70+
compatible = "qcom,sm8650-mdss";
71+
reg = <0x0ae00000 0x1000>;
72+
reg-names = "mdss";
73+
74+
resets = <&dispcc_core_bcr>;
75+
76+
power-domains = <&dispcc_gdsc>;
77+
78+
clocks = <&gcc_ahb_clk>,
79+
<&gcc_axi_clk>,
80+
<&dispcc_mdp_clk>;
81+
clock-names = "bus", "nrt_bus", "core";
82+
83+
interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
84+
interrupt-controller;
85+
#interrupt-cells = <1>;
86+
87+
iommus = <&apps_smmu 0x1c00 0x2>;
88+
89+
#address-cells = <1>;
90+
#size-cells = <1>;
91+
ranges;
92+
93+
display-controller@ae01000 {
94+
compatible = "qcom,sm8650-dpu";
95+
reg = <0x0ae01000 0x8f000>,
96+
<0x0aeb0000 0x2008>;
97+
reg-names = "mdp", "vbif";
98+
99+
clocks = <&gcc_axi_clk>,
100+
<&dispcc_ahb_clk>,
101+
<&dispcc_mdp_lut_clk>,
102+
<&dispcc_mdp_clk>,
103+
<&dispcc_mdp_vsync_clk>;
104+
clock-names = "nrt_bus",
105+
"iface",
106+
"lut",
107+
"core",
108+
"vsync";
109+
110+
assigned-clocks = <&dispcc_mdp_vsync_clk>;
111+
assigned-clock-rates = <19200000>;
112+
113+
operating-points-v2 = <&mdp_opp_table>;
114+
power-domains = <&rpmhpd RPMHPD_MMCX>;
115+
116+
interrupt-parent = <&mdss>;
117+
interrupts = <0>;
118+
119+
ports {
120+
#address-cells = <1>;
121+
#size-cells = <0>;
122+
123+
port@0 {
124+
reg = <0>;
125+
dpu_intf1_out: endpoint {
126+
remote-endpoint = <&dsi0_in>;
127+
};
128+
};
129+
130+
port@1 {
131+
reg = <1>;
132+
dpu_intf2_out: endpoint {
133+
remote-endpoint = <&dsi1_in>;
134+
};
135+
};
136+
};
137+
138+
mdp_opp_table: opp-table {
139+
compatible = "operating-points-v2";
140+
141+
opp-200000000 {
142+
opp-hz = /bits/ 64 <200000000>;
143+
required-opps = <&rpmhpd_opp_low_svs>;
144+
};
145+
146+
opp-325000000 {
147+
opp-hz = /bits/ 64 <325000000>;
148+
required-opps = <&rpmhpd_opp_svs>;
149+
};
150+
151+
opp-375000000 {
152+
opp-hz = /bits/ 64 <375000000>;
153+
required-opps = <&rpmhpd_opp_svs_l1>;
154+
};
155+
156+
opp-514000000 {
157+
opp-hz = /bits/ 64 <514000000>;
158+
required-opps = <&rpmhpd_opp_nom>;
159+
};
160+
};
161+
};
162+
163+
dsi@ae94000 {
164+
compatible = "qcom,sm8650-dsi-ctrl", "qcom,mdss-dsi-ctrl";
165+
reg = <0x0ae94000 0x400>;
166+
reg-names = "dsi_ctrl";
167+
168+
interrupt-parent = <&mdss>;
169+
interrupts = <4>;
170+
171+
clocks = <&dispc_byte_clk>,
172+
<&dispcc_intf_clk>,
173+
<&dispcc_pclk>,
174+
<&dispcc_esc_clk>,
175+
<&dispcc_ahb_clk>,
176+
<&gcc_bus_clk>;
177+
clock-names = "byte",
178+
"byte_intf",
179+
"pixel",
180+
"core",
181+
"iface",
182+
"bus";
183+
184+
assigned-clocks = <&dispcc_byte_clk>,
185+
<&dispcc_pclk>;
186+
assigned-clock-parents = <&dsi0_phy 0>, <&dsi0_phy 1>;
187+
188+
operating-points-v2 = <&dsi_opp_table>;
189+
power-domains = <&rpmhpd RPMHPD_MMCX>;
190+
191+
phys = <&dsi0_phy>;
192+
phy-names = "dsi";
193+
194+
#address-cells = <1>;
195+
#size-cells = <0>;
196+
197+
ports {
198+
#address-cells = <1>;
199+
#size-cells = <0>;
200+
201+
port@0 {
202+
reg = <0>;
203+
dsi0_in: endpoint {
204+
remote-endpoint = <&dpu_intf1_out>;
205+
};
206+
};
207+
208+
port@1 {
209+
reg = <1>;
210+
dsi0_out: endpoint {
211+
};
212+
};
213+
};
214+
215+
dsi_opp_table: opp-table {
216+
compatible = "operating-points-v2";
217+
218+
opp-187500000 {
219+
opp-hz = /bits/ 64 <187500000>;
220+
required-opps = <&rpmhpd_opp_low_svs>;
221+
};
222+
223+
opp-300000000 {
224+
opp-hz = /bits/ 64 <300000000>;
225+
required-opps = <&rpmhpd_opp_svs>;
226+
};
227+
228+
opp-358000000 {
229+
opp-hz = /bits/ 64 <358000000>;
230+
required-opps = <&rpmhpd_opp_svs_l1>;
231+
};
232+
};
233+
};
234+
235+
dsi0_phy: phy@ae94400 {
236+
compatible = "qcom,sm8650-dsi-phy-4nm";
237+
reg = <0x0ae95000 0x200>,
238+
<0x0ae95200 0x280>,
239+
<0x0ae95500 0x400>;
240+
reg-names = "dsi_phy",
241+
"dsi_phy_lane",
242+
"dsi_pll";
243+
244+
#clock-cells = <1>;
245+
#phy-cells = <0>;
246+
247+
clocks = <&dispcc_iface_clk>,
248+
<&rpmhcc_ref_clk>;
249+
clock-names = "iface", "ref";
250+
};
251+
252+
dsi@ae96000 {
253+
compatible = "qcom,sm8650-dsi-ctrl", "qcom,mdss-dsi-ctrl";
254+
reg = <0x0ae96000 0x400>;
255+
reg-names = "dsi_ctrl";
256+
257+
interrupt-parent = <&mdss>;
258+
interrupts = <5>;
259+
260+
clocks = <&dispc_byte_clk>,
261+
<&dispcc_intf_clk>,
262+
<&dispcc_pclk>,
263+
<&dispcc_esc_clk>,
264+
<&dispcc_ahb_clk>,
265+
<&gcc_bus_clk>;
266+
clock-names = "byte",
267+
"byte_intf",
268+
"pixel",
269+
"core",
270+
"iface",
271+
"bus";
272+
273+
assigned-clocks = <&dispcc_byte_clk>,
274+
<&dispcc_pclk>;
275+
assigned-clock-parents = <&dsi1_phy 0>, <&dsi1_phy 1>;
276+
277+
operating-points-v2 = <&dsi_opp_table>;
278+
power-domains = <&rpmhpd RPMHPD_MMCX>;
279+
280+
phys = <&dsi1_phy>;
281+
phy-names = "dsi";
282+
283+
#address-cells = <1>;
284+
#size-cells = <0>;
285+
286+
ports {
287+
#address-cells = <1>;
288+
#size-cells = <0>;
289+
290+
port@0 {
291+
reg = <0>;
292+
dsi1_in: endpoint {
293+
remote-endpoint = <&dpu_intf2_out>;
294+
};
295+
};
296+
297+
port@1 {
298+
reg = <1>;
299+
dsi1_out: endpoint {
300+
};
301+
};
302+
};
303+
};
304+
305+
dsi1_phy: phy@ae96400 {
306+
compatible = "qcom,sm8650-dsi-phy-4nm";
307+
reg = <0x0ae97000 0x200>,
308+
<0x0ae97200 0x280>,
309+
<0x0ae97500 0x400>;
310+
reg-names = "dsi_phy",
311+
"dsi_phy_lane",
312+
"dsi_pll";
313+
314+
#clock-cells = <1>;
315+
#phy-cells = <0>;
316+
317+
clocks = <&dispcc_iface_clk>,
318+
<&rpmhcc_ref_clk>;
319+
clock-names = "iface", "ref";
320+
};
321+
};
322+
...

0 commit comments

Comments
 (0)