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