xref: /freebsd/sys/contrib/device-tree/Bindings/phy/qcom,qmp-ufs-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-ufs-phy.yaml#
5*7ef62cebSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*7ef62cebSEmmanuel Vadot
7*7ef62cebSEmmanuel Vadottitle: Qualcomm QMP PHY controller (UFS)
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,msm8996-qmp-ufs-phy
20*7ef62cebSEmmanuel Vadot      - qcom,msm8998-qmp-ufs-phy
21*7ef62cebSEmmanuel Vadot      - qcom,sc8180x-qmp-ufs-phy
22*7ef62cebSEmmanuel Vadot      - qcom,sc8280xp-qmp-ufs-phy
23*7ef62cebSEmmanuel Vadot      - qcom,sdm845-qmp-ufs-phy
24*7ef62cebSEmmanuel Vadot      - qcom,sm6115-qmp-ufs-phy
25*7ef62cebSEmmanuel Vadot      - qcom,sm6350-qmp-ufs-phy
26*7ef62cebSEmmanuel Vadot      - qcom,sm8150-qmp-ufs-phy
27*7ef62cebSEmmanuel Vadot      - qcom,sm8250-qmp-ufs-phy
28*7ef62cebSEmmanuel Vadot      - qcom,sm8350-qmp-ufs-phy
29*7ef62cebSEmmanuel Vadot      - qcom,sm8450-qmp-ufs-phy
30*7ef62cebSEmmanuel Vadot
31*7ef62cebSEmmanuel Vadot  reg:
32*7ef62cebSEmmanuel Vadot    items:
33*7ef62cebSEmmanuel Vadot      - description: serdes
34*7ef62cebSEmmanuel Vadot
35*7ef62cebSEmmanuel Vadot  "#address-cells":
36*7ef62cebSEmmanuel Vadot    enum: [ 1, 2 ]
37*7ef62cebSEmmanuel Vadot
38*7ef62cebSEmmanuel Vadot  "#size-cells":
39*7ef62cebSEmmanuel Vadot    enum: [ 1, 2 ]
40*7ef62cebSEmmanuel Vadot
41*7ef62cebSEmmanuel Vadot  ranges: true
42*7ef62cebSEmmanuel Vadot
43*7ef62cebSEmmanuel Vadot  clocks:
44*7ef62cebSEmmanuel Vadot    minItems: 1
45*7ef62cebSEmmanuel Vadot    maxItems: 3
46*7ef62cebSEmmanuel Vadot
47*7ef62cebSEmmanuel Vadot  clock-names:
48*7ef62cebSEmmanuel Vadot    minItems: 1
49*7ef62cebSEmmanuel Vadot    maxItems: 3
50*7ef62cebSEmmanuel Vadot
51*7ef62cebSEmmanuel Vadot  power-domains:
52*7ef62cebSEmmanuel Vadot    maxItems: 1
53*7ef62cebSEmmanuel Vadot
54*7ef62cebSEmmanuel Vadot  resets:
55*7ef62cebSEmmanuel Vadot    maxItems: 1
56*7ef62cebSEmmanuel Vadot
57*7ef62cebSEmmanuel Vadot  reset-names:
58*7ef62cebSEmmanuel Vadot    items:
59*7ef62cebSEmmanuel Vadot      - const: ufsphy
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      "#phy-cells":
77*7ef62cebSEmmanuel Vadot        const: 0
78*7ef62cebSEmmanuel Vadot
79*7ef62cebSEmmanuel Vadot    required:
80*7ef62cebSEmmanuel Vadot      - reg
81*7ef62cebSEmmanuel Vadot      - "#phy-cells"
82*7ef62cebSEmmanuel Vadot
83*7ef62cebSEmmanuel Vadot    additionalProperties: false
84*7ef62cebSEmmanuel Vadot
85*7ef62cebSEmmanuel Vadotrequired:
86*7ef62cebSEmmanuel Vadot  - compatible
87*7ef62cebSEmmanuel Vadot  - reg
88*7ef62cebSEmmanuel Vadot  - "#address-cells"
89*7ef62cebSEmmanuel Vadot  - "#size-cells"
90*7ef62cebSEmmanuel Vadot  - ranges
91*7ef62cebSEmmanuel Vadot  - clocks
92*7ef62cebSEmmanuel Vadot  - clock-names
93*7ef62cebSEmmanuel Vadot  - resets
94*7ef62cebSEmmanuel Vadot  - reset-names
95*7ef62cebSEmmanuel Vadot  - vdda-phy-supply
96*7ef62cebSEmmanuel Vadot  - vdda-pll-supply
97*7ef62cebSEmmanuel Vadot
98*7ef62cebSEmmanuel VadotadditionalProperties: false
99*7ef62cebSEmmanuel Vadot
100*7ef62cebSEmmanuel VadotallOf:
101*7ef62cebSEmmanuel Vadot  - if:
102*7ef62cebSEmmanuel Vadot      properties:
103*7ef62cebSEmmanuel Vadot        compatible:
104*7ef62cebSEmmanuel Vadot          contains:
105*7ef62cebSEmmanuel Vadot            enum:
106*7ef62cebSEmmanuel Vadot              - qcom,msm8996-qmp-ufs-phy
107*7ef62cebSEmmanuel Vadot    then:
108*7ef62cebSEmmanuel Vadot      properties:
109*7ef62cebSEmmanuel Vadot        clocks:
110*7ef62cebSEmmanuel Vadot          maxItems: 1
111*7ef62cebSEmmanuel Vadot        clock-names:
112*7ef62cebSEmmanuel Vadot          items:
113*7ef62cebSEmmanuel Vadot            - const: ref
114*7ef62cebSEmmanuel Vadot
115*7ef62cebSEmmanuel Vadot  - if:
116*7ef62cebSEmmanuel Vadot      properties:
117*7ef62cebSEmmanuel Vadot        compatible:
118*7ef62cebSEmmanuel Vadot          contains:
119*7ef62cebSEmmanuel Vadot            enum:
120*7ef62cebSEmmanuel Vadot              - qcom,msm8998-qmp-ufs-phy
121*7ef62cebSEmmanuel Vadot              - qcom,sc8180x-qmp-ufs-phy
122*7ef62cebSEmmanuel Vadot              - qcom,sc8280xp-qmp-ufs-phy
123*7ef62cebSEmmanuel Vadot              - qcom,sdm845-qmp-ufs-phy
124*7ef62cebSEmmanuel Vadot              - qcom,sm6115-qmp-ufs-phy
125*7ef62cebSEmmanuel Vadot              - qcom,sm6350-qmp-ufs-phy
126*7ef62cebSEmmanuel Vadot              - qcom,sm8150-qmp-ufs-phy
127*7ef62cebSEmmanuel Vadot              - qcom,sm8250-qmp-ufs-phy
128*7ef62cebSEmmanuel Vadot    then:
129*7ef62cebSEmmanuel Vadot      properties:
130*7ef62cebSEmmanuel Vadot        clocks:
131*7ef62cebSEmmanuel Vadot          maxItems: 2
132*7ef62cebSEmmanuel Vadot        clock-names:
133*7ef62cebSEmmanuel Vadot          items:
134*7ef62cebSEmmanuel Vadot            - const: ref
135*7ef62cebSEmmanuel Vadot            - const: ref_aux
136*7ef62cebSEmmanuel Vadot
137*7ef62cebSEmmanuel Vadot  - if:
138*7ef62cebSEmmanuel Vadot      properties:
139*7ef62cebSEmmanuel Vadot        compatible:
140*7ef62cebSEmmanuel Vadot          contains:
141*7ef62cebSEmmanuel Vadot            enum:
142*7ef62cebSEmmanuel Vadot              - qcom,sm8450-qmp-ufs-phy
143*7ef62cebSEmmanuel Vadot    then:
144*7ef62cebSEmmanuel Vadot      properties:
145*7ef62cebSEmmanuel Vadot        clocks:
146*7ef62cebSEmmanuel Vadot          maxItems: 3
147*7ef62cebSEmmanuel Vadot        clock-names:
148*7ef62cebSEmmanuel Vadot          items:
149*7ef62cebSEmmanuel Vadot            - const: ref
150*7ef62cebSEmmanuel Vadot            - const: ref_aux
151*7ef62cebSEmmanuel Vadot            - const: qref
152*7ef62cebSEmmanuel Vadot
153*7ef62cebSEmmanuel Vadot  - if:
154*7ef62cebSEmmanuel Vadot      properties:
155*7ef62cebSEmmanuel Vadot        compatible:
156*7ef62cebSEmmanuel Vadot          contains:
157*7ef62cebSEmmanuel Vadot            enum:
158*7ef62cebSEmmanuel Vadot              - qcom,msm8998-qmp-ufs-phy
159*7ef62cebSEmmanuel Vadot              - qcom,sc8280xp-qmp-ufs-phy
160*7ef62cebSEmmanuel Vadot              - qcom,sdm845-qmp-ufs-phy
161*7ef62cebSEmmanuel Vadot              - qcom,sm6350-qmp-ufs-phy
162*7ef62cebSEmmanuel Vadot              - qcom,sm8150-qmp-ufs-phy
163*7ef62cebSEmmanuel Vadot              - qcom,sm8250-qmp-ufs-phy
164*7ef62cebSEmmanuel Vadot              - qcom,sm8350-qmp-ufs-phy
165*7ef62cebSEmmanuel Vadot              - qcom,sm8450-qmp-ufs-phy
166*7ef62cebSEmmanuel Vadot    then:
167*7ef62cebSEmmanuel Vadot      patternProperties:
168*7ef62cebSEmmanuel Vadot        "^phy@[0-9a-f]+$":
169*7ef62cebSEmmanuel Vadot          properties:
170*7ef62cebSEmmanuel Vadot            reg:
171*7ef62cebSEmmanuel Vadot              items:
172*7ef62cebSEmmanuel Vadot                - description: TX lane 1
173*7ef62cebSEmmanuel Vadot                - description: RX lane 1
174*7ef62cebSEmmanuel Vadot                - description: PCS
175*7ef62cebSEmmanuel Vadot                - description: TX lane 2
176*7ef62cebSEmmanuel Vadot                - description: RX lane 2
177*7ef62cebSEmmanuel Vadot
178*7ef62cebSEmmanuel Vadot  - if:
179*7ef62cebSEmmanuel Vadot      properties:
180*7ef62cebSEmmanuel Vadot        compatible:
181*7ef62cebSEmmanuel Vadot          contains:
182*7ef62cebSEmmanuel Vadot            enum:
183*7ef62cebSEmmanuel Vadot              - qcom,sc8180x-qmp-ufs-phy
184*7ef62cebSEmmanuel Vadot    then:
185*7ef62cebSEmmanuel Vadot      patternProperties:
186*7ef62cebSEmmanuel Vadot        "^phy@[0-9a-f]+$":
187*7ef62cebSEmmanuel Vadot          properties:
188*7ef62cebSEmmanuel Vadot            reg:
189*7ef62cebSEmmanuel Vadot              items:
190*7ef62cebSEmmanuel Vadot                - description: TX
191*7ef62cebSEmmanuel Vadot                - description: RX
192*7ef62cebSEmmanuel Vadot                - description: PCS
193*7ef62cebSEmmanuel Vadot                - description: PCS_MISC
194*7ef62cebSEmmanuel Vadot
195*7ef62cebSEmmanuel Vadot  - if:
196*7ef62cebSEmmanuel Vadot      properties:
197*7ef62cebSEmmanuel Vadot        compatible:
198*7ef62cebSEmmanuel Vadot          contains:
199*7ef62cebSEmmanuel Vadot            enum:
200*7ef62cebSEmmanuel Vadot              - qcom,msm8996-qmp-ufs-phy
201*7ef62cebSEmmanuel Vadot              - qcom,sm6115-qmp-ufs-phy
202*7ef62cebSEmmanuel Vadot    then:
203*7ef62cebSEmmanuel Vadot      patternProperties:
204*7ef62cebSEmmanuel Vadot        "^phy@[0-9a-f]+$":
205*7ef62cebSEmmanuel Vadot          properties:
206*7ef62cebSEmmanuel Vadot            reg:
207*7ef62cebSEmmanuel Vadot              items:
208*7ef62cebSEmmanuel Vadot                - description: TX
209*7ef62cebSEmmanuel Vadot                - description: RX
210*7ef62cebSEmmanuel Vadot                - description: PCS
211*7ef62cebSEmmanuel Vadot
212*7ef62cebSEmmanuel Vadotexamples:
213*7ef62cebSEmmanuel Vadot  - |
214*7ef62cebSEmmanuel Vadot    #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
215*7ef62cebSEmmanuel Vadot    #include <dt-bindings/clock/qcom,rpmh.h>
216*7ef62cebSEmmanuel Vadot    phy-wrapper@1d87000 {
217*7ef62cebSEmmanuel Vadot        compatible = "qcom,sc8280xp-qmp-ufs-phy";
218*7ef62cebSEmmanuel Vadot        reg = <0x01d87000 0xe10>;
219*7ef62cebSEmmanuel Vadot        #address-cells = <1>;
220*7ef62cebSEmmanuel Vadot        #size-cells = <1>;
221*7ef62cebSEmmanuel Vadot        ranges = <0x0 0x01d87000 0x1000>;
222*7ef62cebSEmmanuel Vadot
223*7ef62cebSEmmanuel Vadot        clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GCC_UFS_PHY_PHY_AUX_CLK>;
224*7ef62cebSEmmanuel Vadot        clock-names = "ref", "ref_aux";
225*7ef62cebSEmmanuel Vadot
226*7ef62cebSEmmanuel Vadot        resets = <&ufs_mem_hc 0>;
227*7ef62cebSEmmanuel Vadot        reset-names = "ufsphy";
228*7ef62cebSEmmanuel Vadot
229*7ef62cebSEmmanuel Vadot        vdda-phy-supply = <&vreg_l6b>;
230*7ef62cebSEmmanuel Vadot        vdda-pll-supply = <&vreg_l3b>;
231*7ef62cebSEmmanuel Vadot
232*7ef62cebSEmmanuel Vadot        phy@400 {
233*7ef62cebSEmmanuel Vadot            reg = <0x400 0x108>,
234*7ef62cebSEmmanuel Vadot                  <0x600 0x1e0>,
235*7ef62cebSEmmanuel Vadot                  <0xc00 0x1dc>,
236*7ef62cebSEmmanuel Vadot                  <0x800 0x108>,
237*7ef62cebSEmmanuel Vadot                  <0xa00 0x1e0>;
238*7ef62cebSEmmanuel Vadot            #phy-cells = <0>;
239*7ef62cebSEmmanuel Vadot        };
240*7ef62cebSEmmanuel Vadot    };
241