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