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,sdm845-qmp-usb3-uni-phy
27*500e9d37SJohan Hovold      - qcom,sdx55-qmp-usb3-uni-phy
28*500e9d37SJohan Hovold      - qcom,sdx65-qmp-usb3-uni-phy
29*500e9d37SJohan Hovold      - qcom,sm8150-qmp-usb3-uni-phy
30*500e9d37SJohan Hovold      - qcom,sm8250-qmp-usb3-uni-phy
31*500e9d37SJohan Hovold      - qcom,sm8350-qmp-usb3-uni-phy
32*500e9d37SJohan Hovold
33*500e9d37SJohan Hovold  reg:
34*500e9d37SJohan Hovold    items:
35*500e9d37SJohan Hovold      - description: serdes
36*500e9d37SJohan Hovold
37*500e9d37SJohan Hovold  "#address-cells":
38*500e9d37SJohan Hovold    enum: [ 1, 2 ]
39*500e9d37SJohan Hovold
40*500e9d37SJohan Hovold  "#size-cells":
41*500e9d37SJohan Hovold    enum: [ 1, 2 ]
42*500e9d37SJohan Hovold
43*500e9d37SJohan Hovold  ranges: true
44*500e9d37SJohan Hovold
45*500e9d37SJohan Hovold  clocks:
46*500e9d37SJohan Hovold    minItems: 3
47*500e9d37SJohan Hovold    maxItems: 4
48*500e9d37SJohan Hovold
49*500e9d37SJohan Hovold  clock-names:
50*500e9d37SJohan Hovold    minItems: 3
51*500e9d37SJohan Hovold    maxItems: 4
52*500e9d37SJohan Hovold
53*500e9d37SJohan Hovold  power-domains:
54*500e9d37SJohan Hovold    maxItems: 1
55*500e9d37SJohan Hovold
56*500e9d37SJohan Hovold  resets:
57*500e9d37SJohan Hovold    maxItems: 2
58*500e9d37SJohan Hovold
59*500e9d37SJohan Hovold  reset-names:
60*500e9d37SJohan Hovold    maxItems: 2
61*500e9d37SJohan Hovold
62*500e9d37SJohan Hovold  vdda-phy-supply: true
63*500e9d37SJohan Hovold
64*500e9d37SJohan Hovold  vdda-pll-supply: true
65*500e9d37SJohan Hovold
66*500e9d37SJohan Hovold  vddp-ref-clk-supply: true
67*500e9d37SJohan Hovold
68*500e9d37SJohan HovoldpatternProperties:
69*500e9d37SJohan Hovold  "^phy@[0-9a-f]+$":
70*500e9d37SJohan Hovold    type: object
71*500e9d37SJohan Hovold    description: single PHY-provider child node
72*500e9d37SJohan Hovold    properties:
73*500e9d37SJohan Hovold      reg:
74*500e9d37SJohan Hovold        minItems: 3
75*500e9d37SJohan Hovold        maxItems: 6
76*500e9d37SJohan Hovold
77*500e9d37SJohan Hovold      clocks:
78*500e9d37SJohan Hovold        items:
79*500e9d37SJohan Hovold          - description: PIPE clock
80*500e9d37SJohan Hovold
81*500e9d37SJohan Hovold      clock-names:
82*500e9d37SJohan Hovold        deprecated: true
83*500e9d37SJohan Hovold        items:
84*500e9d37SJohan Hovold          - const: pipe0
85*500e9d37SJohan Hovold
86*500e9d37SJohan Hovold      "#clock-cells":
87*500e9d37SJohan Hovold        const: 0
88*500e9d37SJohan Hovold
89*500e9d37SJohan Hovold      clock-output-names:
90*500e9d37SJohan Hovold        maxItems: 1
91*500e9d37SJohan Hovold
92*500e9d37SJohan Hovold      "#phy-cells":
93*500e9d37SJohan Hovold        const: 0
94*500e9d37SJohan Hovold
95*500e9d37SJohan Hovold    required:
96*500e9d37SJohan Hovold      - reg
97*500e9d37SJohan Hovold      - clocks
98*500e9d37SJohan Hovold      - "#clock-cells"
99*500e9d37SJohan Hovold      - clock-output-names
100*500e9d37SJohan Hovold      - "#phy-cells"
101*500e9d37SJohan Hovold
102*500e9d37SJohan Hovold    additionalProperties: false
103*500e9d37SJohan Hovold
104*500e9d37SJohan Hovoldrequired:
105*500e9d37SJohan Hovold  - compatible
106*500e9d37SJohan Hovold  - reg
107*500e9d37SJohan Hovold  - "#address-cells"
108*500e9d37SJohan Hovold  - "#size-cells"
109*500e9d37SJohan Hovold  - ranges
110*500e9d37SJohan Hovold  - clocks
111*500e9d37SJohan Hovold  - clock-names
112*500e9d37SJohan Hovold  - resets
113*500e9d37SJohan Hovold  - reset-names
114*500e9d37SJohan Hovold  - vdda-phy-supply
115*500e9d37SJohan Hovold  - vdda-pll-supply
116*500e9d37SJohan Hovold
117*500e9d37SJohan HovoldadditionalProperties: false
118*500e9d37SJohan Hovold
119*500e9d37SJohan HovoldallOf:
120*500e9d37SJohan Hovold  - if:
121*500e9d37SJohan Hovold      properties:
122*500e9d37SJohan Hovold        compatible:
123*500e9d37SJohan Hovold          contains:
124*500e9d37SJohan Hovold            enum:
125*500e9d37SJohan Hovold              - qcom,sdm845-qmp-usb3-uni-phy
126*500e9d37SJohan Hovold    then:
127*500e9d37SJohan Hovold      properties:
128*500e9d37SJohan Hovold        clocks:
129*500e9d37SJohan Hovold          maxItems: 4
130*500e9d37SJohan Hovold        clock-names:
131*500e9d37SJohan Hovold          items:
132*500e9d37SJohan Hovold            - const: aux
133*500e9d37SJohan Hovold            - const: cfg_ahb
134*500e9d37SJohan Hovold            - const: ref
135*500e9d37SJohan Hovold            - const: com_aux
136*500e9d37SJohan Hovold        resets:
137*500e9d37SJohan Hovold          maxItems: 2
138*500e9d37SJohan Hovold        reset-names:
139*500e9d37SJohan Hovold          items:
140*500e9d37SJohan Hovold            - const: phy
141*500e9d37SJohan Hovold            - const: common
142*500e9d37SJohan Hovold
143*500e9d37SJohan Hovold  - if:
144*500e9d37SJohan Hovold      properties:
145*500e9d37SJohan Hovold        compatible:
146*500e9d37SJohan Hovold          contains:
147*500e9d37SJohan Hovold            enum:
148*500e9d37SJohan Hovold              - qcom,ipq8074-qmp-usb3-phy
149*500e9d37SJohan Hovold              - qcom,msm8996-qmp-usb3-phy
150*500e9d37SJohan Hovold              - qcom,msm8998-qmp-usb3-phy
151*500e9d37SJohan Hovold              - qcom,sdx55-qmp-usb3-uni-phy
152*500e9d37SJohan Hovold              - qcom,sdx65-qmp-usb3-uni-phy
153*500e9d37SJohan Hovold    then:
154*500e9d37SJohan Hovold      properties:
155*500e9d37SJohan Hovold        clocks:
156*500e9d37SJohan Hovold          maxItems: 3
157*500e9d37SJohan Hovold        clock-names:
158*500e9d37SJohan Hovold          items:
159*500e9d37SJohan Hovold            - const: aux
160*500e9d37SJohan Hovold            - const: cfg_ahb
161*500e9d37SJohan Hovold            - const: ref
162*500e9d37SJohan Hovold        resets:
163*500e9d37SJohan Hovold          maxItems: 2
164*500e9d37SJohan Hovold        reset-names:
165*500e9d37SJohan Hovold          items:
166*500e9d37SJohan Hovold            - const: phy
167*500e9d37SJohan Hovold            - const: common
168*500e9d37SJohan Hovold
169*500e9d37SJohan Hovold  - if:
170*500e9d37SJohan Hovold      properties:
171*500e9d37SJohan Hovold        compatible:
172*500e9d37SJohan Hovold          contains:
173*500e9d37SJohan Hovold            enum:
174*500e9d37SJohan Hovold              - qcom,sm8150-qmp-usb3-uni-phy
175*500e9d37SJohan Hovold              - qcom,sm8250-qmp-usb3-uni-phy
176*500e9d37SJohan Hovold              - qcom,sm8350-qmp-usb3-uni-phy
177*500e9d37SJohan Hovold    then:
178*500e9d37SJohan Hovold      properties:
179*500e9d37SJohan Hovold        clocks:
180*500e9d37SJohan Hovold          maxItems: 4
181*500e9d37SJohan Hovold        clock-names:
182*500e9d37SJohan Hovold          items:
183*500e9d37SJohan Hovold            - const: aux
184*500e9d37SJohan Hovold            - const: ref_clk_src
185*500e9d37SJohan Hovold            - const: ref
186*500e9d37SJohan Hovold            - const: com_aux
187*500e9d37SJohan Hovold        resets:
188*500e9d37SJohan Hovold          maxItems: 2
189*500e9d37SJohan Hovold        reset-names:
190*500e9d37SJohan Hovold          items:
191*500e9d37SJohan Hovold            - const: phy
192*500e9d37SJohan Hovold            - const: common
193*500e9d37SJohan Hovold
194*500e9d37SJohan Hovold  - if:
195*500e9d37SJohan Hovold      properties:
196*500e9d37SJohan Hovold        compatible:
197*500e9d37SJohan Hovold          contains:
198*500e9d37SJohan Hovold            enum:
199*500e9d37SJohan Hovold              - qcom,msm8998-qmp-usb3-phy
200*500e9d37SJohan Hovold    then:
201*500e9d37SJohan Hovold      patternProperties:
202*500e9d37SJohan Hovold        "^phy@[0-9a-f]+$":
203*500e9d37SJohan Hovold          properties:
204*500e9d37SJohan Hovold            reg:
205*500e9d37SJohan Hovold              items:
206*500e9d37SJohan Hovold                - description: TX lane 1
207*500e9d37SJohan Hovold                - description: RX lane 1
208*500e9d37SJohan Hovold                - description: PCS
209*500e9d37SJohan Hovold                - description: TX lane 2
210*500e9d37SJohan Hovold                - description: RX lane 2
211*500e9d37SJohan Hovold
212*500e9d37SJohan Hovold  - if:
213*500e9d37SJohan Hovold      properties:
214*500e9d37SJohan Hovold        compatible:
215*500e9d37SJohan Hovold          contains:
216*500e9d37SJohan Hovold            enum:
217*500e9d37SJohan Hovold              - qcom,ipq6018-qmp-usb3-phy
218*500e9d37SJohan Hovold              - qcom,ipq8074-qmp-usb3-phy
219*500e9d37SJohan Hovold              - qcom,sdx55-qmp-usb3-uni-phy
220*500e9d37SJohan Hovold              - qcom,sdx65-qmp-usb3-uni-phy
221*500e9d37SJohan Hovold              - qcom,sm8150-qmp-usb3-uni-phy
222*500e9d37SJohan Hovold    then:
223*500e9d37SJohan Hovold      patternProperties:
224*500e9d37SJohan Hovold        "^phy@[0-9a-f]+$":
225*500e9d37SJohan Hovold          properties:
226*500e9d37SJohan Hovold            reg:
227*500e9d37SJohan Hovold              items:
228*500e9d37SJohan Hovold                - description: TX
229*500e9d37SJohan Hovold                - description: RX
230*500e9d37SJohan Hovold                - description: PCS
231*500e9d37SJohan Hovold                - description: PCS_MISC
232*500e9d37SJohan Hovold
233*500e9d37SJohan Hovold  - if:
234*500e9d37SJohan Hovold      properties:
235*500e9d37SJohan Hovold        compatible:
236*500e9d37SJohan Hovold          contains:
237*500e9d37SJohan Hovold            enum:
238*500e9d37SJohan Hovold              - qcom,msm8996-qmp-usb3-phy
239*500e9d37SJohan Hovold              - qcom,sm8250-qmp-usb3-uni-phy
240*500e9d37SJohan Hovold              - qcom,sm8350-qmp-usb3-uni-phy
241*500e9d37SJohan Hovold    then:
242*500e9d37SJohan Hovold      patternProperties:
243*500e9d37SJohan Hovold        "^phy@[0-9a-f]+$":
244*500e9d37SJohan Hovold          properties:
245*500e9d37SJohan Hovold            reg:
246*500e9d37SJohan Hovold              items:
247*500e9d37SJohan Hovold                - description: TX
248*500e9d37SJohan Hovold                - description: RX
249*500e9d37SJohan Hovold                - description: PCS
250*500e9d37SJohan Hovold
251*500e9d37SJohan Hovoldexamples:
252*500e9d37SJohan Hovold  - |
253*500e9d37SJohan Hovold    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
254*500e9d37SJohan Hovold    usb_2_qmpphy: phy-wrapper@88eb000 {
255*500e9d37SJohan Hovold        compatible = "qcom,sdm845-qmp-usb3-uni-phy";
256*500e9d37SJohan Hovold        reg = <0x088eb000 0x18c>;
257*500e9d37SJohan Hovold        #address-cells = <1>;
258*500e9d37SJohan Hovold        #size-cells = <1>;
259*500e9d37SJohan Hovold        ranges = <0x0 0x088eb000 0x2000>;
260*500e9d37SJohan Hovold
261*500e9d37SJohan Hovold        clocks = <&gcc GCC_USB3_SEC_PHY_AUX_CLK >,
262*500e9d37SJohan Hovold                 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
263*500e9d37SJohan Hovold                 <&gcc GCC_USB3_SEC_CLKREF_CLK>,
264*500e9d37SJohan Hovold                 <&gcc GCC_USB3_SEC_PHY_COM_AUX_CLK>;
265*500e9d37SJohan Hovold        clock-names = "aux", "cfg_ahb", "ref", "com_aux";
266*500e9d37SJohan Hovold
267*500e9d37SJohan Hovold        resets = <&gcc GCC_USB3PHY_PHY_SEC_BCR>,
268*500e9d37SJohan Hovold                 <&gcc GCC_USB3_PHY_SEC_BCR>;
269*500e9d37SJohan Hovold        reset-names = "phy", "common";
270*500e9d37SJohan Hovold
271*500e9d37SJohan Hovold        vdda-phy-supply = <&vdda_usb2_ss_1p2>;
272*500e9d37SJohan Hovold        vdda-pll-supply = <&vdda_usb2_ss_core>;
273*500e9d37SJohan Hovold
274*500e9d37SJohan Hovold        usb_2_ssphy: phy@200 {
275*500e9d37SJohan Hovold                reg = <0x200 0x128>,
276*500e9d37SJohan Hovold                      <0x400 0x1fc>,
277*500e9d37SJohan Hovold                      <0x800 0x218>,
278*500e9d37SJohan Hovold                      <0x600 0x70>;
279*500e9d37SJohan Hovold
280*500e9d37SJohan Hovold                clocks = <&gcc GCC_USB3_SEC_PHY_PIPE_CLK>;
281*500e9d37SJohan Hovold
282*500e9d37SJohan Hovold                #clock-cells = <0>;
283*500e9d37SJohan Hovold                clock-output-names = "usb3_uni_phy_pipe_clk_src";
284*500e9d37SJohan Hovold
285*500e9d37SJohan Hovold                #phy-cells = <0>;
286*500e9d37SJohan Hovold            };
287*500e9d37SJohan Hovold        };
288