xref: /freebsd/sys/contrib/device-tree/Bindings/usb/nvidia,tegra234-xusb.yaml (revision cb7aa33ac6cd46a5434798e50363136e64f3ae98)
1*cb7aa33aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*cb7aa33aSEmmanuel Vadot%YAML 1.2
3*cb7aa33aSEmmanuel Vadot---
4*cb7aa33aSEmmanuel Vadot$id: http://devicetree.org/schemas/usb/nvidia,tegra234-xusb.yaml#
5*cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*cb7aa33aSEmmanuel Vadot
7*cb7aa33aSEmmanuel Vadottitle: NVIDIA Tegra234 xHCI controller
8*cb7aa33aSEmmanuel Vadot
9*cb7aa33aSEmmanuel Vadotmaintainers:
10*cb7aa33aSEmmanuel Vadot  - Thierry Reding <thierry.reding@gmail.com>
11*cb7aa33aSEmmanuel Vadot  - Jon Hunter <jonathanh@nvidia.com>
12*cb7aa33aSEmmanuel Vadot
13*cb7aa33aSEmmanuel Vadotdescription: |
14*cb7aa33aSEmmanuel Vadot  The Tegra xHCI controller supports both USB2 and USB3 interfaces exposed by
15*cb7aa33aSEmmanuel Vadot  the Tegra XUSB pad controller. The xHCI controller controls up to eight
16*cb7aa33aSEmmanuel Vadot  ports; there are four USB 2.0 ports and four USB 3.2 Gen1 x1 ports.
17*cb7aa33aSEmmanuel Vadot
18*cb7aa33aSEmmanuel Vadotproperties:
19*cb7aa33aSEmmanuel Vadot  compatible:
20*cb7aa33aSEmmanuel Vadot    const: nvidia,tegra234-xusb
21*cb7aa33aSEmmanuel Vadot
22*cb7aa33aSEmmanuel Vadot  reg:
23*cb7aa33aSEmmanuel Vadot    items:
24*cb7aa33aSEmmanuel Vadot      - description: xHCI host registers
25*cb7aa33aSEmmanuel Vadot      - description: XUSB FPCI registers
26*cb7aa33aSEmmanuel Vadot      - description: XUSB bar2 registers
27*cb7aa33aSEmmanuel Vadot
28*cb7aa33aSEmmanuel Vadot  reg-names:
29*cb7aa33aSEmmanuel Vadot    items:
30*cb7aa33aSEmmanuel Vadot      - const: hcd
31*cb7aa33aSEmmanuel Vadot      - const: fpci
32*cb7aa33aSEmmanuel Vadot      - const: bar2
33*cb7aa33aSEmmanuel Vadot
34*cb7aa33aSEmmanuel Vadot  interrupts:
35*cb7aa33aSEmmanuel Vadot    items:
36*cb7aa33aSEmmanuel Vadot      - description: xHCI host interrupt
37*cb7aa33aSEmmanuel Vadot      - description: mailbox interrupt
38*cb7aa33aSEmmanuel Vadot
39*cb7aa33aSEmmanuel Vadot  clocks:
40*cb7aa33aSEmmanuel Vadot    items:
41*cb7aa33aSEmmanuel Vadot      - description: XUSB host clock
42*cb7aa33aSEmmanuel Vadot      - description: XUSB Falcon source clock
43*cb7aa33aSEmmanuel Vadot      - description: XUSB SuperSpeed clock
44*cb7aa33aSEmmanuel Vadot      - description: XUSB SuperSpeed source clock
45*cb7aa33aSEmmanuel Vadot      - description: XUSB HighSpeed clock source
46*cb7aa33aSEmmanuel Vadot      - description: XUSB FullSpeed clock source
47*cb7aa33aSEmmanuel Vadot      - description: USB PLL
48*cb7aa33aSEmmanuel Vadot      - description: reference clock
49*cb7aa33aSEmmanuel Vadot      - description: I/O PLL
50*cb7aa33aSEmmanuel Vadot
51*cb7aa33aSEmmanuel Vadot  clock-names:
52*cb7aa33aSEmmanuel Vadot    items:
53*cb7aa33aSEmmanuel Vadot      - const: xusb_host
54*cb7aa33aSEmmanuel Vadot      - const: xusb_falcon_src
55*cb7aa33aSEmmanuel Vadot      - const: xusb_ss
56*cb7aa33aSEmmanuel Vadot      - const: xusb_ss_src
57*cb7aa33aSEmmanuel Vadot      - const: xusb_hs_src
58*cb7aa33aSEmmanuel Vadot      - const: xusb_fs_src
59*cb7aa33aSEmmanuel Vadot      - const: pll_u_480m
60*cb7aa33aSEmmanuel Vadot      - const: clk_m
61*cb7aa33aSEmmanuel Vadot      - const: pll_e
62*cb7aa33aSEmmanuel Vadot
63*cb7aa33aSEmmanuel Vadot  interconnects:
64*cb7aa33aSEmmanuel Vadot    items:
65*cb7aa33aSEmmanuel Vadot      - description: read client
66*cb7aa33aSEmmanuel Vadot      - description: write client
67*cb7aa33aSEmmanuel Vadot
68*cb7aa33aSEmmanuel Vadot  interconnect-names:
69*cb7aa33aSEmmanuel Vadot    items:
70*cb7aa33aSEmmanuel Vadot      - const: dma-mem # read
71*cb7aa33aSEmmanuel Vadot      - const: write
72*cb7aa33aSEmmanuel Vadot
73*cb7aa33aSEmmanuel Vadot  iommus:
74*cb7aa33aSEmmanuel Vadot    maxItems: 1
75*cb7aa33aSEmmanuel Vadot
76*cb7aa33aSEmmanuel Vadot  nvidia,xusb-padctl:
77*cb7aa33aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle
78*cb7aa33aSEmmanuel Vadot    description: phandle to the XUSB pad controller that is used to configure
79*cb7aa33aSEmmanuel Vadot      the USB pads used by the XHCI controller
80*cb7aa33aSEmmanuel Vadot
81*cb7aa33aSEmmanuel Vadot  phys:
82*cb7aa33aSEmmanuel Vadot    minItems: 1
83*cb7aa33aSEmmanuel Vadot    maxItems: 8
84*cb7aa33aSEmmanuel Vadot
85*cb7aa33aSEmmanuel Vadot  phy-names:
86*cb7aa33aSEmmanuel Vadot    minItems: 1
87*cb7aa33aSEmmanuel Vadot    maxItems: 8
88*cb7aa33aSEmmanuel Vadot    items:
89*cb7aa33aSEmmanuel Vadot      enum:
90*cb7aa33aSEmmanuel Vadot        - usb2-0
91*cb7aa33aSEmmanuel Vadot        - usb2-1
92*cb7aa33aSEmmanuel Vadot        - usb2-2
93*cb7aa33aSEmmanuel Vadot        - usb2-3
94*cb7aa33aSEmmanuel Vadot        - usb3-0
95*cb7aa33aSEmmanuel Vadot        - usb3-1
96*cb7aa33aSEmmanuel Vadot        - usb3-2
97*cb7aa33aSEmmanuel Vadot        - usb3-3
98*cb7aa33aSEmmanuel Vadot
99*cb7aa33aSEmmanuel Vadot  power-domains:
100*cb7aa33aSEmmanuel Vadot    items:
101*cb7aa33aSEmmanuel Vadot      - description: XUSBC power domain (for Host and USB 2.0)
102*cb7aa33aSEmmanuel Vadot      - description: XUSBA power domain (for SuperSpeed)
103*cb7aa33aSEmmanuel Vadot
104*cb7aa33aSEmmanuel Vadot  power-domain-names:
105*cb7aa33aSEmmanuel Vadot    items:
106*cb7aa33aSEmmanuel Vadot      - const: xusb_host
107*cb7aa33aSEmmanuel Vadot      - const: xusb_ss
108*cb7aa33aSEmmanuel Vadot
109*cb7aa33aSEmmanuel Vadot  dma-coherent: true
110*cb7aa33aSEmmanuel Vadot
111*cb7aa33aSEmmanuel VadotallOf:
112*cb7aa33aSEmmanuel Vadot  - $ref: usb-xhci.yaml
113*cb7aa33aSEmmanuel Vadot
114*cb7aa33aSEmmanuel VadotunevaluatedProperties: false
115*cb7aa33aSEmmanuel Vadot
116*cb7aa33aSEmmanuel Vadotexamples:
117*cb7aa33aSEmmanuel Vadot  - |
118*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/clock/tegra234-clock.h>
119*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
120*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/memory/tegra234-mc.h>
121*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/power/tegra234-powergate.h>
122*cb7aa33aSEmmanuel Vadot
123*cb7aa33aSEmmanuel Vadot    usb@3610000 {
124*cb7aa33aSEmmanuel Vadot        compatible = "nvidia,tegra234-xusb";
125*cb7aa33aSEmmanuel Vadot        reg = <0x03610000 0x40000>,
126*cb7aa33aSEmmanuel Vadot              <0x03600000 0x10000>,
127*cb7aa33aSEmmanuel Vadot              <0x03650000 0x10000>;
128*cb7aa33aSEmmanuel Vadot        reg-names = "hcd", "fpci", "bar2";
129*cb7aa33aSEmmanuel Vadot
130*cb7aa33aSEmmanuel Vadot        interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
131*cb7aa33aSEmmanuel Vadot                     <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
132*cb7aa33aSEmmanuel Vadot
133*cb7aa33aSEmmanuel Vadot        clocks = <&bpmp TEGRA234_CLK_XUSB_CORE_HOST>,
134*cb7aa33aSEmmanuel Vadot                 <&bpmp TEGRA234_CLK_XUSB_FALCON>,
135*cb7aa33aSEmmanuel Vadot                 <&bpmp TEGRA234_CLK_XUSB_CORE_SS>,
136*cb7aa33aSEmmanuel Vadot                 <&bpmp TEGRA234_CLK_XUSB_SS>,
137*cb7aa33aSEmmanuel Vadot                 <&bpmp TEGRA234_CLK_CLK_M>,
138*cb7aa33aSEmmanuel Vadot                 <&bpmp TEGRA234_CLK_XUSB_FS>,
139*cb7aa33aSEmmanuel Vadot                 <&bpmp TEGRA234_CLK_UTMIP_PLL>,
140*cb7aa33aSEmmanuel Vadot                 <&bpmp TEGRA234_CLK_CLK_M>,
141*cb7aa33aSEmmanuel Vadot                 <&bpmp TEGRA234_CLK_PLLE>;
142*cb7aa33aSEmmanuel Vadot        clock-names = "xusb_host", "xusb_falcon_src",
143*cb7aa33aSEmmanuel Vadot                      "xusb_ss", "xusb_ss_src", "xusb_hs_src",
144*cb7aa33aSEmmanuel Vadot                      "xusb_fs_src", "pll_u_480m", "clk_m",
145*cb7aa33aSEmmanuel Vadot                      "pll_e";
146*cb7aa33aSEmmanuel Vadot        interconnects = <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTR &emc>,
147*cb7aa33aSEmmanuel Vadot                        <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTW &emc>;
148*cb7aa33aSEmmanuel Vadot        interconnect-names = "dma-mem", "write";
149*cb7aa33aSEmmanuel Vadot        iommus = <&smmu_niso1 TEGRA234_SID_XUSB_HOST>;
150*cb7aa33aSEmmanuel Vadot
151*cb7aa33aSEmmanuel Vadot        power-domains = <&bpmp TEGRA234_POWER_DOMAIN_XUSBC>,
152*cb7aa33aSEmmanuel Vadot                        <&bpmp TEGRA234_POWER_DOMAIN_XUSBA>;
153*cb7aa33aSEmmanuel Vadot        power-domain-names = "xusb_host", "xusb_ss";
154*cb7aa33aSEmmanuel Vadot
155*cb7aa33aSEmmanuel Vadot        nvidia,xusb-padctl = <&xusb_padctl>;
156*cb7aa33aSEmmanuel Vadot
157*cb7aa33aSEmmanuel Vadot        phys = <&pad_lanes_usb2_0>;
158*cb7aa33aSEmmanuel Vadot        phy-names = "usb2-0";
159*cb7aa33aSEmmanuel Vadot    };
160