smb: client: Fix minor whitespace errors and warnings
[linux-modified.git] / Documentation / devicetree / bindings / phy / nvidia,tegra194-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,tegra194-xusb-padctl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: NVIDIA Tegra194 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     enum:
46       - nvidia,tegra194-xusb-padctl
47       - nvidia,tegra234-xusb-padctl
48
49   reg:
50     items:
51       - description: pad controller registers
52       - description: AO registers
53
54   reg-names:
55     items:
56       - const: padctl
57       - const: ao
58
59   interrupts:
60     items:
61       - description: XUSB pad controller interrupt
62
63   resets:
64     items:
65       - description: pad controller reset
66
67   reset-names:
68     items:
69       - const: padctl
70
71   avdd-usb-supply:
72     description: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must
73       supply 3.3 V.
74
75   vclamp-usb-supply:
76     description: Bias rail for USB pad. Must supply 1.8 V.
77
78   pads:
79     description: A required child node named "pads" contains a list of
80       subnodes, one for each of the pads exposed by the XUSB pad controller.
81       Each pad may need additional resources that can be referenced in its
82       pad node.
83
84       The "status" property is used to enable or disable the use of a pad.
85       If set to "disabled", the pad will not be used on the given board. In
86       order to use the pad and any of its lanes, this property must be set
87       to "okay" or absent.
88     type: object
89     additionalProperties: false
90     properties:
91       usb2:
92         type: object
93         additionalProperties: false
94         properties:
95           clocks:
96             items:
97               - description: USB2 tracking clock
98
99           clock-names:
100             items:
101               - const: trk
102
103           lanes:
104             type: object
105             additionalProperties: false
106             properties:
107               usb2-0:
108                 type: object
109                 additionalProperties: false
110                 properties:
111                   "#phy-cells":
112                     const: 0
113
114                   nvidia,function:
115                     description: Function selection for this lane.
116                     $ref: /schemas/types.yaml#/definitions/string
117                     enum: [ xusb ]
118
119               usb2-1:
120                 type: object
121                 additionalProperties: false
122                 properties:
123                   "#phy-cells":
124                     const: 0
125
126                   nvidia,function:
127                     description: Function selection for this lane.
128                     $ref: /schemas/types.yaml#/definitions/string
129                     enum: [ xusb ]
130
131               usb2-2:
132                 type: object
133                 additionalProperties: false
134                 properties:
135                   "#phy-cells":
136                     const: 0
137
138                   nvidia,function:
139                     description: Function selection for this lane.
140                     $ref: /schemas/types.yaml#/definitions/string
141                     enum: [ xusb ]
142
143               usb2-3:
144                 type: object
145                 additionalProperties: false
146                 properties:
147                   "#phy-cells":
148                     const: 0
149
150                   nvidia,function:
151                     description: Function selection for this lane.
152                     $ref: /schemas/types.yaml#/definitions/string
153                     enum: [ xusb ]
154
155       usb3:
156         type: object
157         additionalProperties: false
158         properties:
159           lanes:
160             type: object
161             additionalProperties: false
162             properties:
163               usb3-0:
164                 type: object
165                 additionalProperties: false
166                 properties:
167                   "#phy-cells":
168                     const: 0
169
170                   nvidia,function:
171                     description: Function selection for this lane.
172                     $ref: /schemas/types.yaml#/definitions/string
173                     enum: [ xusb ]
174
175               usb3-1:
176                 type: object
177                 additionalProperties: false
178                 properties:
179                   "#phy-cells":
180                     const: 0
181
182                   nvidia,function:
183                     description: Function selection for this lane.
184                     $ref: /schemas/types.yaml#/definitions/string
185                     enum: [ xusb ]
186
187               usb3-2:
188                 type: object
189                 additionalProperties: false
190                 properties:
191                   "#phy-cells":
192                     const: 0
193
194                   nvidia,function:
195                     description: Function selection for this lane.
196                     $ref: /schemas/types.yaml#/definitions/string
197                     enum: [ xusb ]
198
199               usb3-3:
200                 type: object
201                 additionalProperties: false
202                 properties:
203                   "#phy-cells":
204                     const: 0
205
206                   nvidia,function:
207                     description: Function selection for this lane.
208                     $ref: /schemas/types.yaml#/definitions/string
209                     enum: [ xusb ]
210
211   ports:
212     description: A required child node named "ports" contains a list of
213       subnodes, one for each of the ports exposed by the XUSB pad controller.
214       Each port may need additional resources that can be referenced in its
215       port node.
216
217       The "status" property is used to enable or disable the use of a port.
218       If set to "disabled", the port will not be used on the given board. In
219       order to use the port, this property must be set to "okay".
220     type: object
221     additionalProperties: false
222     properties:
223       usb2-0:
224         type: object
225         additionalProperties: false
226         properties:
227           # no need to further describe this because the connector will
228           # match on gpio-usb-b-connector or usb-b-connector and cause
229           # that binding to be selected for the subnode
230           connector:
231             type: object
232
233           mode:
234             description: A string that determines the mode in which to
235               run the port.
236             $ref: /schemas/types.yaml#/definitions/string
237             enum: [ host, peripheral, otg ]
238
239           nvidia,internal:
240             description: A boolean property whose presence determines
241               that a port is internal. In the absence of this property
242               the port is considered to be external.
243             $ref: /schemas/types.yaml#/definitions/flag
244
245           usb-role-switch:
246             description: |
247               A boolean property whole presence indicates that the port
248               supports OTG or peripheral mode. If present, the port
249               supports switching between USB host and peripheral roles.
250               A connector must be added as a subnode in that case.
251
252               See ../connector/usb-connector.yaml.
253
254           vbus-supply:
255             description: A phandle to the regulator supplying the VBUS
256               voltage.
257
258         dependencies:
259           usb-role-switch: [ connector ]
260
261       usb2-1:
262         type: object
263         additionalProperties: false
264         properties:
265           # no need to further describe this because the connector will
266           # match on gpio-usb-b-connector or usb-b-connector and cause
267           # that binding to be selected for the subnode
268           connector:
269             type: object
270
271           mode:
272             description: A string that determines the mode in which to
273               run the port.
274             $ref: /schemas/types.yaml#/definitions/string
275             enum: [ host, peripheral, otg ]
276
277           nvidia,internal:
278             description: A boolean property whose presence determines
279               that a port is internal. In the absence of this property
280               the port is considered to be external.
281             $ref: /schemas/types.yaml#/definitions/flag
282
283           usb-role-switch:
284             description: |
285               A boolean property whole presence indicates that the port
286               supports OTG or peripheral mode. If present, the port
287               supports switching between USB host and peripheral roles.
288               A connector must be added as a subnode in that case.
289
290               See ../connector/usb-connector.yaml.
291
292           vbus-supply:
293             description: A phandle to the regulator supplying the VBUS
294               voltage.
295
296         dependencies:
297           usb-role-switch: [ connector ]
298
299       usb2-2:
300         type: object
301         additionalProperties: false
302         properties:
303           # no need to further describe this because the connector will
304           # match on gpio-usb-b-connector or usb-b-connector and cause
305           # that binding to be selected for the subnode
306           connector:
307             type: object
308
309           mode:
310             description: A string that determines the mode in which to
311               run the port.
312             $ref: /schemas/types.yaml#/definitions/string
313             enum: [ host, peripheral, otg ]
314
315           nvidia,internal:
316             description: A boolean property whose presence determines
317               that a port is internal. In the absence of this property
318               the port is considered to be external.
319             $ref: /schemas/types.yaml#/definitions/flag
320
321           usb-role-switch:
322             description: |
323               A boolean property whole presence indicates that the port
324               supports OTG or peripheral mode. If present, the port
325               supports switching between USB host and peripheral roles.
326               A connector must be added as a subnode in that case.
327
328               See ../connector/usb-connector.yaml.
329
330           vbus-supply:
331             description: A phandle to the regulator supplying the VBUS
332               voltage.
333
334         dependencies:
335           usb-role-switch: [ connector ]
336
337       usb2-3:
338         type: object
339         additionalProperties: false
340         properties:
341           # no need to further describe this because the connector will
342           # match on gpio-usb-b-connector or usb-b-connector and cause
343           # that binding to be selected for the subnode
344           connector:
345             type: object
346
347           mode:
348             description: A string that determines the mode in which to
349               run the port.
350             $ref: /schemas/types.yaml#/definitions/string
351             enum: [ host, peripheral, otg ]
352
353           nvidia,internal:
354             description: A boolean property whose presence determines
355               that a port is internal. In the absence of this property
356               the port is considered to be external.
357             $ref: /schemas/types.yaml#/definitions/flag
358
359           usb-role-switch:
360             description: |
361               A boolean property whole presence indicates that the port
362               supports OTG or peripheral mode. If present, the port
363               supports switching between USB host and peripheral roles.
364               A connector must be added as a subnode in that case.
365
366               See ../connector/usb-connector.yaml.
367
368           vbus-supply:
369             description: A phandle to the regulator supplying the VBUS
370               voltage.
371
372         dependencies:
373           usb-role-switch: [ connector ]
374
375       usb3-0:
376         type: object
377         additionalProperties: false
378         properties:
379           maximum-speed:
380             description: A string property that specifies the maximum
381               supported speed of a USB3 port.
382             $ref: /schemas/types.yaml#/definitions/string
383             oneOf:
384               - description: The USB3 port supports USB 3.1 Gen 2 speed.
385                   This is the default.
386                 const: super-speed-plus
387               - description: The USB3 port supports USB 3.1 Gen 1 speed
388                   only.
389                 const: super-speed
390
391           nvidia,internal:
392             description: A boolean property whose presence determines
393               that a port is internal. In the absence of this property
394               the port is considered to be external.
395             $ref: /schemas/types.yaml#/definitions/flag
396
397           nvidia,usb2-companion:
398             description: A single cell that specifies the physical port
399               number to map this super-speed USB port to. The range of
400               valid port numbers varies with the SoC generation.
401             $ref: /schemas/types.yaml#/definitions/uint32
402             enum: [ 0, 1, 2, 3 ]
403
404           vbus-supply:
405             description: A phandle to the regulator supplying the VBUS
406               voltage.
407
408       usb3-1:
409         type: object
410         additionalProperties: false
411         properties:
412           maximum-speed:
413             description: A string property that specifies the maximum
414               supported speed of a USB3 port.
415             $ref: /schemas/types.yaml#/definitions/string
416             oneOf:
417               - description: The USB3 port supports USB 3.1 Gen 2 speed.
418                   This is the default.
419                 const: super-speed-plus
420               - description: The USB3 port supports USB 3.1 Gen 1 speed
421                   only.
422                 const: super-speed
423
424           nvidia,internal:
425             description: A boolean property whose presence determines
426               that a port is internal. In the absence of this property
427               the port is considered to be external.
428             $ref: /schemas/types.yaml#/definitions/flag
429
430           nvidia,usb2-companion:
431             description: A single cell that specifies the physical port
432               number to map this super-speed USB port to. The range of
433               valid port numbers varies with the SoC generation.
434             $ref: /schemas/types.yaml#/definitions/uint32
435             enum: [ 0, 1, 2, 3 ]
436
437           vbus-supply:
438             description: A phandle to the regulator supplying the VBUS
439               voltage.
440
441       usb3-2:
442         type: object
443         additionalProperties: false
444         properties:
445           maximum-speed:
446             description: A string property that specifies the maximum
447               supported speed of a USB3 port.
448             $ref: /schemas/types.yaml#/definitions/string
449             oneOf:
450               - description: The USB3 port supports USB 3.1 Gen 2 speed.
451                   This is the default.
452                 const: super-speed-plus
453               - description: The USB3 port supports USB 3.1 Gen 1 speed
454                   only.
455                 const: super-speed
456
457           nvidia,internal:
458             description: A boolean property whose presence determines
459               that a port is internal. In the absence of this property
460               the port is considered to be external.
461             $ref: /schemas/types.yaml#/definitions/flag
462
463           nvidia,usb2-companion:
464             description: A single cell that specifies the physical port
465               number to map this super-speed USB port to. The range of
466               valid port numbers varies with the SoC generation.
467             $ref: /schemas/types.yaml#/definitions/uint32
468             enum: [ 0, 1, 2, 3 ]
469
470           vbus-supply:
471             description: A phandle to the regulator supplying the VBUS
472               voltage.
473
474       usb3-3:
475         type: object
476         additionalProperties: false
477         properties:
478           maximum-speed:
479             description: A string property that specifies the maximum
480               supported speed of a USB3 port.
481             $ref: /schemas/types.yaml#/definitions/string
482             oneOf:
483               - description: The USB3 port supports USB 3.1 Gen 2 speed.
484                   This is the default.
485                 const: super-speed-plus
486               - description: The USB3 port supports USB 3.1 Gen 1 speed
487                   only.
488                 const: super-speed
489
490           nvidia,internal:
491             description: A boolean property whose presence determines
492               that a port is internal. In the absence of this property
493               the port is considered to be external.
494             $ref: /schemas/types.yaml#/definitions/flag
495
496           nvidia,usb2-companion:
497             description: A single cell that specifies the physical port
498               number to map this super-speed USB port to. The range of
499               valid port numbers varies with the SoC generation.
500             $ref: /schemas/types.yaml#/definitions/uint32
501             enum: [ 0, 1, 2, 3 ]
502
503           vbus-supply:
504             description: A phandle to the regulator supplying the VBUS
505               voltage.
506
507 additionalProperties: false
508
509 required:
510   - compatible
511   - reg
512   - resets
513   - reset-names
514   - avdd-usb-supply
515   - vclamp-usb-supply
516
517 examples:
518   - |
519     #include <dt-bindings/clock/tegra194-clock.h>
520     #include <dt-bindings/gpio/tegra194-gpio.h>
521     #include <dt-bindings/interrupt-controller/arm-gic.h>
522     #include <dt-bindings/reset/tegra194-reset.h>
523
524     padctl@3520000 {
525         compatible = "nvidia,tegra194-xusb-padctl";
526         reg = <0x03520000 0x1000>,
527               <0x03540000 0x1000>;
528         reg-names = "padctl", "ao";
529         interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
530
531         resets = <&bpmp TEGRA194_RESET_XUSB_PADCTL>;
532         reset-names = "padctl";
533
534         avdd-usb-supply = <&vdd_usb_3v3>;
535         vclamp-usb-supply = <&vdd_1v8ao>;
536
537         pads {
538             usb2 {
539                 clocks = <&bpmp TEGRA194_CLK_USB2_TRK>;
540                 clock-names = "trk";
541
542                 lanes {
543                     usb2-0 {
544                         nvidia,function = "xusb";
545                         status = "disabled";
546                         #phy-cells = <0>;
547                     };
548
549                     usb2-1 {
550                         nvidia,function = "xusb";
551                         #phy-cells = <0>;
552                     };
553
554                     usb2-2 {
555                         nvidia,function = "xusb";
556                         status = "disabled";
557                         #phy-cells = <0>;
558                     };
559
560                     usb2-3 {
561                         nvidia,function = "xusb";
562                         #phy-cells = <0>;
563                     };
564                 };
565             };
566
567             usb3 {
568                 lanes {
569                     usb3-0 {
570                         nvidia,function = "xusb";
571                         #phy-cells = <0>;
572                     };
573
574                     usb3-1 {
575                         nvidia,function = "xusb";
576                         status = "disabled";
577                         #phy-cells = <0>;
578                     };
579
580                     usb3-2 {
581                         nvidia,function = "xusb";
582                         status = "disabled";
583                         #phy-cells = <0>;
584                     };
585
586                     usb3-3 {
587                         nvidia,function = "xusb";
588                         #phy-cells = <0>;
589                     };
590                 };
591             };
592         };
593
594         ports {
595             usb2-0 {
596                 status = "disabled";
597             };
598
599             usb2-1 {
600                 vbus-supply = <&vdd_5v0_sys>;
601                 mode = "host";
602             };
603
604             usb2-2 {
605                 status = "disabled";
606             };
607
608             usb2-3 {
609                 vbus-supply = <&vdd_5v_sata>;
610                 mode = "host";
611             };
612
613             usb3-0 {
614                 vbus-supply = <&vdd_5v0_sys>;
615                 nvidia,usb2-companion = <1>;
616             };
617
618             usb3-1 {
619                 status = "disabled";
620             };
621
622             usb3-2 {
623                 status = "disabled";
624             };
625
626             usb3-3 {
627                 maximum-speed = "super-speed";
628                 vbus-supply = <&vdd_5v0_sys>;
629                 nvidia,usb2-companion = <3>;
630             };
631         };
632     };