1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2
3%YAML 1.2
4---
5$id: "http://devicetree.org/schemas/phy/qcom,qmp-phy.yaml#"
6$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7
8title: Qualcomm QMP PHY controller
9
10maintainers:
11  - Vinod Koul <vkoul@kernel.org>
12
13description:
14  QMP phy controller supports physical layer functionality for a number of
15  controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
16
17properties:
18  compatible:
19    enum:
20      - qcom,ipq6018-qmp-pcie-phy
21      - qcom,ipq6018-qmp-usb3-phy
22      - qcom,ipq8074-qmp-gen3-pcie-phy
23      - qcom,ipq8074-qmp-pcie-phy
24      - qcom,ipq8074-qmp-usb3-phy
25      - qcom,msm8996-qmp-pcie-phy
26      - qcom,msm8996-qmp-ufs-phy
27      - qcom,msm8996-qmp-usb3-phy
28      - qcom,msm8998-qmp-pcie-phy
29      - qcom,msm8998-qmp-ufs-phy
30      - qcom,msm8998-qmp-usb3-phy
31      - qcom,qcm2290-qmp-usb3-phy
32      - qcom,sc7180-qmp-usb3-phy
33      - qcom,sc8180x-qmp-pcie-phy
34      - qcom,sc8180x-qmp-ufs-phy
35      - qcom,sc8180x-qmp-usb3-phy
36      - qcom,sc8280xp-qmp-ufs-phy
37      - qcom,sdm845-qhp-pcie-phy
38      - qcom,sdm845-qmp-pcie-phy
39      - qcom,sdm845-qmp-ufs-phy
40      - qcom,sdm845-qmp-usb3-phy
41      - qcom,sdm845-qmp-usb3-uni-phy
42      - qcom,sm6115-qmp-ufs-phy
43      - qcom,sm6350-qmp-ufs-phy
44      - qcom,sm8150-qmp-ufs-phy
45      - qcom,sm8150-qmp-usb3-phy
46      - qcom,sm8150-qmp-usb3-uni-phy
47      - qcom,sm8250-qmp-ufs-phy
48      - qcom,sm8250-qmp-gen3x1-pcie-phy
49      - qcom,sm8250-qmp-gen3x2-pcie-phy
50      - qcom,sm8250-qmp-modem-pcie-phy
51      - qcom,sm8250-qmp-usb3-phy
52      - qcom,sm8250-qmp-usb3-uni-phy
53      - qcom,sm8350-qmp-ufs-phy
54      - qcom,sm8350-qmp-usb3-phy
55      - qcom,sm8350-qmp-usb3-uni-phy
56      - qcom,sm8450-qmp-gen3x1-pcie-phy
57      - qcom,sm8450-qmp-gen4x2-pcie-phy
58      - qcom,sm8450-qmp-ufs-phy
59      - qcom,sm8450-qmp-usb3-phy
60      - qcom,sdx55-qmp-pcie-phy
61      - qcom,sdx55-qmp-usb3-uni-phy
62      - qcom,sdx65-qmp-usb3-uni-phy
63
64  reg:
65    minItems: 1
66    items:
67      - description: Address and length of PHY's common serdes block.
68      - description: Address and length of PHY's DP_COM control block.
69
70  "#clock-cells":
71    enum: [ 1, 2 ]
72
73  "#address-cells":
74    enum: [ 1, 2 ]
75
76  "#size-cells":
77    enum: [ 1, 2 ]
78
79  ranges: true
80
81  clocks:
82    minItems: 1
83    maxItems: 4
84
85  clock-names:
86    minItems: 1
87    maxItems: 4
88
89  resets:
90    minItems: 1
91    maxItems: 3
92
93  reset-names:
94    minItems: 1
95    maxItems: 3
96
97  vdda-phy-supply:
98    description:
99      Phandle to a regulator supply to PHY core block.
100
101  vdda-pll-supply:
102    description:
103      Phandle to 1.8V regulator supply to PHY refclk pll block.
104
105  vddp-ref-clk-supply:
106    description:
107      Phandle to a regulator supply to any specific refclk pll block.
108
109#Required nodes:
110patternProperties:
111  "^phy@[0-9a-f]+$":
112    type: object
113    description:
114      Each device node of QMP phy is required to have as many child nodes as
115      the number of lanes the PHY has.
116
117required:
118  - compatible
119  - reg
120  - "#clock-cells"
121  - "#address-cells"
122  - "#size-cells"
123  - ranges
124  - clocks
125  - clock-names
126  - resets
127  - reset-names
128
129additionalProperties: false
130
131allOf:
132  - if:
133      properties:
134        compatible:
135          contains:
136            enum:
137              - qcom,sdm845-qmp-usb3-uni-phy
138    then:
139      properties:
140        clocks:
141          items:
142            - description: Phy aux clock.
143            - description: Phy config clock.
144            - description: 19.2 MHz ref clk.
145            - description: Phy common block aux clock.
146        clock-names:
147          items:
148            - const: aux
149            - const: cfg_ahb
150            - const: ref
151            - const: com_aux
152        resets:
153          items:
154            - description: reset of phy block.
155            - description: phy common block reset.
156        reset-names:
157          items:
158            - const: phy
159            - const: common
160      required:
161        - vdda-phy-supply
162        - vdda-pll-supply
163  - if:
164      properties:
165        compatible:
166          contains:
167            enum:
168              - qcom,sdx55-qmp-usb3-uni-phy
169              - qcom,sdx65-qmp-usb3-uni-phy
170    then:
171      properties:
172        clocks:
173          items:
174            - description: Phy aux clock.
175            - description: Phy config clock.
176            - description: 19.2 MHz ref clk.
177        clock-names:
178          items:
179            - const: aux
180            - const: cfg_ahb
181            - const: ref
182        resets:
183          items:
184            - description: reset of phy block.
185            - description: phy common block reset.
186        reset-names:
187          items:
188            - const: phy
189            - const: common
190      required:
191        - vdda-phy-supply
192        - vdda-pll-supply
193  - if:
194      properties:
195        compatible:
196          contains:
197            enum:
198              - qcom,msm8996-qmp-pcie-phy
199    then:
200      properties:
201        clocks:
202          items:
203            - description: Phy aux clock.
204            - description: Phy config clock.
205            - description: 19.2 MHz ref clk.
206        clock-names:
207          items:
208            - const: aux
209            - const: cfg_ahb
210            - const: ref
211        resets:
212          items:
213            - description: reset of phy block.
214            - description: phy common block reset.
215            - description: phy's ahb cfg block reset.
216        reset-names:
217          items:
218            - const: phy
219            - const: common
220            - const: cfg
221      required:
222        - vdda-phy-supply
223        - vdda-pll-supply
224  - if:
225      properties:
226        compatible:
227          contains:
228            enum:
229              - qcom,ipq8074-qmp-usb3-phy
230              - qcom,msm8996-qmp-usb3-phy
231              - qcom,msm8998-qmp-pcie-phy
232              - qcom,msm8998-qmp-usb3-phy
233    then:
234      properties:
235        clocks:
236          items:
237            - description: Phy aux clock.
238            - description: Phy config clock.
239            - description: 19.2 MHz ref clk.
240        clock-names:
241          items:
242            - const: aux
243            - const: cfg_ahb
244            - const: ref
245        resets:
246          items:
247            - description: reset of phy block.
248            - description: phy common block reset.
249        reset-names:
250          items:
251            - const: phy
252            - const: common
253      required:
254        - vdda-phy-supply
255        - vdda-pll-supply
256  - if:
257      properties:
258        compatible:
259          contains:
260            enum:
261              - qcom,msm8996-qmp-ufs-phy
262    then:
263      properties:
264        clocks:
265          items:
266            - description: 19.2 MHz ref clk.
267        clock-names:
268          items:
269            - const: ref
270        resets:
271          items:
272            - description: PHY reset in the UFS controller.
273        reset-names:
274          items:
275            - const: ufsphy
276      required:
277        - vdda-phy-supply
278        - vdda-pll-supply
279  - if:
280      properties:
281        compatible:
282          contains:
283            enum:
284              - qcom,msm8998-qmp-ufs-phy
285              - qcom,sdm845-qmp-ufs-phy
286              - qcom,sm6350-qmp-ufs-phy
287              - qcom,sm8150-qmp-ufs-phy
288              - qcom,sm8250-qmp-ufs-phy
289              - qcom,sc8180x-qmp-ufs-phy
290              - qcom,sc8280xp-qmp-ufs-phy
291    then:
292      properties:
293        clocks:
294          items:
295            - description: 19.2 MHz ref clk.
296            - description: Phy reference aux clock.
297        clock-names:
298          items:
299            - const: ref
300            - const: ref_aux
301        resets:
302          items:
303            - description: PHY reset in the UFS controller.
304        reset-names:
305          items:
306            - const: ufsphy
307      required:
308        - vdda-phy-supply
309        - vdda-pll-supply
310  - if:
311      properties:
312        compatible:
313          contains:
314            enum:
315              - qcom,ipq6018-qmp-pcie-phy
316              - qcom,ipq8074-qmp-gen3-pcie-phy
317              - qcom,ipq8074-qmp-pcie-phy
318    then:
319      properties:
320        clocks:
321          items:
322            - description: Phy aux clock.
323            - description: Phy config clock.
324        clock-names:
325          items:
326            - const: aux
327            - const: cfg_ahb
328        resets:
329          items:
330            - description: reset of phy block.
331            - description: phy common block reset.
332        reset-names:
333          items:
334            - const: phy
335            - const: common
336  - if:
337      properties:
338        compatible:
339          contains:
340            enum:
341              - qcom,sc8180x-qmp-pcie-phy
342              - qcom,sdm845-qhp-pcie-phy
343              - qcom,sdm845-qmp-pcie-phy
344              - qcom,sdx55-qmp-pcie-phy
345              - qcom,sm8250-qmp-gen3x1-pcie-phy
346              - qcom,sm8250-qmp-gen3x2-pcie-phy
347              - qcom,sm8250-qmp-modem-pcie-phy
348              - qcom,sm8450-qmp-gen3x1-pcie-phy
349              - qcom,sm8450-qmp-gen4x2-pcie-phy
350    then:
351      properties:
352        clocks:
353          items:
354            - description: Phy aux clock.
355            - description: Phy config clock.
356            - description: 19.2 MHz ref clk.
357            - description: Phy refgen clk.
358        clock-names:
359          items:
360            - const: aux
361            - const: cfg_ahb
362            - const: ref
363            - const: refgen
364        resets:
365          items:
366            - description: reset of phy block.
367        reset-names:
368          items:
369            - const: phy
370      required:
371        - vdda-phy-supply
372        - vdda-pll-supply
373  - if:
374      properties:
375        compatible:
376          contains:
377            enum:
378              - qcom,sm8150-qmp-usb3-phy
379              - qcom,sm8150-qmp-usb3-uni-phy
380              - qcom,sm8250-qmp-usb3-uni-phy
381              - qcom,sm8350-qmp-usb3-uni-phy
382    then:
383      properties:
384        clocks:
385          items:
386            - description: Phy aux clock.
387            - description: 19.2 MHz ref clk source.
388            - description: 19.2 MHz ref clk.
389            - description: Phy common block aux clock.
390        clock-names:
391          items:
392            - const: aux
393            - const: ref_clk_src
394            - const: ref
395            - const: com_aux
396        resets:
397          items:
398            - description: reset of phy block.
399            - description: phy common block reset.
400        reset-names:
401          items:
402            - const: phy
403            - const: common
404      required:
405        - vdda-phy-supply
406        - vdda-pll-supply
407  - if:
408      properties:
409        compatible:
410          contains:
411            enum:
412              - qcom,sm8250-qmp-usb3-phy
413              - qcom,sm8350-qmp-usb3-phy
414    then:
415      properties:
416        clocks:
417          items:
418            - description: Phy aux clock.
419            - description: 19.2 MHz ref clk.
420            - description: Phy common block aux clock.
421        clock-names:
422          items:
423            - const: aux
424            - const: ref_clk_src
425            - const: com_aux
426        resets:
427          items:
428            - description: reset of phy block.
429            - description: phy common block reset.
430        reset-names:
431          items:
432            - const: phy
433            - const: common
434      required:
435        - vdda-phy-supply
436        - vdda-pll-supply
437  - if:
438      properties:
439        compatible:
440          contains:
441            enum:
442              - qcom,qcm2290-qmp-usb3-phy
443    then:
444      properties:
445        clocks:
446          items:
447            - description: Phy config clock.
448            - description: 19.2 MHz ref clk.
449            - description: Phy common block aux clock.
450        clock-names:
451          items:
452            - const: cfg_ahb
453            - const: ref
454            - const: com_aux
455        resets:
456          items:
457            - description: phy_phy reset.
458            - description: reset of phy block.
459        reset-names:
460          items:
461            - const: phy_phy
462            - const: phy
463      required:
464        - vdda-phy-supply
465        - vdda-pll-supply
466
467examples:
468  - |
469    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
470    usb_2_qmpphy: phy-wrapper@88eb000 {
471        compatible = "qcom,sdm845-qmp-usb3-uni-phy";
472        reg = <0x088eb000 0x18c>;
473        #clock-cells = <1>;
474        #address-cells = <1>;
475        #size-cells = <1>;
476        ranges = <0x0 0x088eb000 0x2000>;
477
478        clocks = <&gcc GCC_USB3_SEC_PHY_AUX_CLK >,
479                 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
480                 <&gcc GCC_USB3_SEC_CLKREF_CLK>,
481                 <&gcc GCC_USB3_SEC_PHY_COM_AUX_CLK>;
482        clock-names = "aux", "cfg_ahb", "ref", "com_aux";
483
484        resets = <&gcc GCC_USB3PHY_PHY_SEC_BCR>,
485                 <&gcc GCC_USB3_PHY_SEC_BCR>;
486        reset-names = "phy", "common";
487
488        vdda-phy-supply = <&vdda_usb2_ss_1p2>;
489        vdda-pll-supply = <&vdda_usb2_ss_core>;
490
491        usb_2_ssphy: phy@200 {
492                reg = <0x200 0x128>,
493                      <0x400 0x1fc>,
494                      <0x800 0x218>,
495                      <0x600 0x70>;
496                #clock-cells = <0>;
497                #phy-cells = <0>;
498                clocks = <&gcc GCC_USB3_SEC_PHY_PIPE_CLK>;
499                clock-names = "pipe0";
500                clock-output-names = "usb3_uni_phy_pipe_clk_src";
501            };
502        };
503