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