Skip to content

Commit 5260159

Browse files
Yuanjie Yanglumag
authored andcommitted
dt-bindings: display/msm: qcom, kaanapali-mdss: Add Kaanapali
Kaanapali introduces DPU 13.0.0 and DSI 2.10. Compared to SM8750, Kaanapali has significant register changes, making it incompatible with SM8750. So add MDSS/MDP display subsystem for Qualcomm Kaanapali. Co-developed-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com> Signed-off-by: Yongxing Mou <yongxing.mou@oss.qualcomm.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Yuanjie Yang <yuanjie.yang@oss.qualcomm.com> Patchwork: https://patchwork.freedesktop.org/patch/698700/ Link: https://lore.kernel.org/r/20260115092749.533-5-yuanjie.yang@oss.qualcomm.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
1 parent ac9d8bf commit 5260159

1 file changed

Lines changed: 297 additions & 0 deletions

File tree

Lines changed: 297 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,297 @@
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,kaanapali-mdss.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Qualcomm Kaanapali Display MDSS
8+
9+
maintainers:
10+
- Yongxing Mou <yongxing.mou@oss.qualcomm.com>
11+
- Yuanjie Yang <yuanjie.yang@oss.qualcomm.com>
12+
13+
description:
14+
Kaanapali MSM Mobile Display Subsystem(MDSS), which encapsulates sub-blocks
15+
like DPU display controller, DSI and DP interfaces etc.
16+
17+
$ref: /schemas/display/msm/mdss-common.yaml#
18+
19+
properties:
20+
compatible:
21+
const: qcom,kaanapali-mdss
22+
23+
clocks:
24+
items:
25+
- description: Display AHB
26+
- description: Display hf AXI
27+
- description: Display core
28+
- description: Display AHB SWI
29+
30+
iommus:
31+
maxItems: 1
32+
33+
interconnects:
34+
items:
35+
- description: Interconnect path from mdp0 port to the data bus
36+
- description: Interconnect path from CPU to the reg bus
37+
38+
interconnect-names:
39+
items:
40+
- const: mdp0-mem
41+
- const: cpu-cfg
42+
43+
patternProperties:
44+
"^display-controller@[0-9a-f]+$":
45+
type: object
46+
additionalProperties: true
47+
properties:
48+
compatible:
49+
const: qcom,kaanapali-dpu
50+
51+
"^dsi@[0-9a-f]+$":
52+
type: object
53+
additionalProperties: true
54+
properties:
55+
compatible:
56+
contains:
57+
const: qcom,kaanapali-dsi-ctrl
58+
59+
"^phy@[0-9a-f]+$":
60+
type: object
61+
additionalProperties: true
62+
properties:
63+
compatible:
64+
const: qcom,kaanapali-dsi-phy-3nm
65+
66+
required:
67+
- compatible
68+
69+
unevaluatedProperties: false
70+
71+
examples:
72+
- |
73+
#include <dt-bindings/clock/qcom,rpmh.h>
74+
#include <dt-bindings/interconnect/qcom,icc.h>
75+
#include <dt-bindings/interrupt-controller/arm-gic.h>
76+
#include <dt-bindings/phy/phy-qcom-qmp.h>
77+
#include <dt-bindings/power/qcom,rpmhpd.h>
78+
79+
display-subsystem@9800000 {
80+
compatible = "qcom,kaanapali-mdss";
81+
reg = <0x09800000 0x1000>;
82+
reg-names = "mdss";
83+
84+
interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
85+
86+
clocks = <&disp_cc_mdss_ahb_clk>,
87+
<&gcc_disp_hf_axi_clk>,
88+
<&disp_cc_mdss_mdp_clk>,
89+
<&disp_cc_mdss_ahb_swi_clk>;
90+
resets = <&disp_cc_mdss_core_bcr>;
91+
92+
power-domains = <&mdss_gdsc>;
93+
94+
iommus = <&apps_smmu 0x800 0x2>;
95+
96+
interrupt-controller;
97+
#interrupt-cells = <1>;
98+
99+
#address-cells = <1>;
100+
#size-cells = <1>;
101+
ranges;
102+
103+
display-controller@9801000 {
104+
compatible = "qcom,kaanapali-dpu";
105+
reg = <0x09801000 0x1c8000>,
106+
<0x09b16000 0x3000>;
107+
reg-names = "mdp",
108+
"vbif";
109+
110+
interrupts-extended = <&mdss 0>;
111+
112+
clocks = <&gcc_disp_hf_axi_clk>,
113+
<&disp_cc_mdss_ahb_clk>,
114+
<&disp_cc_mdss_mdp_lut_clk>,
115+
<&disp_cc_mdss_mdp_clk>,
116+
<&disp_cc_mdss_vsync_clk>;
117+
clock-names = "nrt_bus",
118+
"iface",
119+
"lut",
120+
"core",
121+
"vsync";
122+
123+
assigned-clocks = <&disp_cc_mdss_vsync_clk>;
124+
assigned-clock-rates = <19200000>;
125+
126+
operating-points-v2 = <&mdp_opp_table>;
127+
128+
power-domains = <&rpmhpd RPMHPD_MMCX>;
129+
130+
ports {
131+
#address-cells = <1>;
132+
#size-cells = <0>;
133+
134+
port@0 {
135+
reg = <0>;
136+
137+
dpu_intf1_out: endpoint {
138+
remote-endpoint = <&mdss_dsi0_in>;
139+
};
140+
};
141+
142+
port@1 {
143+
reg = <1>;
144+
145+
dpu_intf2_out: endpoint {
146+
remote-endpoint = <&mdss_dsi1_in>;
147+
};
148+
};
149+
};
150+
151+
mdp_opp_table: opp-table {
152+
compatible = "operating-points-v2";
153+
154+
opp-156000000 {
155+
opp-hz = /bits/ 64 <156000000>;
156+
required-opps = <&rpmhpd_opp_low_svs_d1>;
157+
};
158+
159+
opp-207000000 {
160+
opp-hz = /bits/ 64 <207000000>;
161+
required-opps = <&rpmhpd_opp_low_svs>;
162+
};
163+
164+
opp-337000000 {
165+
opp-hz = /bits/ 64 <337000000>;
166+
required-opps = <&rpmhpd_opp_svs>;
167+
};
168+
169+
opp-417000000 {
170+
opp-hz = /bits/ 64 <417000000>;
171+
required-opps = <&rpmhpd_opp_svs_l1>;
172+
};
173+
174+
opp-532000000 {
175+
opp-hz = /bits/ 64 <532000000>;
176+
required-opps = <&rpmhpd_opp_nom>;
177+
};
178+
179+
opp-600000000 {
180+
opp-hz = /bits/ 64 <600000000>;
181+
required-opps = <&rpmhpd_opp_nom_l1>;
182+
};
183+
184+
opp-650000000 {
185+
opp-hz = /bits/ 64 <650000000>;
186+
required-opps = <&rpmhpd_opp_turbo>;
187+
};
188+
};
189+
};
190+
191+
dsi@9ac0000 {
192+
compatible = "qcom,kaanapali-dsi-ctrl", "qcom,mdss-dsi-ctrl";
193+
reg = <0x09ac0000 0x1000>;
194+
reg-names = "dsi_ctrl";
195+
196+
interrupts-extended = <&mdss 4>;
197+
198+
clocks = <&disp_cc_mdss_byte0_clk>,
199+
<&disp_cc_mdss_byte0_intf_clk>,
200+
<&disp_cc_mdss_pclk0_clk>,
201+
<&disp_cc_mdss_esc0_clk>,
202+
<&disp_cc_mdss_ahb_clk>,
203+
<&gcc_disp_hf_axi_clk>,
204+
<&mdss_dsi0_phy 1>,
205+
<&mdss_dsi0_phy 0>,
206+
<&disp_cc_esync0_clk>,
207+
<&disp_cc_osc_clk>,
208+
<&disp_cc_mdss_byte0_clk_src>,
209+
<&disp_cc_mdss_pclk0_clk_src>;
210+
clock-names = "byte",
211+
"byte_intf",
212+
"pixel",
213+
"core",
214+
"iface",
215+
"bus",
216+
"dsi_pll_pixel",
217+
"dsi_pll_byte",
218+
"esync",
219+
"osc",
220+
"byte_src",
221+
"pixel_src";
222+
223+
operating-points-v2 = <&mdss_dsi_opp_table>;
224+
225+
power-domains = <&rpmhpd RPMHPD_MMCX>;
226+
227+
phys = <&mdss_dsi0_phy>;
228+
phy-names = "dsi";
229+
230+
#address-cells = <1>;
231+
#size-cells = <0>;
232+
233+
ports {
234+
#address-cells = <1>;
235+
#size-cells = <0>;
236+
237+
port@0 {
238+
reg = <0>;
239+
240+
mdss_dsi0_in: endpoint {
241+
remote-endpoint = <&dpu_intf1_out>;
242+
};
243+
};
244+
245+
port@1 {
246+
reg = <1>;
247+
248+
mdss_dsi0_out: endpoint {
249+
remote-endpoint = <&panel0_in>;
250+
data-lanes = <0 1 2 3>;
251+
};
252+
};
253+
};
254+
255+
mdss_dsi_opp_table: opp-table {
256+
compatible = "operating-points-v2";
257+
258+
opp-187500000 {
259+
opp-hz = /bits/ 64 <187500000>;
260+
required-opps = <&rpmhpd_opp_low_svs_d1>;
261+
};
262+
263+
opp-250000000 {
264+
opp-hz = /bits/ 64 <250000000>;
265+
required-opps = <&rpmhpd_opp_low_svs>;
266+
};
267+
268+
opp-312500000 {
269+
opp-hz = /bits/ 64 <312500000>;
270+
required-opps = <&rpmhpd_opp_svs>;
271+
};
272+
273+
opp-358000000 {
274+
opp-hz = /bits/ 64 <358000000>;
275+
required-opps = <&rpmhpd_opp_svs_l1>;
276+
};
277+
};
278+
};
279+
280+
mdss_dsi0_phy: phy@9ac1000 {
281+
compatible = "qcom,kaanapali-dsi-phy-3nm";
282+
reg = <0x09ac1000 0x1cc>,
283+
<0x09ac1200 0x80>,
284+
<0x09ac1500 0x400>;
285+
reg-names = "dsi_phy",
286+
"dsi_phy_lane",
287+
"dsi_pll";
288+
289+
clocks = <&disp_cc_mdss_ahb_clk>,
290+
<&rpmhcc RPMH_CXO_CLK>;
291+
clock-names = "iface",
292+
"ref";
293+
294+
#clock-cells = <1>;
295+
#phy-cells = <0>;
296+
};
297+
};

0 commit comments

Comments
 (0)