1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/phy/qcom,msm8996-qmp-usb3-phy.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm QMP PHY controller (USB, MSM8996)
8
9maintainers:
10  - Vinod Koul <vkoul@kernel.org>
11
12description:
13  QMP PHY controller supports physical layer functionality for a number of
14  controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
15
16  Note that these bindings are for SoCs up to SC8180X. For newer SoCs, see
17  qcom,sc8280xp-qmp-usb3-uni-phy.yaml.
18
19properties:
20  compatible:
21    enum:
22      - qcom,ipq6018-qmp-usb3-phy
23      - qcom,ipq8074-qmp-usb3-phy
24      - qcom,msm8996-qmp-usb3-phy
25      - qcom,msm8998-qmp-usb3-phy
26      - qcom,sc7180-qmp-usb3-phy
27      - qcom,sc8180x-qmp-usb3-phy
28      - qcom,sdm845-qmp-usb3-phy
29      - qcom,sdm845-qmp-usb3-uni-phy
30      - qcom,sdx55-qmp-usb3-uni-phy
31      - qcom,sdx65-qmp-usb3-uni-phy
32      - qcom,sm8150-qmp-usb3-phy
33      - qcom,sm8150-qmp-usb3-uni-phy
34      - qcom,sm8250-qmp-usb3-phy
35      - qcom,sm8250-qmp-usb3-uni-phy
36      - qcom,sm8350-qmp-usb3-phy
37      - qcom,sm8350-qmp-usb3-uni-phy
38      - qcom,sm8450-qmp-usb3-phy
39
40  reg:
41    minItems: 1
42    items:
43      - description: serdes
44      - description: DP_COM
45
46  "#address-cells":
47    enum: [ 1, 2 ]
48
49  "#size-cells":
50    enum: [ 1, 2 ]
51
52  ranges: true
53
54  clocks:
55    minItems: 3
56    maxItems: 4
57
58  clock-names:
59    minItems: 3
60    maxItems: 4
61
62  power-domains:
63    maxItems: 1
64
65  resets:
66    maxItems: 2
67
68  reset-names:
69    maxItems: 2
70
71  vdda-phy-supply: true
72
73  vdda-pll-supply: true
74
75  vddp-ref-clk-supply: true
76
77patternProperties:
78  "^phy@[0-9a-f]+$":
79    type: object
80    description: single PHY-provider child node
81    properties:
82      reg:
83        minItems: 3
84        maxItems: 6
85
86      clocks:
87        items:
88          - description: PIPE clock
89
90      clock-names:
91        deprecated: true
92        items:
93          - const: pipe0
94
95      "#clock-cells":
96        const: 0
97
98      clock-output-names:
99        maxItems: 1
100
101      "#phy-cells":
102        const: 0
103
104    required:
105      - reg
106      - clocks
107      - "#clock-cells"
108      - clock-output-names
109      - "#phy-cells"
110
111    additionalProperties: false
112
113required:
114  - compatible
115  - reg
116  - "#address-cells"
117  - "#size-cells"
118  - ranges
119  - clocks
120  - clock-names
121  - resets
122  - reset-names
123  - vdda-phy-supply
124  - vdda-pll-supply
125
126additionalProperties: false
127
128allOf:
129  - if:
130      properties:
131        compatible:
132          contains:
133            enum:
134              - qcom,sc7180-qmp-usb3-phy
135    then:
136      properties:
137        clocks:
138          maxItems: 4
139        clock-names:
140          items:
141            - const: aux
142            - const: cfg_ahb
143            - const: ref
144            - const: com_aux
145        resets:
146          maxItems: 1
147        reset-names:
148          items:
149            - const: phy
150
151  - if:
152      properties:
153        compatible:
154          contains:
155            enum:
156              - qcom,sdm845-qmp-usb3-uni-phy
157    then:
158      properties:
159        clocks:
160          maxItems: 4
161        clock-names:
162          items:
163            - const: aux
164            - const: cfg_ahb
165            - const: ref
166            - const: com_aux
167        resets:
168          maxItems: 2
169        reset-names:
170          items:
171            - const: phy
172            - const: common
173
174  - if:
175      properties:
176        compatible:
177          contains:
178            enum:
179              - qcom,ipq8074-qmp-usb3-phy
180              - qcom,msm8996-qmp-usb3-phy
181              - qcom,msm8998-qmp-usb3-phy
182              - qcom,sdx55-qmp-usb3-uni-phy
183              - qcom,sdx65-qmp-usb3-uni-phy
184    then:
185      properties:
186        clocks:
187          maxItems: 3
188        clock-names:
189          items:
190            - const: aux
191            - const: cfg_ahb
192            - const: ref
193        resets:
194          maxItems: 2
195        reset-names:
196          items:
197            - const: phy
198            - const: common
199
200  - if:
201      properties:
202        compatible:
203          contains:
204            enum:
205              - qcom,sm8150-qmp-usb3-phy
206              - qcom,sm8150-qmp-usb3-uni-phy
207              - qcom,sm8250-qmp-usb3-uni-phy
208              - qcom,sm8350-qmp-usb3-uni-phy
209    then:
210      properties:
211        clocks:
212          maxItems: 4
213        clock-names:
214          items:
215            - const: aux
216            - const: ref_clk_src
217            - const: ref
218            - const: com_aux
219        resets:
220          maxItems: 2
221        reset-names:
222          items:
223            - const: phy
224            - const: common
225
226  - if:
227      properties:
228        compatible:
229          contains:
230            enum:
231              - qcom,sm8250-qmp-usb3-phy
232              - qcom,sm8350-qmp-usb3-phy
233    then:
234      properties:
235        clocks:
236          maxItems: 3
237        clock-names:
238          items:
239            - const: aux
240            - const: ref_clk_src
241            - const: com_aux
242        resets:
243          maxItems: 2
244        reset-names:
245          items:
246            - const: phy
247            - const: common
248
249  - if:
250      properties:
251        compatible:
252          contains:
253            enum:
254              - qcom,sdm845-qmp-usb3-phy
255              - qcom,sm8150-qmp-usb3-phy
256              - qcom,sm8350-qmp-usb3-phy
257              - qcom,sm8450-qmp-usb3-phy
258    then:
259      patternProperties:
260        "^phy@[0-9a-f]+$":
261          properties:
262            reg:
263              items:
264                - description: TX lane 1
265                - description: RX lane 1
266                - description: PCS
267                - description: TX lane 2
268                - description: RX lane 2
269                - description: PCS_MISC
270
271  - if:
272      properties:
273        compatible:
274          contains:
275            enum:
276              - qcom,msm8998-qmp-usb3-phy
277    then:
278      patternProperties:
279        "^phy@[0-9a-f]+$":
280          properties:
281            reg:
282              items:
283                - description: TX lane 1
284                - description: RX lane 1
285                - description: PCS
286                - description: TX lane 2
287                - description: RX lane 2
288
289  - if:
290      properties:
291        compatible:
292          contains:
293            enum:
294              - qcom,ipq6018-qmp-usb3-phy
295              - qcom,ipq8074-qmp-usb3-phy
296              - qcom,sc7180-qmp-usb3-phy
297              - qcom,sc8180x-qmp-usb3-phy
298              - qcom,sdx55-qmp-usb3-uni-phy
299              - qcom,sdx65-qmp-usb3-uni-phy
300              - qcom,sm8150-qmp-usb3-uni-phy
301              - qcom,sm8250-qmp-usb3-phy
302    then:
303      patternProperties:
304        "^phy@[0-9a-f]+$":
305          properties:
306            reg:
307              items:
308                - description: TX
309                - description: RX
310                - description: PCS
311                - description: PCS_MISC
312
313  - if:
314      properties:
315        compatible:
316          contains:
317            enum:
318              - qcom,msm8996-qmp-usb3-phy
319              - qcom,sm8250-qmp-usb3-uni-phy
320              - qcom,sm8350-qmp-usb3-uni-phy
321    then:
322      patternProperties:
323        "^phy@[0-9a-f]+$":
324          properties:
325            reg:
326              items:
327                - description: TX
328                - description: RX
329                - description: PCS
330
331examples:
332  - |
333    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
334    usb_2_qmpphy: phy-wrapper@88eb000 {
335        compatible = "qcom,sdm845-qmp-usb3-uni-phy";
336        reg = <0x088eb000 0x18c>;
337        #address-cells = <1>;
338        #size-cells = <1>;
339        ranges = <0x0 0x088eb000 0x2000>;
340
341        clocks = <&gcc GCC_USB3_SEC_PHY_AUX_CLK >,
342                 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
343                 <&gcc GCC_USB3_SEC_CLKREF_CLK>,
344                 <&gcc GCC_USB3_SEC_PHY_COM_AUX_CLK>;
345        clock-names = "aux", "cfg_ahb", "ref", "com_aux";
346
347        resets = <&gcc GCC_USB3PHY_PHY_SEC_BCR>,
348                 <&gcc GCC_USB3_PHY_SEC_BCR>;
349        reset-names = "phy", "common";
350
351        vdda-phy-supply = <&vdda_usb2_ss_1p2>;
352        vdda-pll-supply = <&vdda_usb2_ss_core>;
353
354        usb_2_ssphy: phy@200 {
355                reg = <0x200 0x128>,
356                      <0x400 0x1fc>,
357                      <0x800 0x218>,
358                      <0x600 0x70>;
359
360                clocks = <&gcc GCC_USB3_SEC_PHY_PIPE_CLK>;
361
362                #clock-cells = <0>;
363                clock-output-names = "usb3_uni_phy_pipe_clk_src";
364
365                #phy-cells = <0>;
366            };
367        };
368