Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: "http://devicetree.org/schemas/usb/nvidia,tegra-xudc.yaml#"
0005 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
0006 
0007 title: Device tree binding for NVIDIA Tegra XUSB device mode controller (XUDC)
0008 
0009 description:
0010   The Tegra XUDC controller supports both USB 2.0 HighSpeed/FullSpeed and
0011   USB 3.0 SuperSpeed protocols.
0012 
0013 maintainers:
0014   - Nagarjuna Kristam <nkristam@nvidia.com>
0015   - JC Kuo <jckuo@nvidia.com>
0016   - Thierry Reding <treding@nvidia.com>
0017 
0018 properties:
0019   compatible:
0020     items:
0021       - enum:
0022           - nvidia,tegra210-xudc # For Tegra210
0023           - nvidia,tegra186-xudc # For Tegra186
0024           - nvidia,tegra194-xudc # For Tegra194
0025 
0026   reg:
0027     minItems: 2
0028     items:
0029       - description: XUSB device controller registers
0030       - description: XUSB device PCI Config registers
0031       - description: XUSB device registers.
0032 
0033   reg-names:
0034     minItems: 2
0035     items:
0036       - const: base
0037       - const: fpci
0038       - const: ipfs
0039 
0040   interrupts:
0041     maxItems: 1
0042     description: Must contain the XUSB device interrupt.
0043 
0044   clocks:
0045     minItems: 4
0046     items:
0047       - description: Clock to enable core XUSB dev clock.
0048       - description: Clock to enable XUSB super speed clock.
0049       - description: Clock to enable XUSB super speed dev clock.
0050       - description: Clock to enable XUSB high speed dev clock.
0051       - description: Clock to enable XUSB full speed dev clock.
0052 
0053   clock-names:
0054     minItems: 4
0055     items:
0056       - const: dev
0057       - const: ss
0058       - const: ss_src
0059       - const: fs_src
0060       - const: hs_src
0061 
0062   interconnects:
0063     items:
0064       - description: memory read client
0065       - description: memory write client
0066 
0067   interconnect-names:
0068     items:
0069       - const: dma-mem # read
0070       - const: write
0071 
0072   iommus:
0073     maxItems: 1
0074 
0075   power-domains:
0076     items:
0077       - description: XUSBB(device) power-domain
0078       - description: XUSBA(superspeed) power-domain
0079 
0080   power-domain-names:
0081     items:
0082       - const: dev
0083       - const: ss
0084 
0085   nvidia,xusb-padctl:
0086     $ref: /schemas/types.yaml#/definitions/phandle
0087     description:
0088       phandle to the XUSB pad controller that is used to configure the USB pads
0089       used by the XUDC controller.
0090 
0091   phys:
0092     minItems: 1
0093     description:
0094       Must contain an entry for each entry in phy-names.
0095       See ../phy/phy-bindings.txt for details.
0096 
0097   phy-names:
0098     minItems: 1
0099     items:
0100       - const: usb2-0
0101       - const: usb2-1
0102       - const: usb2-2
0103       - const: usb2-3
0104       - const: usb3-0
0105       - const: usb3-1
0106       - const: usb3-2
0107       - const: usb3-3
0108 
0109   avddio-usb-supply:
0110     description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
0111 
0112   hvdd-usb-supply:
0113     description: USB controller power supply. Must supply 3.3 V.
0114 
0115 required:
0116   - compatible
0117   - reg
0118   - reg-names
0119   - interrupts
0120   - clocks
0121   - clock-names
0122   - power-domains
0123   - power-domain-names
0124   - nvidia,xusb-padctl
0125   - phys
0126   - phy-names
0127 
0128 allOf:
0129   - if:
0130       properties:
0131         compatible:
0132           contains:
0133             enum:
0134               - nvidia,tegra210-xudc
0135     then:
0136       properties:
0137         reg:
0138           minItems: 3
0139         reg-names:
0140           minItems: 3
0141         clocks:
0142           minItems: 5
0143         clock-names:
0144           minItems: 5
0145       required:
0146         - avddio-usb-supply
0147         - hvdd-usb-supply
0148 
0149   - if:
0150       properties:
0151         compatible:
0152           contains:
0153             enum:
0154               - nvidia,tegra186-xudc
0155               - nvidia,tegra194-xudc
0156     then:
0157       properties:
0158         reg:
0159           maxItems: 2
0160         reg-names:
0161           maxItems: 2
0162         clocks:
0163           maxItems: 4
0164         clock-names:
0165           maxItems: 4
0166 
0167 additionalProperties: false
0168 
0169 examples:
0170   - |
0171     #include <dt-bindings/clock/tegra210-car.h>
0172     #include <dt-bindings/gpio/tegra-gpio.h>
0173     #include <dt-bindings/interrupt-controller/arm-gic.h>
0174 
0175     usb@700d0000 {
0176         compatible = "nvidia,tegra210-xudc";
0177         reg = <0x700d0000 0x8000>,
0178               <0x700d8000 0x1000>,
0179               <0x700d9000 0x1000>;
0180         reg-names = "base", "fpci", "ipfs";
0181 
0182         interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
0183 
0184         clocks = <&tegra_car TEGRA210_CLK_XUSB_DEV>,
0185                  <&tegra_car TEGRA210_CLK_XUSB_SS>,
0186                  <&tegra_car TEGRA210_CLK_XUSB_SSP_SRC>,
0187                  <&tegra_car TEGRA210_CLK_XUSB_FS_SRC>,
0188                  <&tegra_car TEGRA210_CLK_XUSB_HS_SRC>;
0189         clock-names = "dev", "ss", "ss_src", "fs_src", "hs_src";
0190 
0191         power-domains = <&pd_xusbdev>, <&pd_xusbss>;
0192         power-domain-names = "dev", "ss";
0193 
0194         nvidia,xusb-padctl = <&padctl>;
0195 
0196         phys = <&micro_b>;
0197         phy-names = "usb2-0";
0198 
0199         avddio-usb-supply = <&vdd_pex_1v05>;
0200         hvdd-usb-supply = <&vdd_3v3_sys>;
0201     };