smb: client: Fix minor whitespace errors and warnings
[linux-modified.git] / Documentation / devicetree / bindings / phy / nvidia,tegra186-xusb-padctl.yaml
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/phy/nvidia,tegra186-xusb-padctl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: NVIDIA Tegra186 XUSB pad controller
8
9 maintainers:
10   - Thierry Reding <thierry.reding@gmail.com>
11   - Jon Hunter <jonathanh@nvidia.com>
12
13 description: |
14   The Tegra XUSB pad controller manages a set of I/O lanes (with differential
15   signals) which connect directly to pins/pads on the SoC package. Each lane
16   is controlled by a HW block referred to as a "pad" in the Tegra hardware
17   documentation. Each such "pad" may control either one or multiple lanes,
18   and thus contains any logic common to all its lanes. Each lane can be
19   separately configured and powered up.
20
21   Some of the lanes are high-speed lanes, which can be used for PCIe, SATA or
22   super-speed USB. Other lanes are for various types of low-speed, full-speed
23   or high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller
24   contains a software-configurable mux that sits between the I/O controller
25   ports (e.g. PCIe) and the lanes.
26
27   In addition to per-lane configuration, USB 3.0 ports may require additional
28   settings on a per-board basis.
29
30   Pads will be represented as children of the top-level XUSB pad controller
31   device tree node. Each lane exposed by the pad will be represented by its
32   own subnode and can be referenced by users of the lane using the standard
33   PHY bindings, as described by the phy-bindings.txt file in this directory.
34
35   The Tegra hardware documentation refers to the connection between the XUSB
36   pad controller and the XUSB controller as "ports". This is confusing since
37   "port" is typically used to denote the physical USB receptacle. The device
38   tree binding in this document uses the term "port" to refer to the logical
39   abstraction of the signals that are routed to a USB receptacle (i.e. a PHY
40   for the USB signal, the VBUS power supply, the USB 2.0 companion port for
41   USB 3.0 receptacles, ...).
42
43 properties:
44   compatible:
45     const: nvidia,tegra186-xusb-padctl
46
47   reg:
48     items:
49       - description: pad controller registers
50       - description: AO registers
51
52   interrupts:
53     items:
54       - description: XUSB pad controller interrupt
55
56   reg-names:
57     items:
58       - const: padctl
59       - const: ao
60
61   resets:
62     items:
63       - description: pad controller reset
64
65   reset-names:
66     items:
67       - const: padctl
68
69   avdd-pll-erefeut-supply:
70     description: UPHY brick and reference clock as well as UTMI PHY
71       power supply. Must supply 1.8 V.
72
73   avdd-usb-supply:
74     description: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must
75       supply 3.3 V.
76
77   vclamp-usb-supply:
78     description: Bias rail for USB pad. Must supply 1.8 V.
79
80   vddio-hsic-supply:
81     description: HSIC PHY power supply. Must supply 1.2 V.
82
83   pads:
84     description: A required child node named "pads" contains a list of
85       subnodes, one for each of the pads exposed by the XUSB pad controller.
86       Each pad may need additional resources that can be referenced in its
87       pad node.
88
89       The "status" property is used to enable or disable the use of a pad.
90       If set to "disabled", the pad will not be used on the given board. In
91       order to use the pad and any of its lanes, this property must be set
92       to "okay" or be absent.
93     type: object
94     additionalProperties: false
95     properties:
96       usb2:
97         type: object
98         additionalProperties: false
99         properties:
100           clocks:
101             items:
102               - description: USB2 tracking clock
103
104           clock-names:
105             items:
106               - const: trk
107
108           lanes:
109             type: object
110             additionalProperties: false
111             properties:
112               usb2-0:
113                 type: object
114                 additionalProperties: false
115                 properties:
116                   "#phy-cells":
117                     const: 0
118
119                   nvidia,function:
120                     description: Function selection for this lane.
121                     $ref: /schemas/types.yaml#/definitions/string
122                     enum: [ xusb ]
123
124               usb2-1:
125                 type: object
126                 additionalProperties: false
127                 properties:
128                   "#phy-cells":
129                     const: 0
130
131                   nvidia,function:
132                     description: Function selection for this lane.
133                     $ref: /schemas/types.yaml#/definitions/string
134                     enum: [ xusb ]
135
136               usb2-2:
137                 type: object
138                 additionalProperties: false
139                 properties:
140                   "#phy-cells":
141                     const: 0
142
143                   nvidia,function:
144                     description: Function selection for this lane.
145                     $ref: /schemas/types.yaml#/definitions/string
146                     enum: [ xusb ]
147
148       hsic:
149         type: object
150         additionalProperties: false
151         properties:
152           clocks:
153             items:
154               - description: HSIC tracking clock
155
156           clock-names:
157             items:
158               - const: trk
159
160           lanes:
161             type: object
162             additionalProperties: false
163             properties:
164               hsic-0:
165                 type: object
166                 additionalProperties: false
167                 properties:
168                   "#phy-cells":
169                     const: 0
170
171                   nvidia,function:
172                     description: Function selection for this lane.
173                     $ref: /schemas/types.yaml#/definitions/string
174                     enum: [ xusb ]
175
176       usb3:
177         type: object
178         additionalProperties: false
179         properties:
180           lanes:
181             type: object
182             additionalProperties: false
183             properties:
184               usb3-0:
185                 type: object
186                 additionalProperties: false
187                 properties:
188                   "#phy-cells":
189                     const: 0
190
191                   nvidia,function:
192                     description: Function selection for this lane.
193                     $ref: /schemas/types.yaml#/definitions/string
194                     enum: [ xusb ]
195
196               usb3-1:
197                 type: object
198                 additionalProperties: false
199                 properties:
200                   "#phy-cells":
201                     const: 0
202
203                   nvidia,function:
204                     description: Function selection for this lane.
205                     $ref: /schemas/types.yaml#/definitions/string
206                     enum: [ xusb ]
207
208               usb3-2:
209                 type: object
210                 additionalProperties: false
211                 properties:
212                   "#phy-cells":
213                     const: 0
214
215                   nvidia,function:
216                     description: Function selection for this lane.
217                     $ref: /schemas/types.yaml#/definitions/string
218                     enum: [ xusb ]
219
220   ports:
221     description: A required child node named "ports" contains a list of
222       subnodes, one for each of the ports exposed by the XUSB pad controller.
223       Each port may need additional resources that can be referenced in its
224       port node.
225
226       The "status" property is used to enable or disable the use of a port.
227       If set to "disabled", the port will not be used on the given board. In
228       order to use the port, this property must be set to "okay".
229     type: object
230     additionalProperties: false
231     properties:
232       usb2-0:
233         type: object
234         additionalProperties: false
235         properties:
236           # no need to further describe this because the connector will
237           # match on gpio-usb-b-connector or usb-b-connector and cause
238           # that binding to be selected for the subnode
239           connector:
240             type: object
241
242           mode:
243             description: A string that determines the mode in which to
244               run the port.
245             $ref: /schemas/types.yaml#/definitions/string
246             enum: [ host, peripheral, otg ]
247
248           nvidia,internal:
249             description: A boolean property whose presence determines
250               that a port is internal. In the absence of this property
251               the port is considered to be external.
252             $ref: /schemas/types.yaml#/definitions/flag
253
254           usb-role-switch:
255             description: |
256               A boolean property whole presence indicates that the port
257               supports OTG or peripheral mode. If present, the port
258               supports switching between USB host and peripheral roles.
259               A connector must be added as a subnode in that case.
260
261               See ../connector/usb-connector.yaml.
262
263           vbus-supply:
264             description: A phandle to the regulator supplying the VBUS
265               voltage.
266
267         dependencies:
268           usb-role-switch: [ connector ]
269
270       usb2-1:
271         type: object
272         additionalProperties: false
273         properties:
274           # no need to further describe this because the connector will
275           # match on gpio-usb-b-connector or usb-b-connector and cause
276           # that binding to be selected for the subnode
277           connector:
278             type: object
279
280           mode:
281             description: A string that determines the mode in which to
282               run the port.
283             $ref: /schemas/types.yaml#/definitions/string
284             enum: [ host, peripheral, otg ]
285
286           nvidia,internal:
287             description: A boolean property whose presence determines
288               that a port is internal. In the absence of this property
289               the port is considered to be external.
290             $ref: /schemas/types.yaml#/definitions/flag
291
292           usb-role-switch:
293             description: |
294               A boolean property whole presence indicates that the port
295               supports OTG or peripheral mode. If present, the port
296               supports switching between USB host and peripheral roles.
297               A connector must be added as a subnode in that case.
298
299               See ../connector/usb-connector.yaml.
300
301           vbus-supply:
302             description: A phandle to the regulator supplying the VBUS
303               voltage.
304
305         dependencies:
306           usb-role-switch: [ connector ]
307
308       usb2-2:
309         type: object
310         additionalProperties: false
311         properties:
312           # no need to further describe this because the connector will
313           # match on gpio-usb-b-connector or usb-b-connector and cause
314           # that binding to be selected for the subnode
315           connector:
316             type: object
317
318           mode:
319             description: A string that determines the mode in which to
320               run the port.
321             $ref: /schemas/types.yaml#/definitions/string
322             enum: [ host, peripheral, otg ]
323
324           nvidia,internal:
325             description: A boolean property whose presence determines
326               that a port is internal. In the absence of this property
327               the port is considered to be external.
328             $ref: /schemas/types.yaml#/definitions/flag
329
330           usb-role-switch:
331             description: |
332               A boolean property whole presence indicates that the port
333               supports OTG or peripheral mode. If present, the port
334               supports switching between USB host and peripheral roles.
335               A connector must be added as a subnode in that case.
336
337               See ../connector/usb-connector.yaml.
338
339           vbus-supply:
340             description: A phandle to the regulator supplying the VBUS
341               voltage.
342
343         dependencies:
344           usb-role-switch: [ connector ]
345
346       hsic-0:
347         type: object
348         additionalProperties: false
349
350       usb3-0:
351         type: object
352         additionalProperties: false
353         properties:
354           nvidia,internal:
355             description: A boolean property whose presence determines
356               that a port is internal. In the absence of this property
357               the port is considered to be external.
358             $ref: /schemas/types.yaml#/definitions/flag
359
360           nvidia,usb2-companion:
361             description: A single cell that specifies the physical port
362               number to map this super-speed USB port to. The range of
363               valid port numbers varies with the SoC generation.
364             $ref: /schemas/types.yaml#/definitions/uint32
365             enum: [ 0, 1, 2, 3 ]
366
367           vbus-supply:
368             description: A phandle to the regulator supplying the VBUS
369               voltage.
370
371       usb3-1:
372         type: object
373         additionalProperties: false
374         properties:
375           nvidia,internal:
376             description: A boolean property whose presence determines
377               that a port is internal. In the absence of this property
378               the port is considered to be external.
379             $ref: /schemas/types.yaml#/definitions/flag
380
381           nvidia,usb2-companion:
382             description: A single cell that specifies the physical port
383               number to map this super-speed USB port to. The range of
384               valid port numbers varies with the SoC generation.
385             $ref: /schemas/types.yaml#/definitions/uint32
386             enum: [ 0, 1, 2, 3 ]
387
388           vbus-supply:
389             description: A phandle to the regulator supplying the VBUS
390               voltage.
391
392       usb3-2:
393         type: object
394         additionalProperties: false
395         properties:
396           nvidia,internal:
397             description: A boolean property whose presence determines
398               that a port is internal. In the absence of this property
399               the port is considered to be external.
400             $ref: /schemas/types.yaml#/definitions/flag
401
402           nvidia,usb2-companion:
403             description: A single cell that specifies the physical port
404               number to map this super-speed USB port to. The range of
405               valid port numbers varies with the SoC generation.
406             $ref: /schemas/types.yaml#/definitions/uint32
407             enum: [ 0, 1, 2, 3 ]
408
409           vbus-supply:
410             description: A phandle to the regulator supplying the VBUS
411               voltage.
412
413 additionalProperties: false
414
415 required:
416   - compatible
417   - reg
418   - resets
419   - reset-names
420   - avdd-pll-erefeut-supply
421   - avdd-usb-supply
422   - vclamp-usb-supply
423   - vddio-hsic-supply
424
425 examples:
426   - |
427     #include <dt-bindings/clock/tegra186-clock.h>
428     #include <dt-bindings/gpio/tegra186-gpio.h>
429     #include <dt-bindings/interrupt-controller/arm-gic.h>
430     #include <dt-bindings/reset/tegra186-reset.h>
431
432     padctl@3520000 {
433         compatible = "nvidia,tegra186-xusb-padctl";
434         reg = <0x03520000 0x1000>,
435               <0x03540000 0x1000>;
436         reg-names = "padctl", "ao";
437         interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
438
439         resets = <&bpmp TEGRA186_RESET_XUSB_PADCTL>;
440         reset-names = "padctl";
441
442         avdd-pll-erefeut-supply = <&vdd_1v8_pll>;
443         avdd-usb-supply = <&vdd_3v3_sys>;
444         vclamp-usb-supply = <&vdd_1v8>;
445         vddio-hsic-supply = <&gnd>;
446
447         pads {
448             usb2 {
449                 clocks = <&bpmp TEGRA186_CLK_USB2_TRK>;
450                 clock-names = "trk";
451
452                 lanes {
453                     usb2-0 {
454                         nvidia,function = "xusb";
455                         #phy-cells = <0>;
456                     };
457
458                     usb2-1 {
459                         nvidia,function = "xusb";
460                         #phy-cells = <0>;
461                     };
462
463                     usb2-2 {
464                         nvidia,function = "xusb";
465                         #phy-cells = <0>;
466                     };
467                 };
468             };
469
470             hsic {
471                 clocks = <&bpmp TEGRA186_CLK_HSIC_TRK>;
472                 clock-names = "trk";
473                 status = "disabled";
474
475                 lanes {
476                     hsic-0 {
477                         status = "disabled";
478                         #phy-cells = <0>;
479                     };
480                 };
481             };
482
483             usb3 {
484                 lanes {
485                     usb3-0 {
486                         nvidia,function = "xusb";
487                         #phy-cells = <0>;
488                     };
489
490                     usb3-1 {
491                         nvidia,function = "xusb";
492                         #phy-cells = <0>;
493                     };
494
495                     usb3-2 {
496                         nvidia,function = "xusb";
497                         #phy-cells = <0>;
498                     };
499                 };
500             };
501         };
502
503         ports {
504             usb2-0 {
505                 mode = "otg";
506                 vbus-supply = <&vdd_usb0>;
507                 usb-role-switch;
508
509                 connector {
510                     compatible = "gpio-usb-b-connector",
511                                  "usb-b-connector";
512                     label = "micro-USB";
513                     type = "micro";
514                     vbus-gpios = <&gpio TEGRA186_MAIN_GPIO(X, 7) GPIO_ACTIVE_LOW>;
515                     id-gpios = <&pmic 0 GPIO_ACTIVE_HIGH>;
516                 };
517             };
518
519             usb2-1 {
520                 vbus-supply = <&vdd_usb1>;
521                 mode = "host";
522             };
523
524             usb2-2 {
525                 status = "disabled";
526             };
527
528             hsic-0 {
529                 status = "disabled";
530             };
531
532             usb3-0 {
533                 nvidia,usb2-companion = <1>;
534             };
535
536             usb3-1 {
537                 status = "disabled";
538             };
539
540             usb3-2 {
541                 status = "disabled";
542             };
543         };
544     };