~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/phy/nvidia,tegra186-xusb-padctl.yaml

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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     };

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php