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 = <µ_b>;
0197 phy-names = "usb2-0";
0198
0199 avddio-usb-supply = <&vdd_pex_1v05>;
0200 hvdd-usb-supply = <&vdd_3v3_sys>;
0201 };