xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunDevice tree binding for NVIDIA Tegra XUSB pad controller
2*4882a593Smuzhiyun========================================================
3*4882a593Smuzhiyun
4*4882a593SmuzhiyunThe Tegra XUSB pad controller manages a set of I/O lanes (with differential
5*4882a593Smuzhiyunsignals) which connect directly to pins/pads on the SoC package. Each lane
6*4882a593Smuzhiyunis controlled by a HW block referred to as a "pad" in the Tegra hardware
7*4882a593Smuzhiyundocumentation. Each such "pad" may control either one or multiple lanes,
8*4882a593Smuzhiyunand thus contains any logic common to all its lanes. Each lane can be
9*4882a593Smuzhiyunseparately configured and powered up.
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunSome of the lanes are high-speed lanes, which can be used for PCIe, SATA or
12*4882a593Smuzhiyunsuper-speed USB. Other lanes are for various types of low-speed, full-speed
13*4882a593Smuzhiyunor high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller
14*4882a593Smuzhiyuncontains a software-configurable mux that sits between the I/O controller
15*4882a593Smuzhiyunports (e.g. PCIe) and the lanes.
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunIn addition to per-lane configuration, USB 3.0 ports may require additional
18*4882a593Smuzhiyunsettings on a per-board basis.
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunPads will be represented as children of the top-level XUSB pad controller
21*4882a593Smuzhiyundevice tree node. Each lane exposed by the pad will be represented by its
22*4882a593Smuzhiyunown subnode and can be referenced by users of the lane using the standard
23*4882a593SmuzhiyunPHY bindings, as described by the phy-bindings.txt file in this directory.
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunThe Tegra hardware documentation refers to the connection between the XUSB
26*4882a593Smuzhiyunpad controller and the XUSB controller as "ports". This is confusing since
27*4882a593Smuzhiyun"port" is typically used to denote the physical USB receptacle. The device
28*4882a593Smuzhiyuntree binding in this document uses the term "port" to refer to the logical
29*4882a593Smuzhiyunabstraction of the signals that are routed to a USB receptacle (i.e. a PHY
30*4882a593Smuzhiyunfor the USB signal, the VBUS power supply, the USB 2.0 companion port for
31*4882a593SmuzhiyunUSB 3.0 receptacles, ...).
32*4882a593Smuzhiyun
33*4882a593SmuzhiyunRequired properties:
34*4882a593Smuzhiyun--------------------
35*4882a593Smuzhiyun- compatible: Must be:
36*4882a593Smuzhiyun  - Tegra124: "nvidia,tegra124-xusb-padctl"
37*4882a593Smuzhiyun  - Tegra132: "nvidia,tegra132-xusb-padctl", "nvidia,tegra124-xusb-padctl"
38*4882a593Smuzhiyun  - Tegra210: "nvidia,tegra210-xusb-padctl"
39*4882a593Smuzhiyun  - Tegra186: "nvidia,tegra186-xusb-padctl"
40*4882a593Smuzhiyun  - Tegra194: "nvidia,tegra194-xusb-padctl"
41*4882a593Smuzhiyun- reg: Physical base address and length of the controller's registers.
42*4882a593Smuzhiyun- resets: Must contain an entry for each entry in reset-names.
43*4882a593Smuzhiyun- reset-names: Must include the following entries:
44*4882a593Smuzhiyun  - "padctl"
45*4882a593Smuzhiyun
46*4882a593SmuzhiyunFor Tegra124:
47*4882a593Smuzhiyun- avdd-pll-utmip-supply: UTMI PLL power supply. Must supply 1.8 V.
48*4882a593Smuzhiyun- avdd-pll-erefe-supply: PLLE reference PLL power supply. Must supply 1.05 V.
49*4882a593Smuzhiyun- avdd-pex-pll-supply: PCIe/USB3 PLL power supply. Must supply 1.05 V.
50*4882a593Smuzhiyun- hvdd-pex-pll-e-supply: High-voltage PLLE power supply. Must supply 3.3 V.
51*4882a593Smuzhiyun
52*4882a593SmuzhiyunFor Tegra210:
53*4882a593Smuzhiyun- avdd-pll-utmip-supply: UTMI PLL power supply. Must supply 1.8 V.
54*4882a593Smuzhiyun- avdd-pll-uerefe-supply: PLLE reference PLL power supply. Must supply 1.05 V.
55*4882a593Smuzhiyun- dvdd-pex-pll-supply: PCIe/USB3 PLL power supply. Must supply 1.05 V.
56*4882a593Smuzhiyun- hvdd-pex-pll-e-supply: High-voltage PLLE power supply. Must supply 1.8 V.
57*4882a593Smuzhiyun
58*4882a593SmuzhiyunFor Tegra186:
59*4882a593Smuzhiyun- avdd-pll-erefeut-supply: UPHY brick and reference clock as well as UTMI PHY
60*4882a593Smuzhiyun  power supply. Must supply 1.8 V.
61*4882a593Smuzhiyun- avdd-usb-supply: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must supply
62*4882a593Smuzhiyun  3.3 V.
63*4882a593Smuzhiyun- vclamp-usb-supply: Bias rail for USB pad. Must supply 1.8 V.
64*4882a593Smuzhiyun- vddio-hsic-supply: HSIC PHY power supply. Must supply 1.2 V.
65*4882a593Smuzhiyun
66*4882a593SmuzhiyunFor Tegra194:
67*4882a593Smuzhiyun- avdd-usb-supply: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must supply
68*4882a593Smuzhiyun  3.3 V.
69*4882a593Smuzhiyun- vclamp-usb-supply: Bias rail for USB pad. Must supply 1.8 V.
70*4882a593Smuzhiyun
71*4882a593SmuzhiyunPad nodes:
72*4882a593Smuzhiyun==========
73*4882a593Smuzhiyun
74*4882a593SmuzhiyunA required child node named "pads" contains a list of subnodes, one for each
75*4882a593Smuzhiyunof the pads exposed by the XUSB pad controller. Each pad may need additional
76*4882a593Smuzhiyunresources that can be referenced in its pad node.
77*4882a593Smuzhiyun
78*4882a593SmuzhiyunThe "status" property is used to enable or disable the use of a pad. If set
79*4882a593Smuzhiyunto "disabled", the pad will not be used on the given board. In order to use
80*4882a593Smuzhiyunthe pad and any of its lanes, this property must be set to "okay".
81*4882a593Smuzhiyun
82*4882a593SmuzhiyunFor Tegra124 and Tegra132, the following pads exist: usb2, ulpi, hsic, pcie
83*4882a593Smuzhiyunand sata. No extra resources are required for operation of these pads.
84*4882a593Smuzhiyun
85*4882a593SmuzhiyunFor Tegra210, the following pads exist: usb2, hsic, pcie and sata. Below is
86*4882a593Smuzhiyuna description of the properties of each pad.
87*4882a593Smuzhiyun
88*4882a593SmuzhiyunUTMI pad:
89*4882a593Smuzhiyun---------
90*4882a593Smuzhiyun
91*4882a593SmuzhiyunRequired properties:
92*4882a593Smuzhiyun- clocks: Must contain an entry for each entry in clock-names.
93*4882a593Smuzhiyun- clock-names: Must contain the following entries:
94*4882a593Smuzhiyun  - "trk": phandle and specifier referring to the USB2 tracking clock
95*4882a593Smuzhiyun
96*4882a593SmuzhiyunHSIC pad:
97*4882a593Smuzhiyun---------
98*4882a593Smuzhiyun
99*4882a593SmuzhiyunRequired properties:
100*4882a593Smuzhiyun- clocks: Must contain an entry for each entry in clock-names.
101*4882a593Smuzhiyun- clock-names: Must contain the following entries:
102*4882a593Smuzhiyun  - "trk": phandle and specifier referring to the HSIC tracking clock
103*4882a593Smuzhiyun
104*4882a593SmuzhiyunPCIe pad:
105*4882a593Smuzhiyun---------
106*4882a593Smuzhiyun
107*4882a593SmuzhiyunRequired properties:
108*4882a593Smuzhiyun- clocks: Must contain an entry for each entry in clock-names.
109*4882a593Smuzhiyun- clock-names: Must contain the following entries:
110*4882a593Smuzhiyun  - "pll": phandle and specifier referring to the PLLE
111*4882a593Smuzhiyun- resets: Must contain an entry for each entry in reset-names.
112*4882a593Smuzhiyun- reset-names: Must contain the following entries:
113*4882a593Smuzhiyun  - "phy": reset for the PCIe UPHY block
114*4882a593Smuzhiyun
115*4882a593SmuzhiyunSATA pad:
116*4882a593Smuzhiyun---------
117*4882a593Smuzhiyun
118*4882a593SmuzhiyunRequired properties:
119*4882a593Smuzhiyun- resets: Must contain an entry for each entry in reset-names.
120*4882a593Smuzhiyun- reset-names: Must contain the following entries:
121*4882a593Smuzhiyun  - "phy": reset for the SATA UPHY block
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun
124*4882a593SmuzhiyunPHY nodes:
125*4882a593Smuzhiyun==========
126*4882a593Smuzhiyun
127*4882a593SmuzhiyunEach pad node has a child named "lanes" that contains one or more children of
128*4882a593Smuzhiyunits own, each representing one of the lanes controlled by the pad.
129*4882a593Smuzhiyun
130*4882a593SmuzhiyunRequired properties:
131*4882a593Smuzhiyun--------------------
132*4882a593Smuzhiyun- status: Defines the operation status of the PHY. Valid values are:
133*4882a593Smuzhiyun  - "disabled": the PHY is disabled
134*4882a593Smuzhiyun  - "okay": the PHY is enabled
135*4882a593Smuzhiyun- #phy-cells: Should be 0. Since each lane represents a single PHY, there is
136*4882a593Smuzhiyun  no need for an additional specifier.
137*4882a593Smuzhiyun- nvidia,function: The output function of the PHY. See below for a list of
138*4882a593Smuzhiyun  valid functions per SoC generation.
139*4882a593Smuzhiyun
140*4882a593SmuzhiyunFor Tegra124 and Tegra132, the list of valid PHY nodes is given below:
141*4882a593Smuzhiyun- usb2: usb2-0, usb2-1, usb2-2
142*4882a593Smuzhiyun  - functions: "snps", "xusb", "uart"
143*4882a593Smuzhiyun- ulpi: ulpi-0
144*4882a593Smuzhiyun  - functions: "snps", "xusb"
145*4882a593Smuzhiyun- hsic: hsic-0, hsic-1
146*4882a593Smuzhiyun  - functions: "snps", "xusb"
147*4882a593Smuzhiyun- pcie: pcie-0, pcie-1, pcie-2, pcie-3, pcie-4
148*4882a593Smuzhiyun  - functions: "pcie", "usb3-ss"
149*4882a593Smuzhiyun- sata: sata-0
150*4882a593Smuzhiyun  - functions: "usb3-ss", "sata"
151*4882a593Smuzhiyun
152*4882a593SmuzhiyunFor Tegra210, the list of valid PHY nodes is given below:
153*4882a593Smuzhiyun- usb2: usb2-0, usb2-1, usb2-2, usb2-3
154*4882a593Smuzhiyun  - functions: "snps", "xusb", "uart"
155*4882a593Smuzhiyun- hsic: hsic-0, hsic-1
156*4882a593Smuzhiyun  - functions: "snps", "xusb"
157*4882a593Smuzhiyun- pcie: pcie-0, pcie-1, pcie-2, pcie-3, pcie-4, pcie-5, pcie-6
158*4882a593Smuzhiyun  - functions: "pcie-x1", "usb3-ss", "pcie-x4"
159*4882a593Smuzhiyun- sata: sata-0
160*4882a593Smuzhiyun  - functions: "usb3-ss", "sata"
161*4882a593Smuzhiyun
162*4882a593SmuzhiyunFor Tegra194, the list of valid PHY nodes is given below:
163*4882a593Smuzhiyun- usb2: usb2-0, usb2-1, usb2-2, usb2-3
164*4882a593Smuzhiyun  - functions: "xusb"
165*4882a593Smuzhiyun- usb3: usb3-0, usb3-1, usb3-2, usb3-3
166*4882a593Smuzhiyun  - functions: "xusb"
167*4882a593Smuzhiyun
168*4882a593SmuzhiyunPort nodes:
169*4882a593Smuzhiyun===========
170*4882a593Smuzhiyun
171*4882a593SmuzhiyunA required child node named "ports" contains a list of all the ports exposed
172*4882a593Smuzhiyunby the XUSB pad controller. Per-port configuration is only required for USB.
173*4882a593Smuzhiyun
174*4882a593SmuzhiyunUSB2 ports:
175*4882a593Smuzhiyun-----------
176*4882a593Smuzhiyun
177*4882a593SmuzhiyunRequired properties:
178*4882a593Smuzhiyun- status: Defines the operation status of the port. Valid values are:
179*4882a593Smuzhiyun  - "disabled": the port is disabled
180*4882a593Smuzhiyun  - "okay": the port is enabled
181*4882a593Smuzhiyun- mode: A string that determines the mode in which to run the port. Valid
182*4882a593Smuzhiyun  values are:
183*4882a593Smuzhiyun  - "host": for USB host mode
184*4882a593Smuzhiyun  - "device": for USB device mode
185*4882a593Smuzhiyun  - "otg": for USB OTG mode
186*4882a593Smuzhiyun
187*4882a593SmuzhiyunRequired properties for OTG/Peripheral capable USB2 ports:
188*4882a593Smuzhiyun- usb-role-switch: Boolean property to indicate that the port support OTG or
189*4882a593Smuzhiyun  peripheral mode. If present, the port supports switching between USB host
190*4882a593Smuzhiyun  and peripheral roles. Connector should be added as subnode.
191*4882a593Smuzhiyun  See usb/usb-conn-gpio.txt.
192*4882a593Smuzhiyun
193*4882a593SmuzhiyunOptional properties:
194*4882a593Smuzhiyun- nvidia,internal: A boolean property whose presence determines that a port
195*4882a593Smuzhiyun  is internal. In the absence of this property the port is considered to be
196*4882a593Smuzhiyun  external.
197*4882a593Smuzhiyun- vbus-supply: phandle to a regulator supplying the VBUS voltage.
198*4882a593Smuzhiyun
199*4882a593SmuzhiyunULPI ports:
200*4882a593Smuzhiyun-----------
201*4882a593Smuzhiyun
202*4882a593SmuzhiyunOptional properties:
203*4882a593Smuzhiyun- status: Defines the operation status of the port. Valid values are:
204*4882a593Smuzhiyun  - "disabled": the port is disabled
205*4882a593Smuzhiyun  - "okay": the port is enabled
206*4882a593Smuzhiyun- nvidia,internal: A boolean property whose presence determines that a port
207*4882a593Smuzhiyun  is internal. In the absence of this property the port is considered to be
208*4882a593Smuzhiyun  external.
209*4882a593Smuzhiyun- vbus-supply: phandle to a regulator supplying the VBUS voltage.
210*4882a593Smuzhiyun
211*4882a593SmuzhiyunHSIC ports:
212*4882a593Smuzhiyun-----------
213*4882a593Smuzhiyun
214*4882a593SmuzhiyunRequired properties:
215*4882a593Smuzhiyun- status: Defines the operation status of the port. Valid values are:
216*4882a593Smuzhiyun  - "disabled": the port is disabled
217*4882a593Smuzhiyun  - "okay": the port is enabled
218*4882a593Smuzhiyun
219*4882a593SmuzhiyunOptional properties:
220*4882a593Smuzhiyun- vbus-supply: phandle to a regulator supplying the VBUS voltage.
221*4882a593Smuzhiyun
222*4882a593SmuzhiyunSuper-speed USB ports:
223*4882a593Smuzhiyun----------------------
224*4882a593Smuzhiyun
225*4882a593SmuzhiyunRequired properties:
226*4882a593Smuzhiyun- status: Defines the operation status of the port. Valid values are:
227*4882a593Smuzhiyun  - "disabled": the port is disabled
228*4882a593Smuzhiyun  - "okay": the port is enabled
229*4882a593Smuzhiyun- nvidia,usb2-companion: A single cell that specifies the physical port number
230*4882a593Smuzhiyun  to map this super-speed USB port to. The range of valid port numbers varies
231*4882a593Smuzhiyun  with the SoC generation:
232*4882a593Smuzhiyun  - 0-2: for Tegra124 and Tegra132
233*4882a593Smuzhiyun  - 0-3: for Tegra210
234*4882a593Smuzhiyun
235*4882a593SmuzhiyunOptional properties:
236*4882a593Smuzhiyun- nvidia,internal: A boolean property whose presence determines that a port
237*4882a593Smuzhiyun  is internal. In the absence of this property the port is considered to be
238*4882a593Smuzhiyun  external.
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun- maximum-speed: Only for Tegra194. A string property that specifies maximum
241*4882a593Smuzhiyun  supported speed of a usb3 port. Valid values are:
242*4882a593Smuzhiyun  - "super-speed-plus": default, the usb3 port supports USB 3.1 Gen 2 speed.
243*4882a593Smuzhiyun  - "super-speed": the usb3 port supports USB 3.1 Gen 1 speed only.
244*4882a593Smuzhiyun
245*4882a593SmuzhiyunFor Tegra124 and Tegra132, the XUSB pad controller exposes the following
246*4882a593Smuzhiyunports:
247*4882a593Smuzhiyun- 3x USB2: usb2-0, usb2-1, usb2-2
248*4882a593Smuzhiyun- 1x ULPI: ulpi-0
249*4882a593Smuzhiyun- 2x HSIC: hsic-0, hsic-1
250*4882a593Smuzhiyun- 2x super-speed USB: usb3-0, usb3-1
251*4882a593Smuzhiyun
252*4882a593SmuzhiyunFor Tegra210, the XUSB pad controller exposes the following ports:
253*4882a593Smuzhiyun- 4x USB2: usb2-0, usb2-1, usb2-2, usb2-3
254*4882a593Smuzhiyun- 2x HSIC: hsic-0, hsic-1
255*4882a593Smuzhiyun- 4x super-speed USB: usb3-0, usb3-1, usb3-2, usb3-3
256*4882a593Smuzhiyun
257*4882a593SmuzhiyunFor Tegra194, the XUSB pad controller exposes the following ports:
258*4882a593Smuzhiyun- 4x USB2: usb2-0, usb2-1, usb2-2, usb2-3
259*4882a593Smuzhiyun- 4x super-speed USB: usb3-0, usb3-1, usb3-2, usb3-3
260*4882a593Smuzhiyun
261*4882a593SmuzhiyunExamples:
262*4882a593Smuzhiyun=========
263*4882a593Smuzhiyun
264*4882a593SmuzhiyunTegra124 and Tegra132:
265*4882a593Smuzhiyun----------------------
266*4882a593Smuzhiyun
267*4882a593SmuzhiyunSoC include:
268*4882a593Smuzhiyun
269*4882a593Smuzhiyun	padctl@7009f000 {
270*4882a593Smuzhiyun		/* for Tegra124 */
271*4882a593Smuzhiyun		compatible = "nvidia,tegra124-xusb-padctl";
272*4882a593Smuzhiyun		/* for Tegra132 */
273*4882a593Smuzhiyun		compatible = "nvidia,tegra132-xusb-padctl",
274*4882a593Smuzhiyun			     "nvidia,tegra124-xusb-padctl";
275*4882a593Smuzhiyun		reg = <0x0 0x7009f000 0x0 0x1000>;
276*4882a593Smuzhiyun		resets = <&tegra_car 142>;
277*4882a593Smuzhiyun		reset-names = "padctl";
278*4882a593Smuzhiyun
279*4882a593Smuzhiyun		pads {
280*4882a593Smuzhiyun			usb2 {
281*4882a593Smuzhiyun				status = "disabled";
282*4882a593Smuzhiyun
283*4882a593Smuzhiyun				lanes {
284*4882a593Smuzhiyun					usb2-0 {
285*4882a593Smuzhiyun						status = "disabled";
286*4882a593Smuzhiyun						#phy-cells = <0>;
287*4882a593Smuzhiyun					};
288*4882a593Smuzhiyun
289*4882a593Smuzhiyun					usb2-1 {
290*4882a593Smuzhiyun						status = "disabled";
291*4882a593Smuzhiyun						#phy-cells = <0>;
292*4882a593Smuzhiyun					};
293*4882a593Smuzhiyun
294*4882a593Smuzhiyun					usb2-2 {
295*4882a593Smuzhiyun						status = "disabled";
296*4882a593Smuzhiyun						#phy-cells = <0>;
297*4882a593Smuzhiyun					};
298*4882a593Smuzhiyun				};
299*4882a593Smuzhiyun			};
300*4882a593Smuzhiyun
301*4882a593Smuzhiyun			ulpi {
302*4882a593Smuzhiyun				status = "disabled";
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun				lanes {
305*4882a593Smuzhiyun					ulpi-0 {
306*4882a593Smuzhiyun						status = "disabled";
307*4882a593Smuzhiyun						#phy-cells = <0>;
308*4882a593Smuzhiyun					};
309*4882a593Smuzhiyun				};
310*4882a593Smuzhiyun			};
311*4882a593Smuzhiyun
312*4882a593Smuzhiyun			hsic {
313*4882a593Smuzhiyun				status = "disabled";
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun				lanes {
316*4882a593Smuzhiyun					hsic-0 {
317*4882a593Smuzhiyun						status = "disabled";
318*4882a593Smuzhiyun						#phy-cells = <0>;
319*4882a593Smuzhiyun					};
320*4882a593Smuzhiyun
321*4882a593Smuzhiyun					hsic-1 {
322*4882a593Smuzhiyun						status = "disabled";
323*4882a593Smuzhiyun						#phy-cells = <0>;
324*4882a593Smuzhiyun					};
325*4882a593Smuzhiyun				};
326*4882a593Smuzhiyun			};
327*4882a593Smuzhiyun
328*4882a593Smuzhiyun			pcie {
329*4882a593Smuzhiyun				status = "disabled";
330*4882a593Smuzhiyun
331*4882a593Smuzhiyun				lanes {
332*4882a593Smuzhiyun					pcie-0 {
333*4882a593Smuzhiyun						status = "disabled";
334*4882a593Smuzhiyun						#phy-cells = <0>;
335*4882a593Smuzhiyun					};
336*4882a593Smuzhiyun
337*4882a593Smuzhiyun					pcie-1 {
338*4882a593Smuzhiyun						status = "disabled";
339*4882a593Smuzhiyun						#phy-cells = <0>;
340*4882a593Smuzhiyun					};
341*4882a593Smuzhiyun
342*4882a593Smuzhiyun					pcie-2 {
343*4882a593Smuzhiyun						status = "disabled";
344*4882a593Smuzhiyun						#phy-cells = <0>;
345*4882a593Smuzhiyun					};
346*4882a593Smuzhiyun
347*4882a593Smuzhiyun					pcie-3 {
348*4882a593Smuzhiyun						status = "disabled";
349*4882a593Smuzhiyun						#phy-cells = <0>;
350*4882a593Smuzhiyun					};
351*4882a593Smuzhiyun
352*4882a593Smuzhiyun					pcie-4 {
353*4882a593Smuzhiyun						status = "disabled";
354*4882a593Smuzhiyun						#phy-cells = <0>;
355*4882a593Smuzhiyun					};
356*4882a593Smuzhiyun				};
357*4882a593Smuzhiyun			};
358*4882a593Smuzhiyun
359*4882a593Smuzhiyun			sata {
360*4882a593Smuzhiyun				status = "disabled";
361*4882a593Smuzhiyun
362*4882a593Smuzhiyun				lanes {
363*4882a593Smuzhiyun					sata-0 {
364*4882a593Smuzhiyun						status = "disabled";
365*4882a593Smuzhiyun						#phy-cells = <0>;
366*4882a593Smuzhiyun					};
367*4882a593Smuzhiyun				};
368*4882a593Smuzhiyun			};
369*4882a593Smuzhiyun		};
370*4882a593Smuzhiyun
371*4882a593Smuzhiyun		ports {
372*4882a593Smuzhiyun			usb2-0 {
373*4882a593Smuzhiyun				status = "disabled";
374*4882a593Smuzhiyun			};
375*4882a593Smuzhiyun
376*4882a593Smuzhiyun			usb2-1 {
377*4882a593Smuzhiyun				status = "disabled";
378*4882a593Smuzhiyun			};
379*4882a593Smuzhiyun
380*4882a593Smuzhiyun			usb2-2 {
381*4882a593Smuzhiyun				status = "disabled";
382*4882a593Smuzhiyun			};
383*4882a593Smuzhiyun
384*4882a593Smuzhiyun			ulpi-0 {
385*4882a593Smuzhiyun				status = "disabled";
386*4882a593Smuzhiyun			};
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun			hsic-0 {
389*4882a593Smuzhiyun				status = "disabled";
390*4882a593Smuzhiyun			};
391*4882a593Smuzhiyun
392*4882a593Smuzhiyun			hsic-1 {
393*4882a593Smuzhiyun				status = "disabled";
394*4882a593Smuzhiyun			};
395*4882a593Smuzhiyun
396*4882a593Smuzhiyun			usb3-0 {
397*4882a593Smuzhiyun				status = "disabled";
398*4882a593Smuzhiyun			};
399*4882a593Smuzhiyun
400*4882a593Smuzhiyun			usb3-1 {
401*4882a593Smuzhiyun				status = "disabled";
402*4882a593Smuzhiyun			};
403*4882a593Smuzhiyun		};
404*4882a593Smuzhiyun	};
405*4882a593Smuzhiyun
406*4882a593SmuzhiyunBoard file:
407*4882a593Smuzhiyun
408*4882a593Smuzhiyun	padctl@7009f000 {
409*4882a593Smuzhiyun		status = "okay";
410*4882a593Smuzhiyun
411*4882a593Smuzhiyun		pads {
412*4882a593Smuzhiyun			usb2 {
413*4882a593Smuzhiyun				status = "okay";
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun				lanes {
416*4882a593Smuzhiyun					usb2-0 {
417*4882a593Smuzhiyun						nvidia,function = "xusb";
418*4882a593Smuzhiyun						status = "okay";
419*4882a593Smuzhiyun					};
420*4882a593Smuzhiyun
421*4882a593Smuzhiyun					usb2-1 {
422*4882a593Smuzhiyun						nvidia,function = "xusb";
423*4882a593Smuzhiyun						status = "okay";
424*4882a593Smuzhiyun					};
425*4882a593Smuzhiyun
426*4882a593Smuzhiyun					usb2-2 {
427*4882a593Smuzhiyun						nvidia,function = "xusb";
428*4882a593Smuzhiyun						status = "okay";
429*4882a593Smuzhiyun					};
430*4882a593Smuzhiyun				};
431*4882a593Smuzhiyun			};
432*4882a593Smuzhiyun
433*4882a593Smuzhiyun			pcie {
434*4882a593Smuzhiyun				status = "okay";
435*4882a593Smuzhiyun
436*4882a593Smuzhiyun				lanes {
437*4882a593Smuzhiyun					pcie-0 {
438*4882a593Smuzhiyun						nvidia,function = "usb3-ss";
439*4882a593Smuzhiyun						status = "okay";
440*4882a593Smuzhiyun					};
441*4882a593Smuzhiyun
442*4882a593Smuzhiyun					pcie-2 {
443*4882a593Smuzhiyun						nvidia,function = "pcie";
444*4882a593Smuzhiyun						status = "okay";
445*4882a593Smuzhiyun					};
446*4882a593Smuzhiyun
447*4882a593Smuzhiyun					pcie-4 {
448*4882a593Smuzhiyun						nvidia,function = "pcie";
449*4882a593Smuzhiyun						status = "okay";
450*4882a593Smuzhiyun					};
451*4882a593Smuzhiyun				};
452*4882a593Smuzhiyun			};
453*4882a593Smuzhiyun
454*4882a593Smuzhiyun			sata {
455*4882a593Smuzhiyun				status = "okay";
456*4882a593Smuzhiyun
457*4882a593Smuzhiyun				lanes {
458*4882a593Smuzhiyun					sata-0 {
459*4882a593Smuzhiyun						nvidia,function = "sata";
460*4882a593Smuzhiyun						status = "okay";
461*4882a593Smuzhiyun					};
462*4882a593Smuzhiyun				};
463*4882a593Smuzhiyun			};
464*4882a593Smuzhiyun		};
465*4882a593Smuzhiyun
466*4882a593Smuzhiyun		ports {
467*4882a593Smuzhiyun			/* Micro A/B */
468*4882a593Smuzhiyun			usb2-0 {
469*4882a593Smuzhiyun				status = "okay";
470*4882a593Smuzhiyun				mode = "otg";
471*4882a593Smuzhiyun			};
472*4882a593Smuzhiyun
473*4882a593Smuzhiyun			/* Mini PCIe */
474*4882a593Smuzhiyun			usb2-1 {
475*4882a593Smuzhiyun				status = "okay";
476*4882a593Smuzhiyun				mode = "host";
477*4882a593Smuzhiyun			};
478*4882a593Smuzhiyun
479*4882a593Smuzhiyun			/* USB3 */
480*4882a593Smuzhiyun			usb2-2 {
481*4882a593Smuzhiyun				status = "okay";
482*4882a593Smuzhiyun				mode = "host";
483*4882a593Smuzhiyun
484*4882a593Smuzhiyun				vbus-supply = <&vdd_usb3_vbus>;
485*4882a593Smuzhiyun			};
486*4882a593Smuzhiyun
487*4882a593Smuzhiyun			usb3-0 {
488*4882a593Smuzhiyun				nvidia,port = <2>;
489*4882a593Smuzhiyun				status = "okay";
490*4882a593Smuzhiyun			};
491*4882a593Smuzhiyun		};
492*4882a593Smuzhiyun	};
493*4882a593Smuzhiyun
494*4882a593SmuzhiyunTegra210:
495*4882a593Smuzhiyun---------
496*4882a593Smuzhiyun
497*4882a593SmuzhiyunSoC include:
498*4882a593Smuzhiyun
499*4882a593Smuzhiyun	padctl@7009f000 {
500*4882a593Smuzhiyun		compatible = "nvidia,tegra210-xusb-padctl";
501*4882a593Smuzhiyun		reg = <0x0 0x7009f000 0x0 0x1000>;
502*4882a593Smuzhiyun		resets = <&tegra_car 142>;
503*4882a593Smuzhiyun		reset-names = "padctl";
504*4882a593Smuzhiyun
505*4882a593Smuzhiyun		status = "disabled";
506*4882a593Smuzhiyun
507*4882a593Smuzhiyun		pads {
508*4882a593Smuzhiyun			usb2 {
509*4882a593Smuzhiyun				clocks = <&tegra_car TEGRA210_CLK_USB2_TRK>;
510*4882a593Smuzhiyun				clock-names = "trk";
511*4882a593Smuzhiyun				status = "disabled";
512*4882a593Smuzhiyun
513*4882a593Smuzhiyun				lanes {
514*4882a593Smuzhiyun					usb2-0 {
515*4882a593Smuzhiyun						status = "disabled";
516*4882a593Smuzhiyun						#phy-cells = <0>;
517*4882a593Smuzhiyun					};
518*4882a593Smuzhiyun
519*4882a593Smuzhiyun					usb2-1 {
520*4882a593Smuzhiyun						status = "disabled";
521*4882a593Smuzhiyun						#phy-cells = <0>;
522*4882a593Smuzhiyun					};
523*4882a593Smuzhiyun
524*4882a593Smuzhiyun					usb2-2 {
525*4882a593Smuzhiyun						status = "disabled";
526*4882a593Smuzhiyun						#phy-cells = <0>;
527*4882a593Smuzhiyun					};
528*4882a593Smuzhiyun
529*4882a593Smuzhiyun					usb2-3 {
530*4882a593Smuzhiyun						status = "disabled";
531*4882a593Smuzhiyun						#phy-cells = <0>;
532*4882a593Smuzhiyun					};
533*4882a593Smuzhiyun				};
534*4882a593Smuzhiyun			};
535*4882a593Smuzhiyun
536*4882a593Smuzhiyun			hsic {
537*4882a593Smuzhiyun				clocks = <&tegra_car TEGRA210_CLK_HSIC_TRK>;
538*4882a593Smuzhiyun				clock-names = "trk";
539*4882a593Smuzhiyun				status = "disabled";
540*4882a593Smuzhiyun
541*4882a593Smuzhiyun				lanes {
542*4882a593Smuzhiyun					hsic-0 {
543*4882a593Smuzhiyun						status = "disabled";
544*4882a593Smuzhiyun						#phy-cells = <0>;
545*4882a593Smuzhiyun					};
546*4882a593Smuzhiyun
547*4882a593Smuzhiyun					hsic-1 {
548*4882a593Smuzhiyun						status = "disabled";
549*4882a593Smuzhiyun						#phy-cells = <0>;
550*4882a593Smuzhiyun					};
551*4882a593Smuzhiyun				};
552*4882a593Smuzhiyun			};
553*4882a593Smuzhiyun
554*4882a593Smuzhiyun			pcie {
555*4882a593Smuzhiyun				clocks = <&tegra_car TEGRA210_CLK_PLL_E>;
556*4882a593Smuzhiyun				clock-names = "pll";
557*4882a593Smuzhiyun				resets = <&tegra_car 205>;
558*4882a593Smuzhiyun				reset-names = "phy";
559*4882a593Smuzhiyun				status = "disabled";
560*4882a593Smuzhiyun
561*4882a593Smuzhiyun				lanes {
562*4882a593Smuzhiyun					pcie-0 {
563*4882a593Smuzhiyun						status = "disabled";
564*4882a593Smuzhiyun						#phy-cells = <0>;
565*4882a593Smuzhiyun					};
566*4882a593Smuzhiyun
567*4882a593Smuzhiyun					pcie-1 {
568*4882a593Smuzhiyun						status = "disabled";
569*4882a593Smuzhiyun						#phy-cells = <0>;
570*4882a593Smuzhiyun					};
571*4882a593Smuzhiyun
572*4882a593Smuzhiyun					pcie-2 {
573*4882a593Smuzhiyun						status = "disabled";
574*4882a593Smuzhiyun						#phy-cells = <0>;
575*4882a593Smuzhiyun					};
576*4882a593Smuzhiyun
577*4882a593Smuzhiyun					pcie-3 {
578*4882a593Smuzhiyun						status = "disabled";
579*4882a593Smuzhiyun						#phy-cells = <0>;
580*4882a593Smuzhiyun					};
581*4882a593Smuzhiyun
582*4882a593Smuzhiyun					pcie-4 {
583*4882a593Smuzhiyun						status = "disabled";
584*4882a593Smuzhiyun						#phy-cells = <0>;
585*4882a593Smuzhiyun					};
586*4882a593Smuzhiyun
587*4882a593Smuzhiyun					pcie-5 {
588*4882a593Smuzhiyun						status = "disabled";
589*4882a593Smuzhiyun						#phy-cells = <0>;
590*4882a593Smuzhiyun					};
591*4882a593Smuzhiyun
592*4882a593Smuzhiyun					pcie-6 {
593*4882a593Smuzhiyun						status = "disabled";
594*4882a593Smuzhiyun						#phy-cells = <0>;
595*4882a593Smuzhiyun					};
596*4882a593Smuzhiyun				};
597*4882a593Smuzhiyun			};
598*4882a593Smuzhiyun
599*4882a593Smuzhiyun			sata {
600*4882a593Smuzhiyun				clocks = <&tegra_car TEGRA210_CLK_PLL_E>;
601*4882a593Smuzhiyun				clock-names = "pll";
602*4882a593Smuzhiyun				resets = <&tegra_car 204>;
603*4882a593Smuzhiyun				reset-names = "phy";
604*4882a593Smuzhiyun				status = "disabled";
605*4882a593Smuzhiyun
606*4882a593Smuzhiyun				lanes {
607*4882a593Smuzhiyun					sata-0 {
608*4882a593Smuzhiyun						status = "disabled";
609*4882a593Smuzhiyun						#phy-cells = <0>;
610*4882a593Smuzhiyun					};
611*4882a593Smuzhiyun				};
612*4882a593Smuzhiyun			};
613*4882a593Smuzhiyun		};
614*4882a593Smuzhiyun
615*4882a593Smuzhiyun		ports {
616*4882a593Smuzhiyun			usb2-0 {
617*4882a593Smuzhiyun				status = "disabled";
618*4882a593Smuzhiyun			};
619*4882a593Smuzhiyun
620*4882a593Smuzhiyun			usb2-1 {
621*4882a593Smuzhiyun				status = "disabled";
622*4882a593Smuzhiyun			};
623*4882a593Smuzhiyun
624*4882a593Smuzhiyun			usb2-2 {
625*4882a593Smuzhiyun				status = "disabled";
626*4882a593Smuzhiyun			};
627*4882a593Smuzhiyun
628*4882a593Smuzhiyun			usb2-3 {
629*4882a593Smuzhiyun				status = "disabled";
630*4882a593Smuzhiyun			};
631*4882a593Smuzhiyun
632*4882a593Smuzhiyun			hsic-0 {
633*4882a593Smuzhiyun				status = "disabled";
634*4882a593Smuzhiyun			};
635*4882a593Smuzhiyun
636*4882a593Smuzhiyun			hsic-1 {
637*4882a593Smuzhiyun				status = "disabled";
638*4882a593Smuzhiyun			};
639*4882a593Smuzhiyun
640*4882a593Smuzhiyun			usb3-0 {
641*4882a593Smuzhiyun				status = "disabled";
642*4882a593Smuzhiyun			};
643*4882a593Smuzhiyun
644*4882a593Smuzhiyun			usb3-1 {
645*4882a593Smuzhiyun				status = "disabled";
646*4882a593Smuzhiyun			};
647*4882a593Smuzhiyun
648*4882a593Smuzhiyun			usb3-2 {
649*4882a593Smuzhiyun				status = "disabled";
650*4882a593Smuzhiyun			};
651*4882a593Smuzhiyun
652*4882a593Smuzhiyun			usb3-3 {
653*4882a593Smuzhiyun				status = "disabled";
654*4882a593Smuzhiyun			};
655*4882a593Smuzhiyun		};
656*4882a593Smuzhiyun	};
657*4882a593Smuzhiyun
658*4882a593SmuzhiyunBoard file:
659*4882a593Smuzhiyun
660*4882a593Smuzhiyun	padctl@7009f000 {
661*4882a593Smuzhiyun		status = "okay";
662*4882a593Smuzhiyun
663*4882a593Smuzhiyun		pads {
664*4882a593Smuzhiyun			usb2 {
665*4882a593Smuzhiyun				status = "okay";
666*4882a593Smuzhiyun
667*4882a593Smuzhiyun				lanes {
668*4882a593Smuzhiyun					usb2-0 {
669*4882a593Smuzhiyun						nvidia,function = "xusb";
670*4882a593Smuzhiyun						status = "okay";
671*4882a593Smuzhiyun					};
672*4882a593Smuzhiyun
673*4882a593Smuzhiyun					usb2-1 {
674*4882a593Smuzhiyun						nvidia,function = "xusb";
675*4882a593Smuzhiyun						status = "okay";
676*4882a593Smuzhiyun					};
677*4882a593Smuzhiyun
678*4882a593Smuzhiyun					usb2-2 {
679*4882a593Smuzhiyun						nvidia,function = "xusb";
680*4882a593Smuzhiyun						status = "okay";
681*4882a593Smuzhiyun					};
682*4882a593Smuzhiyun
683*4882a593Smuzhiyun					usb2-3 {
684*4882a593Smuzhiyun						nvidia,function = "xusb";
685*4882a593Smuzhiyun						status = "okay";
686*4882a593Smuzhiyun					};
687*4882a593Smuzhiyun				};
688*4882a593Smuzhiyun			};
689*4882a593Smuzhiyun
690*4882a593Smuzhiyun			pcie {
691*4882a593Smuzhiyun				status = "okay";
692*4882a593Smuzhiyun
693*4882a593Smuzhiyun				lanes {
694*4882a593Smuzhiyun					pcie-0 {
695*4882a593Smuzhiyun						nvidia,function = "pcie-x1";
696*4882a593Smuzhiyun						status = "okay";
697*4882a593Smuzhiyun					};
698*4882a593Smuzhiyun
699*4882a593Smuzhiyun					pcie-1 {
700*4882a593Smuzhiyun						nvidia,function = "pcie-x4";
701*4882a593Smuzhiyun						status = "okay";
702*4882a593Smuzhiyun					};
703*4882a593Smuzhiyun
704*4882a593Smuzhiyun					pcie-2 {
705*4882a593Smuzhiyun						nvidia,function = "pcie-x4";
706*4882a593Smuzhiyun						status = "okay";
707*4882a593Smuzhiyun					};
708*4882a593Smuzhiyun
709*4882a593Smuzhiyun					pcie-3 {
710*4882a593Smuzhiyun						nvidia,function = "pcie-x4";
711*4882a593Smuzhiyun						status = "okay";
712*4882a593Smuzhiyun					};
713*4882a593Smuzhiyun
714*4882a593Smuzhiyun					pcie-4 {
715*4882a593Smuzhiyun						nvidia,function = "pcie-x4";
716*4882a593Smuzhiyun						status = "okay";
717*4882a593Smuzhiyun					};
718*4882a593Smuzhiyun
719*4882a593Smuzhiyun					pcie-5 {
720*4882a593Smuzhiyun						nvidia,function = "usb3-ss";
721*4882a593Smuzhiyun						status = "okay";
722*4882a593Smuzhiyun					};
723*4882a593Smuzhiyun
724*4882a593Smuzhiyun					pcie-6 {
725*4882a593Smuzhiyun						nvidia,function = "usb3-ss";
726*4882a593Smuzhiyun						status = "okay";
727*4882a593Smuzhiyun					};
728*4882a593Smuzhiyun				};
729*4882a593Smuzhiyun			};
730*4882a593Smuzhiyun
731*4882a593Smuzhiyun			sata {
732*4882a593Smuzhiyun				status = "okay";
733*4882a593Smuzhiyun
734*4882a593Smuzhiyun				lanes {
735*4882a593Smuzhiyun					sata-0 {
736*4882a593Smuzhiyun						nvidia,function = "sata";
737*4882a593Smuzhiyun						status = "okay";
738*4882a593Smuzhiyun					};
739*4882a593Smuzhiyun				};
740*4882a593Smuzhiyun			};
741*4882a593Smuzhiyun		};
742*4882a593Smuzhiyun
743*4882a593Smuzhiyun		ports {
744*4882a593Smuzhiyun			usb2-0 {
745*4882a593Smuzhiyun				status = "okay";
746*4882a593Smuzhiyun				mode = "otg";
747*4882a593Smuzhiyun			};
748*4882a593Smuzhiyun
749*4882a593Smuzhiyun			usb2-1 {
750*4882a593Smuzhiyun				status = "okay";
751*4882a593Smuzhiyun				vbus-supply = <&vdd_5v0_rtl>;
752*4882a593Smuzhiyun				mode = "host";
753*4882a593Smuzhiyun			};
754*4882a593Smuzhiyun
755*4882a593Smuzhiyun			usb2-2 {
756*4882a593Smuzhiyun				status = "okay";
757*4882a593Smuzhiyun				vbus-supply = <&vdd_usb_vbus>;
758*4882a593Smuzhiyun				mode = "host";
759*4882a593Smuzhiyun			};
760*4882a593Smuzhiyun
761*4882a593Smuzhiyun			usb2-3 {
762*4882a593Smuzhiyun				status = "okay";
763*4882a593Smuzhiyun				mode = "host";
764*4882a593Smuzhiyun			};
765*4882a593Smuzhiyun
766*4882a593Smuzhiyun			usb3-0 {
767*4882a593Smuzhiyun				status = "okay";
768*4882a593Smuzhiyun				nvidia,lanes = "pcie-6";
769*4882a593Smuzhiyun				nvidia,port = <1>;
770*4882a593Smuzhiyun			};
771*4882a593Smuzhiyun
772*4882a593Smuzhiyun			usb3-1 {
773*4882a593Smuzhiyun				status = "okay";
774*4882a593Smuzhiyun				nvidia,lanes = "pcie-5";
775*4882a593Smuzhiyun				nvidia,port = <2>;
776*4882a593Smuzhiyun			};
777*4882a593Smuzhiyun		};
778*4882a593Smuzhiyun	};
779