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