On Mon, Jun 29, 2026 at 05:34:00PM +0800, Wayne Chang wrote: > Extend the Tegra234 XUSB host binding to cover Tegra264: > > - Add nvidia,tegra264-xusb compatible string > - Document optional USB wake interrupts for Tegra264 > - Document Tegra264 PMC wake event to port mapping > - Allow up to five IOMMU specifiers for the additional XUSB host > stream IDs > > Signed-off-by: Wayne Chang > --- > .../bindings/usb/nvidia,tegra234-xusb.yaml | 115 ++++++++++++------ > 1 file changed, 80 insertions(+), 35 deletions(-) > > diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra234-xusb.yaml b/Documentation/devicetree/bindings/usb/nvidia,tegra234-xusb.yaml > index ec0993497fbb..94b1dbe2b02f 100644 > --- a/Documentation/devicetree/bindings/usb/nvidia,tegra234-xusb.yaml > +++ b/Documentation/devicetree/bindings/usb/nvidia,tegra234-xusb.yaml > @@ -17,7 +17,9 @@ description: | > > properties: > compatible: > - const: nvidia,tegra234-xusb > + enum: > + - nvidia,tegra234-xusb > + - nvidia,tegra264-xusb > > reg: > items: > @@ -31,37 +33,6 @@ properties: > - const: fpci > - const: bar2 > > - interrupts: > - minItems: 2 > - items: > - - description: xHCI host interrupt > - - description: mailbox interrupt > - - description: USB wake event 0 > - - description: USB wake event 1 > - - description: USB wake event 2 > - - description: USB wake event 3 > - - description: USB wake event 4 > - - description: USB wake event 5 > - - description: USB wake event 6 > - description: | > - The first two interrupts are required for the USB host controller. The > - remaining USB wake event interrupts are optional. Each USB wake event is > - independent; it is not necessary to use all of these events on a > - platform. The USB host controller can function even if no wake-up events > - are defined. The USB wake event interrupts are handled by the Tegra PMC; > - hence, the interrupt controller for these is the PMC and the interrupt > - IDs correspond to the PMC wake event IDs. A complete list of wake event > - IDs is provided below, and this information is also present in the Tegra > - TRM document. > - > - PMC wake-up 76 for USB3 port 0 wakeup > - PMC wake-up 77 for USB3 port 1 wakeup > - PMC wake-up 78 for USB3 port 2 and port 3 wakeup > - PMC wake-up 79 for USB2 port 0 wakeup > - PMC wake-up 80 for USB2 port 1 wakeup > - PMC wake-up 81 for USB2 port 2 wakeup > - PMC wake-up 82 for USB2 port 3 wakeup > - Property definitions should remain at the top level, with the widest constraints and list of entries. Conditional sections should just apply restrictions. In this case, only one additional clock seems to be the difference, so conditional restrictions should suffice. > clocks: > items: > - description: XUSB host clock > @@ -96,9 +67,6 @@ properties: > - const: dma-mem # read > - const: write > > - iommus: > - maxItems: 1 Same with this, conditionally forbid it on the new platform but leave this here. pw-bot: changes-requested Thanks, Conor. > - > nvidia,xusb-padctl: > $ref: /schemas/types.yaml#/definitions/phandle > description: phandle to the XUSB pad controller that is used to configure > @@ -137,6 +105,83 @@ properties: > allOf: > - $ref: usb-xhci.yaml > > + - if: > + properties: > + compatible: > + contains: > + enum: > + - nvidia,tegra234-xusb > + then: > + properties: > + interrupts: > + minItems: 2 > + description: | > + The first two interrupts are required for the USB host controller. > + The remaining USB wake event interrupts are optional. Each USB wake > + event is independent; it is not necessary to use all of these events > + on a platform. The USB host controller can function even if no > + wake-up events are defined. The USB wake event interrupts are > + handled by the Tegra PMC; hence, the interrupt controller for these > + is the PMC and the interrupt IDs correspond to the PMC wake event > + IDs. > + > + PMC wake-up 76 for USB3 port 0 wakeup > + PMC wake-up 77 for USB3 port 1 wakeup > + PMC wake-up 78 for USB3 port 2 and port 3 wakeup > + PMC wake-up 79 for USB2 port 0 wakeup > + PMC wake-up 80 for USB2 port 1 wakeup > + PMC wake-up 81 for USB2 port 2 wakeup > + PMC wake-up 82 for USB2 port 3 wakeup > + items: > + - description: xHCI host interrupt > + - description: mailbox interrupt > + - description: USB wake event 0 > + - description: USB wake event 1 > + - description: USB wake event 2 > + - description: USB wake event 3 > + - description: USB wake event 4 > + - description: USB wake event 5 > + - description: USB wake event 6 > + iommus: > + maxItems: 1 > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - nvidia,tegra264-xusb > + then: > + properties: > + interrupts: > + minItems: 2 > + description: | > + Same as Tegra234, with one additional optional USB wake event > + interrupt. USB3 port 2 and port 3 each have a dedicated wake event > + interrupt on Tegra264. > + > + PMC wake-up 79 for USB3 port 0 wakeup > + PMC wake-up 80 for USB3 port 1 wakeup > + PMC wake-up 81 for USB3 port 2 wakeup > + PMC wake-up 82 for USB3 port 3 wakeup > + PMC wake-up 83 for USB2 port 0 wakeup > + PMC wake-up 84 for USB2 port 1 wakeup > + PMC wake-up 85 for USB2 port 2 wakeup > + PMC wake-up 86 for USB2 port 3 wakeup > + items: > + - description: xHCI host interrupt > + - description: mailbox interrupt > + - description: USB wake event 0 > + - description: USB wake event 1 > + - description: USB wake event 2 > + - description: USB wake event 3 > + - description: USB wake event 4 > + - description: USB wake event 5 > + - description: USB wake event 6 > + - description: USB wake event 7 > + iommus: > + maxItems: 5 > + > unevaluatedProperties: false > > examples: > -- > 2.25.1 >