]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - Bindings/phy/qcom-qmp-phy.txt
Import DTS files from Linux 5.7
[FreeBSD/FreeBSD.git] / Bindings / phy / qcom-qmp-phy.txt
1 Qualcomm QMP PHY controller
2 ===========================
3
4 QMP phy controller supports physical layer functionality for a number of
5 controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
6
7 Required properties:
8  - compatible: compatible list, contains:
9                "qcom,ipq8074-qmp-pcie-phy" for PCIe phy on IPQ8074
10                "qcom,msm8996-qmp-pcie-phy" for 14nm PCIe phy on msm8996,
11                "qcom,msm8996-qmp-ufs-phy" for 14nm UFS phy on msm8996,
12                "qcom,msm8996-qmp-usb3-phy" for 14nm USB3 phy on msm8996,
13                "qcom,msm8998-qmp-usb3-phy" for USB3 QMP V3 phy on msm8998,
14                "qcom,msm8998-qmp-ufs-phy" for UFS QMP phy on msm8998,
15                "qcom,msm8998-qmp-pcie-phy" for PCIe QMP phy on msm8998,
16                "qcom,sdm845-qhp-pcie-phy" for QHP PCIe phy on sdm845,
17                "qcom,sdm845-qmp-pcie-phy" for QMP PCIe phy on sdm845,
18                "qcom,sdm845-qmp-usb3-phy" for USB3 QMP V3 phy on sdm845,
19                "qcom,sdm845-qmp-usb3-uni-phy" for USB3 QMP V3 UNI phy on sdm845,
20                "qcom,sdm845-qmp-ufs-phy" for UFS QMP phy on sdm845,
21                "qcom,sm8150-qmp-ufs-phy" for UFS QMP phy on sm8150.
22
23 - reg:
24   - index 0: address and length of register set for PHY's common
25              serdes block.
26   - index 1: address and length of the DP_COM control block (for
27              "qcom,sdm845-qmp-usb3-phy" only).
28
29 - reg-names:
30   - For "qcom,sdm845-qmp-usb3-phy":
31     - Should be: "reg-base", "dp_com"
32   - For all others:
33     - The reg-names property shouldn't be defined.
34
35  - #address-cells: must be 1
36  - #size-cells: must be 1
37  - ranges: must be present
38
39  - clocks: a list of phandles and clock-specifier pairs,
40            one for each entry in clock-names.
41  - clock-names: "cfg_ahb" for phy config clock,
42                 "aux" for phy aux clock,
43                 "ref" for 19.2 MHz ref clk,
44                 "com_aux" for phy common block aux clock,
45                 "ref_aux" for phy reference aux clock,
46
47                 For "qcom,ipq8074-qmp-pcie-phy": no clocks are listed.
48                 For "qcom,msm8996-qmp-pcie-phy" must contain:
49                         "aux", "cfg_ahb", "ref".
50                 For "qcom,msm8996-qmp-ufs-phy" must contain:
51                         "ref".
52                 For "qcom,msm8996-qmp-usb3-phy" must contain:
53                         "aux", "cfg_ahb", "ref".
54                 For "qcom,msm8998-qmp-usb3-phy" must contain:
55                         "aux", "cfg_ahb", "ref".
56                 For "qcom,msm8998-qmp-ufs-phy" must contain:
57                         "ref", "ref_aux".
58                 For "qcom,msm8998-qmp-pcie-phy" must contain:
59                         "aux", "cfg_ahb", "ref".
60                 For "qcom,sdm845-qhp-pcie-phy" must contain:
61                         "aux", "cfg_ahb", "ref", "refgen".
62                 For "qcom,sdm845-qmp-pcie-phy" must contain:
63                         "aux", "cfg_ahb", "ref", "refgen".
64                 For "qcom,sdm845-qmp-usb3-phy" must contain:
65                         "aux", "cfg_ahb", "ref", "com_aux".
66                 For "qcom,sdm845-qmp-usb3-uni-phy" must contain:
67                         "aux", "cfg_ahb", "ref", "com_aux".
68                 For "qcom,sdm845-qmp-ufs-phy" must contain:
69                         "ref", "ref_aux".
70                 For "qcom,sm8150-qmp-ufs-phy" must contain:
71                         "ref", "ref_aux".
72
73  - resets: a list of phandles and reset controller specifier pairs,
74            one for each entry in reset-names.
75  - reset-names: "phy" for reset of phy block,
76                 "common" for phy common block reset,
77                 "cfg" for phy's ahb cfg block reset,
78                 "ufsphy" for the PHY reset in the UFS controller.
79
80                 For "qcom,ipq8074-qmp-pcie-phy" must contain:
81                         "phy", "common".
82                 For "qcom,msm8996-qmp-pcie-phy" must contain:
83                         "phy", "common", "cfg".
84                 For "qcom,msm8996-qmp-ufs-phy": must contain:
85                         "ufsphy".
86                 For "qcom,msm8996-qmp-usb3-phy" must contain
87                         "phy", "common".
88                 For "qcom,msm8998-qmp-usb3-phy" must contain
89                         "phy", "common".
90                 For "qcom,msm8998-qmp-ufs-phy": must contain:
91                         "ufsphy".
92                 For "qcom,msm8998-qmp-pcie-phy" must contain:
93                         "phy", "common".
94                 For "qcom,sdm845-qhp-pcie-phy" must contain:
95                         "phy".
96                 For "qcom,sdm845-qmp-pcie-phy" must contain:
97                         "phy".
98                 For "qcom,sdm845-qmp-usb3-phy" must contain:
99                         "phy", "common".
100                 For "qcom,sdm845-qmp-usb3-uni-phy" must contain:
101                         "phy", "common".
102                 For "qcom,sdm845-qmp-ufs-phy": must contain:
103                         "ufsphy".
104                 For "qcom,sm8150-qmp-ufs-phy": must contain:
105                         "ufsphy".
106
107  - vdda-phy-supply: Phandle to a regulator supply to PHY core block.
108  - vdda-pll-supply: Phandle to 1.8V regulator supply to PHY refclk pll block.
109
110 Optional properties:
111  - vddp-ref-clk-supply: Phandle to a regulator supply to any specific refclk
112                         pll block.
113
114 Required nodes:
115  - Each device node of QMP phy is required to have as many child nodes as
116    the number of lanes the PHY has.
117
118 Required properties for child nodes of PCIe PHYs (one child per lane):
119  - reg: list of offset and length pairs of register sets for PHY blocks -
120         tx, rx, pcs, and pcs_misc (optional).
121  - #phy-cells: must be 0
122
123 Required properties for a single "lanes" child node of non-PCIe PHYs:
124  - reg: list of offset and length pairs of register sets for PHY blocks
125         For 1-lane devices:
126                 tx, rx, pcs, and (optionally) pcs_misc
127         For 2-lane devices:
128                 tx0, rx0, pcs, tx1, rx1, and (optionally) pcs_misc
129  - #phy-cells: must be 0
130
131 Required properties for child node of PCIe and USB3 qmp phys:
132  - clocks: a list of phandles and clock-specifier pairs,
133            one for each entry in clock-names.
134  - clock-names: Must contain following:
135                  "pipe<lane-number>" for pipe clock specific to each lane.
136  - clock-output-names: Name of the PHY clock that will be the parent for
137                        the above pipe clock.
138         For "qcom,ipq8074-qmp-pcie-phy":
139                 - "pcie20_phy0_pipe_clk"        Pipe Clock parent
140                         (or)
141                   "pcie20_phy1_pipe_clk"
142  - #clock-cells: must be 0
143     - Phy pll outputs pipe clocks for pipe based PHYs. These clocks are then
144       gate-controlled by the gcc.
145
146 Required properties for child node of PHYs with lane reset, AKA:
147         "qcom,msm8996-qmp-pcie-phy"
148  - resets: a list of phandles and reset controller specifier pairs,
149            one for each entry in reset-names.
150  - reset-names: Must contain following:
151                  "lane<lane-number>" for reset specific to each lane.
152
153 Example:
154         phy@34000 {
155                 compatible = "qcom,msm8996-qmp-pcie-phy";
156                 reg = <0x34000 0x488>;
157                 #address-cells = <1>;
158                 #size-cells = <1>;
159                 ranges;
160
161                 clocks = <&gcc GCC_PCIE_PHY_AUX_CLK>,
162                         <&gcc GCC_PCIE_PHY_CFG_AHB_CLK>,
163                         <&gcc GCC_PCIE_CLKREF_CLK>;
164                 clock-names = "aux", "cfg_ahb", "ref";
165
166                 vdda-phy-supply = <&pm8994_l28>;
167                 vdda-pll-supply = <&pm8994_l12>;
168
169                 resets = <&gcc GCC_PCIE_PHY_BCR>,
170                         <&gcc GCC_PCIE_PHY_COM_BCR>,
171                         <&gcc GCC_PCIE_PHY_COM_NOCSR_BCR>;
172                 reset-names = "phy", "common", "cfg";
173
174                 pciephy_0: lane@35000 {
175                         reg = <0x35000 0x130>,
176                                 <0x35200 0x200>,
177                                 <0x35400 0x1dc>;
178                         #clock-cells = <0>;
179                         #phy-cells = <0>;
180
181                         clocks = <&gcc GCC_PCIE_0_PIPE_CLK>;
182                         clock-names = "pipe0";
183                         clock-output-names = "pcie_0_pipe_clk_src";
184                         resets = <&gcc GCC_PCIE_0_PHY_BCR>;
185                         reset-names = "lane0";
186                 };
187
188                 pciephy_1: lane@36000 {
189                 ...
190                 ...
191         };
192
193         phy@88eb000 {
194                 compatible = "qcom,sdm845-qmp-usb3-uni-phy";
195                 reg = <0x88eb000 0x18c>;
196                 #address-cells = <1>;
197                 #size-cells = <1>;
198                 ranges;
199
200                 clocks = <&gcc GCC_USB3_SEC_PHY_AUX_CLK>,
201                          <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
202                          <&gcc GCC_USB3_SEC_CLKREF_CLK>,
203                          <&gcc GCC_USB3_SEC_PHY_COM_AUX_CLK>;
204                 clock-names = "aux", "cfg_ahb", "ref", "com_aux";
205
206                 resets = <&gcc GCC_USB3PHY_PHY_SEC_BCR>,
207                          <&gcc GCC_USB3_PHY_SEC_BCR>;
208                 reset-names = "phy", "common";
209
210                 lane@88eb200 {
211                         reg = <0x88eb200 0x128>,
212                               <0x88eb400 0x1fc>,
213                               <0x88eb800 0x218>,
214                               <0x88eb600 0x70>;
215                         #clock-cells = <0>;
216                         #phy-cells = <0>;
217                         clocks = <&gcc GCC_USB3_SEC_PHY_PIPE_CLK>;
218                         clock-names = "pipe0";
219                         clock-output-names = "usb3_uni_phy_pipe_clk_src";
220                 };
221         };
222
223         phy@1d87000 {
224                 compatible = "qcom,sdm845-qmp-ufs-phy";
225                 reg = <0x1d87000 0x18c>;
226                 #address-cells = <1>;
227                 #size-cells = <1>;
228                 ranges;
229                 clock-names = "ref",
230                               "ref_aux";
231                 clocks = <&gcc GCC_UFS_MEM_CLKREF_CLK>,
232                          <&gcc GCC_UFS_PHY_PHY_AUX_CLK>;
233
234                 lanes@1d87400 {
235                         reg = <0x1d87400 0x108>,
236                               <0x1d87600 0x1e0>,
237                               <0x1d87c00 0x1dc>,
238                               <0x1d87800 0x108>,
239                               <0x1d87a00 0x1e0>;
240                         #phy-cells = <0>;
241                 };
242         };