blob: 16634f73bdcff362859ca19afa4b57a03724d776 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/phy/qcom,sc8280xp-qmp-pcie-phy.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm QMP PHY controller (PCIe, SC8280XP)
8
9maintainers:
10 - Vinod Koul <vkoul@kernel.org>
11
12description:
13 The QMP PHY controller supports physical layer functionality for a number of
14 controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
15
16properties:
17 compatible:
18 enum:
19 - qcom,sa8775p-qmp-gen4x2-pcie-phy
20 - qcom,sa8775p-qmp-gen4x4-pcie-phy
21 - qcom,sc8180x-qmp-pcie-phy
22 - qcom,sc8280xp-qmp-gen3x1-pcie-phy
23 - qcom,sc8280xp-qmp-gen3x2-pcie-phy
24 - qcom,sc8280xp-qmp-gen3x4-pcie-phy
25 - qcom,sdm845-qhp-pcie-phy
26 - qcom,sdm845-qmp-pcie-phy
27 - qcom,sdx55-qmp-pcie-phy
28 - qcom,sdx65-qmp-gen4x2-pcie-phy
29 - qcom,sm8150-qmp-gen3x1-pcie-phy
30 - qcom,sm8150-qmp-gen3x2-pcie-phy
31 - qcom,sm8250-qmp-gen3x1-pcie-phy
32 - qcom,sm8250-qmp-gen3x2-pcie-phy
33 - qcom,sm8250-qmp-modem-pcie-phy
34 - qcom,sm8350-qmp-gen3x1-pcie-phy
35 - qcom,sm8450-qmp-gen3x1-pcie-phy
36 - qcom,sm8450-qmp-gen4x2-pcie-phy
37 - qcom,sm8550-qmp-gen3x2-pcie-phy
38 - qcom,sm8550-qmp-gen4x2-pcie-phy
Tom Rini93743d22024-04-01 09:08:13 -040039 - qcom,sm8650-qmp-gen3x2-pcie-phy
40 - qcom,sm8650-qmp-gen4x2-pcie-phy
Tom Rini6bb92fc2024-05-20 09:54:58 -060041 - qcom,x1e80100-qmp-gen3x2-pcie-phy
42 - qcom,x1e80100-qmp-gen4x2-pcie-phy
Tom Rini53633a82024-02-29 12:33:36 -050043
44 reg:
45 minItems: 1
46 maxItems: 2
47
48 clocks:
49 minItems: 5
50 maxItems: 7
51
52 clock-names:
53 minItems: 5
54 items:
55 - const: aux
56 - const: cfg_ahb
57 - const: ref
58 - enum: [rchng, refgen]
59 - const: pipe
60 - const: pipediv2
61 - const: phy_aux
62
63 power-domains:
64 maxItems: 1
65
66 resets:
67 minItems: 1
68 maxItems: 2
69
70 reset-names:
71 minItems: 1
72 items:
73 - const: phy
74 - const: phy_nocsr
75
76 vdda-phy-supply: true
77
78 vdda-pll-supply: true
79
80 vdda-qref-supply: true
81
82 qcom,4ln-config-sel:
83 description: PCIe 4-lane configuration
84 $ref: /schemas/types.yaml#/definitions/phandle-array
85 items:
86 - items:
87 - description: phandle of TCSR syscon
88 - description: offset of PCIe 4-lane configuration register
89 - description: offset of configuration bit for this PHY
90
Tom Rini762f85b2024-07-20 11:15:10 -060091 "#clock-cells": true
Tom Rini53633a82024-02-29 12:33:36 -050092
93 clock-output-names:
Tom Rini762f85b2024-07-20 11:15:10 -060094 minItems: 1
95 maxItems: 2
Tom Rini53633a82024-02-29 12:33:36 -050096
97 "#phy-cells":
98 const: 0
99
100required:
101 - compatible
102 - reg
103 - clocks
104 - clock-names
105 - resets
106 - reset-names
107 - vdda-phy-supply
108 - vdda-pll-supply
109 - "#clock-cells"
110 - clock-output-names
111 - "#phy-cells"
112
113additionalProperties: false
114
115allOf:
116 - if:
117 properties:
118 compatible:
119 contains:
120 enum:
121 - qcom,sc8280xp-qmp-gen3x4-pcie-phy
122 then:
123 properties:
124 reg:
125 items:
126 - description: port a
127 - description: port b
128 required:
129 - qcom,4ln-config-sel
130 else:
131 properties:
132 reg:
133 maxItems: 1
134
135 - if:
136 properties:
137 compatible:
138 contains:
139 enum:
140 - qcom,sc8180x-qmp-pcie-phy
141 - qcom,sdm845-qhp-pcie-phy
142 - qcom,sdm845-qmp-pcie-phy
143 - qcom,sdx55-qmp-pcie-phy
144 - qcom,sm8150-qmp-gen3x1-pcie-phy
145 - qcom,sm8150-qmp-gen3x2-pcie-phy
146 - qcom,sm8250-qmp-gen3x1-pcie-phy
147 - qcom,sm8250-qmp-gen3x2-pcie-phy
148 - qcom,sm8250-qmp-modem-pcie-phy
149 - qcom,sm8350-qmp-gen3x1-pcie-phy
150 - qcom,sm8450-qmp-gen3x1-pcie-phy
151 - qcom,sm8450-qmp-gen3x2-pcie-phy
152 - qcom,sm8550-qmp-gen3x2-pcie-phy
153 - qcom,sm8550-qmp-gen4x2-pcie-phy
Tom Rini93743d22024-04-01 09:08:13 -0400154 - qcom,sm8650-qmp-gen3x2-pcie-phy
155 - qcom,sm8650-qmp-gen4x2-pcie-phy
Tom Rini6bb92fc2024-05-20 09:54:58 -0600156 - qcom,x1e80100-qmp-gen3x2-pcie-phy
157 - qcom,x1e80100-qmp-gen4x2-pcie-phy
Tom Rini53633a82024-02-29 12:33:36 -0500158 then:
159 properties:
160 clocks:
161 maxItems: 5
162 clock-names:
163 maxItems: 5
164
165 - if:
166 properties:
167 compatible:
168 contains:
169 enum:
170 - qcom,sc8280xp-qmp-gen3x1-pcie-phy
171 - qcom,sc8280xp-qmp-gen3x2-pcie-phy
172 - qcom,sc8280xp-qmp-gen3x4-pcie-phy
173 then:
174 properties:
175 clocks:
176 minItems: 6
177 clock-names:
178 minItems: 6
179
180 - if:
181 properties:
182 compatible:
183 contains:
184 enum:
185 - qcom,sa8775p-qmp-gen4x2-pcie-phy
186 - qcom,sa8775p-qmp-gen4x4-pcie-phy
187 then:
188 properties:
189 clocks:
190 minItems: 7
191 clock-names:
192 minItems: 7
193
194 - if:
195 properties:
196 compatible:
197 contains:
198 enum:
199 - qcom,sm8550-qmp-gen4x2-pcie-phy
Tom Rini93743d22024-04-01 09:08:13 -0400200 - qcom,sm8650-qmp-gen4x2-pcie-phy
Tom Rini6bb92fc2024-05-20 09:54:58 -0600201 - qcom,x1e80100-qmp-gen4x2-pcie-phy
Tom Rini53633a82024-02-29 12:33:36 -0500202 then:
203 properties:
204 resets:
205 minItems: 2
206 reset-names:
207 minItems: 2
208 else:
209 properties:
210 resets:
211 maxItems: 1
212 reset-names:
213 maxItems: 1
Tom Rini762f85b2024-07-20 11:15:10 -0600214
215 - if:
216 properties:
217 compatible:
218 contains:
219 enum:
220 - qcom,sm8450-qmp-gen4x2-pcie-phy
221 - qcom,sm8550-qmp-gen4x2-pcie-phy
222 - qcom,sm8650-qmp-gen4x2-pcie-phy
223 then:
224 properties:
225 clock-output-names:
226 minItems: 2
227 "#clock-cells":
228 const: 1
229 else:
230 properties:
231 clock-output-names:
232 maxItems: 1
233 "#clock-cells":
234 const: 0
Tom Rini53633a82024-02-29 12:33:36 -0500235
236examples:
237 - |
238 #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
239
240 pcie2b_phy: phy@1c18000 {
241 compatible = "qcom,sc8280xp-qmp-gen3x2-pcie-phy";
242 reg = <0x01c18000 0x2000>;
243
244 clocks = <&gcc GCC_PCIE_2B_AUX_CLK>,
245 <&gcc GCC_PCIE_2B_CFG_AHB_CLK>,
246 <&gcc GCC_PCIE_2A2B_CLKREF_CLK>,
247 <&gcc GCC_PCIE2B_PHY_RCHNG_CLK>,
248 <&gcc GCC_PCIE_2B_PIPE_CLK>,
249 <&gcc GCC_PCIE_2B_PIPEDIV2_CLK>;
250 clock-names = "aux", "cfg_ahb", "ref", "rchng",
251 "pipe", "pipediv2";
252
253 power-domains = <&gcc PCIE_2B_GDSC>;
254
255 resets = <&gcc GCC_PCIE_2B_PHY_BCR>;
256 reset-names = "phy";
257
258 vdda-phy-supply = <&vreg_l6d>;
259 vdda-pll-supply = <&vreg_l4d>;
260
261 #clock-cells = <0>;
262 clock-output-names = "pcie_2b_pipe_clk";
263
264 #phy-cells = <0>;
265 };
266
267 pcie2a_phy: phy@1c24000 {
268 compatible = "qcom,sc8280xp-qmp-gen3x4-pcie-phy";
269 reg = <0x01c24000 0x2000>, <0x01c26000 0x2000>;
270
271 clocks = <&gcc GCC_PCIE_2A_AUX_CLK>,
272 <&gcc GCC_PCIE_2A_CFG_AHB_CLK>,
273 <&gcc GCC_PCIE_2A2B_CLKREF_CLK>,
274 <&gcc GCC_PCIE2A_PHY_RCHNG_CLK>,
275 <&gcc GCC_PCIE_2A_PIPE_CLK>,
276 <&gcc GCC_PCIE_2A_PIPEDIV2_CLK>;
277 clock-names = "aux", "cfg_ahb", "ref", "rchng",
278 "pipe", "pipediv2";
279
280 power-domains = <&gcc PCIE_2A_GDSC>;
281
282 resets = <&gcc GCC_PCIE_2A_PHY_BCR>;
283 reset-names = "phy";
284
285 vdda-phy-supply = <&vreg_l6d>;
286 vdda-pll-supply = <&vreg_l4d>;
287
288 qcom,4ln-config-sel = <&tcsr 0xa044 0>;
289
290 #clock-cells = <0>;
291 clock-output-names = "pcie_2a_pipe_clk";
292
293 #phy-cells = <0>;
294 };