Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2# Copyright (c) 2020 MediaTek
3%YAML 1.2
4---
5$id: http://devicetree.org/schemas/phy/mediatek,tphy.yaml#
6$schema: http://devicetree.org/meta-schemas/core.yaml#
7
8title: MediaTek T-PHY Controller Device Tree Bindings
9
10maintainers:
11 - Chunfeng Yun <chunfeng.yun@mediatek.com>
12
13description: |
14 The T-PHY controller supports physical layer functionality for a number of
15 controllers on MediaTek SoCs, includes USB2.0, USB3.0, PCIe and SATA.
16
17 Layout differences of banks between T-PHY V1 (mt8173/mt2701) and
18 T-PHY V2 (mt2712) when works on USB mode:
19 -----------------------------------
20 Version 1:
21 port offset bank
22 shared 0x0000 SPLLC
23 0x0100 FMREG
24 u2 port0 0x0800 U2PHY_COM
25 u3 port0 0x0900 U3PHYD
26 0x0a00 U3PHYD_BANK2
27 0x0b00 U3PHYA
28 0x0c00 U3PHYA_DA
29 u2 port1 0x1000 U2PHY_COM
30 u3 port1 0x1100 U3PHYD
31 0x1200 U3PHYD_BANK2
32 0x1300 U3PHYA
33 0x1400 U3PHYA_DA
34 u2 port2 0x1800 U2PHY_COM
35 ...
36
37 Version 2:
38 port offset bank
39 u2 port0 0x0000 MISC
40 0x0100 FMREG
41 0x0300 U2PHY_COM
42 u3 port0 0x0700 SPLLC
43 0x0800 CHIP
44 0x0900 U3PHYD
45 0x0a00 U3PHYD_BANK2
46 0x0b00 U3PHYA
47 0x0c00 U3PHYA_DA
48 u2 port1 0x1000 MISC
49 0x1100 FMREG
50 0x1300 U2PHY_COM
51 u3 port1 0x1700 SPLLC
52 0x1800 CHIP
53 0x1900 U3PHYD
54 0x1a00 U3PHYD_BANK2
55 0x1b00 U3PHYA
56 0x1c00 U3PHYA_DA
57 u2 port2 0x2000 MISC
58 ...
59
60 SPLLC shared by u3 ports and FMREG shared by u2 ports on V1 are put back
61 into each port; a new bank MISC for u2 ports and CHIP for u3 ports are
62 added on V2.
63
64properties:
65 $nodename:
66 pattern: "^t-phy@[0-9a-f]+$"
67
68 compatible:
69 oneOf:
70 - items:
71 - enum:
72 - mediatek,mt2701-tphy
73 - mediatek,mt7623-tphy
74 - mediatek,mt7622-tphy
75 - mediatek,mt8516-tphy
76 - const: mediatek,generic-tphy-v1
77 - items:
78 - enum:
79 - mediatek,mt2712-tphy
80 - mediatek,mt7629-tphy
81 - mediatek,mt8183-tphy
82 - const: mediatek,generic-tphy-v2
83 - const: mediatek,mt2701-u3phy
84 deprecated: true
85 - const: mediatek,mt2712-u3phy
86 deprecated: true
87 - const: mediatek,mt8173-u3phy
88
89 reg:
90 description:
91 Register shared by multiple ports, exclude port's private register.
92 It is needed for T-PHY V1, such as mt2701 and mt8173, but not for
93 T-PHY V2, such as mt2712.
94 maxItems: 1
95
96 "#address-cells":
97 enum: [1, 2]
98
99 "#size-cells":
100 enum: [1, 2]
101
102 # Used with non-empty value if optional 'reg' is not provided.
103 # The format of the value is an arbitrary number of triplets of
104 # (child-bus-address, parent-bus-address, length).
105 ranges: true
106
107 mediatek,src-ref-clk-mhz:
108 description:
109 Frequency of reference clock for slew rate calibrate
110 default: 26
111
112 mediatek,src-coef:
113 description:
114 Coefficient for slew rate calibrate, depends on SoC process
115 $ref: /schemas/types.yaml#/definitions/uint32
116 default: 28
117
118# Required child node:
119patternProperties:
120 "^usb-phy@[0-9a-f]+$":
121 type: object
122 description:
123 A sub-node is required for each port the controller provides.
124 Address range information including the usual 'reg' property
125 is used inside these nodes to describe the controller's topology.
126
127 properties:
128 reg:
129 maxItems: 1
130
131 clocks:
132 minItems: 1
133 maxItems: 2
134 items:
135 - description: Reference clock, (HS is 48Mhz, SS/P is 24~27Mhz)
136 - description: Reference clock of analog phy
137 description:
138 Uses both clocks if the clock of analog and digital phys are
139 separated, otherwise uses "ref" clock only if needed.
140
141 clock-names:
142 minItems: 1
143 maxItems: 2
144 items:
145 - const: ref
146 - const: da_ref
147
148 "#phy-cells":
149 const: 1
150 description: |
151 The cells contain the following arguments.
152
153 - description: The PHY type
154 enum:
155 - PHY_TYPE_USB2
156 - PHY_TYPE_USB3
157 - PHY_TYPE_PCIE
158 - PHY_TYPE_SATA
159
160 # The following optional vendor properties are only for debug or HQA test
161 mediatek,eye-src:
162 description:
163 The value of slew rate calibrate (U2 phy)
164 $ref: /schemas/types.yaml#/definitions/uint32
165 minimum: 1
166 maximum: 7
167
168 mediatek,eye-vrt:
169 description:
170 The selection of VRT reference voltage (U2 phy)
171 $ref: /schemas/types.yaml#/definitions/uint32
172 minimum: 1
173 maximum: 7
174
175 mediatek,eye-term:
176 description:
177 The selection of HS_TX TERM reference voltage (U2 phy)
178 $ref: /schemas/types.yaml#/definitions/uint32
179 minimum: 1
180 maximum: 7
181
182 mediatek,intr:
183 description:
184 The selection of internal resistor (U2 phy)
185 $ref: /schemas/types.yaml#/definitions/uint32
186 minimum: 1
187 maximum: 31
188
189 mediatek,discth:
190 description:
191 The selection of disconnect threshold (U2 phy)
192 $ref: /schemas/types.yaml#/definitions/uint32
193 minimum: 1
194 maximum: 15
195
196 mediatek,bc12:
197 description:
198 Specify the flag to enable BC1.2 if support it
199 type: boolean
200
201 required:
202 - reg
203 - "#phy-cells"
204
205 additionalProperties: false
206
207required:
208 - compatible
209 - "#address-cells"
210 - "#size-cells"
211 - ranges
212
213additionalProperties: false
214
215examples:
216 - |
217 #include <dt-bindings/clock/mt8173-clk.h>
218 #include <dt-bindings/interrupt-controller/arm-gic.h>
219 #include <dt-bindings/interrupt-controller/irq.h>
220 #include <dt-bindings/phy/phy.h>
221 usb@11271000 {
222 compatible = "mediatek,mt8173-mtu3", "mediatek,mtu3";
223 reg = <0x11271000 0x3000>, <0x11280700 0x0100>;
224 reg-names = "mac", "ippc";
225 phys = <&u2port0 PHY_TYPE_USB2>,
226 <&u3port0 PHY_TYPE_USB3>,
227 <&u2port1 PHY_TYPE_USB2>;
228 interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>;
229 clocks = <&topckgen CLK_TOP_USB30_SEL>;
230 clock-names = "sys_ck";
231 };
232
233 t-phy@11290000 {
234 compatible = "mediatek,mt8173-u3phy";
235 reg = <0x11290000 0x800>;
236 #address-cells = <1>;
237 #size-cells = <1>;
238 ranges;
239
240 u2port0: usb-phy@11290800 {
241 reg = <0x11290800 0x100>;
242 clocks = <&apmixedsys CLK_APMIXED_REF2USB_TX>, <&clk48m>;
243 clock-names = "ref", "da_ref";
244 #phy-cells = <1>;
245 };
246
247 u3port0: usb-phy@11290900 {
248 reg = <0x11290900 0x700>;
249 clocks = <&clk26m>;
250 clock-names = "ref";
251 #phy-cells = <1>;
252 };
253
254 u2port1: usb-phy@11291000 {
255 reg = <0x11291000 0x100>;
256 #phy-cells = <1>;
257 };
258 };
259
260...