Linux USB
 help / color / mirror / Atom feed
* [PATCH V3 0/3] usb: host: xhci-tegra: Add Tegra264 XHCI support
@ 2026-09-03  7:45 Wayne Chang
  2026-09-03  7:45 ` [PATCH V3 1/3] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Wayne Chang @ 2026-09-03  7:45 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Mathias Nyman, Thierry Reding,
	Jonathan Hunter, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: linux-usb, devicetree, linux-tegra, linux-kernel, Wayne Chang

Add Tegra264 support to the Tegra XUSB host (xhci-tegra) driver and
its binding, as part of enabling USB host functions on the Tegra264
Jetson AGX Thor platform.

This series was previously posted as part of a single 8-patch series
covering phy, USB host and arm64 DTS changes together [1]. Per review
feedback, it has been split by subsystem so each maintainer can pick
up only what belongs to their tree:

- usb: host: xhci-tegra + its dt-bindings/usb: this series
- phy: tegra: xusb + its dt-bindings/phy: separate series [2], sent
  ahead of this one
- arm64: tegra DTS enablement: separate series, to be sent once the
  binding patches from this series and [2] have landed, since it
  depends on both

Patch 1/3 (dt-bindings: usb) also addresses Krzysztof's V2 review
comments: the iommus entries are now listed individually, and Tegra264
gets its own allOf conditional pinning interrupts to 10 and iommus to 5,
instead of inheriting Tegra234's wider top-level bounds unconstrained.

[1] https://lore.kernel.org/linux-tegra/20260831185835.3732707-1-waynec@nvidia.com/
[2] https://lore.kernel.org/linux-tegra/20260903071937.533646-1-waynec@nvidia.com/

Wayne Chang (3):
  dt-bindings: usb: Add Tegra264 XUSB host support
  usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264
  usb: host: xhci-tegra: Add Tegra264 XHCI support

 .../bindings/usb/nvidia,tegra234-xusb.yaml    | 52 ++++++++++++++++++++---
 drivers/usb/host/xhci-tegra.c                 | 37 ++++++++++++++++
 2 files changed, 84 insertions(+), 5 deletions(-)


base-commit: 940de590b839f71d6dc846160534bf202401b8b7
--
2.25.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH V3 1/3] dt-bindings: usb: Add Tegra264 XUSB host support
  2026-09-03  7:45 [PATCH V3 0/3] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang
@ 2026-09-03  7:45 ` Wayne Chang
  2026-09-03 17:33   ` Conor Dooley
  2026-09-03  7:45 ` [PATCH V3 2/3] usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264 Wayne Chang
  2026-09-03  7:45 ` [PATCH V3 3/3] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang
  2 siblings, 1 reply; 5+ messages in thread
From: Wayne Chang @ 2026-09-03  7:45 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Mathias Nyman, Thierry Reding,
	Jonathan Hunter, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: linux-usb, devicetree, linux-tegra, linux-kernel, Wayne Chang

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
- List the up to five IOMMU specifiers for the additional XUSB host
  stream IDs, since their order is now significant
- Constrain interrupts and iommus counts for both Tegra234 and
  Tegra264 via allOf conditionals, since each SoC wires up a fixed
  number of wake interrupts and stream IDs

Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
V2 -> V3: List the iommus entries instead of just bounding minItems/
maxItems, and clarify that entries 1-4 correspond to XHCI virtual
functions 1-4. Add an allOf conditional that also constrains Tegra264
to interrupts maxItems 10 and iommus minItems 5, instead of leaving
Tegra264 with the same flexible top-level bounds as Tegra234.

V1 -> V2: Property definitions are back at the top level with the widest
constraints, The allOf conditional only tightens Tegra234 to interrupts
maxItems 9 and iommus maxItems 1.

 .../bindings/usb/nvidia,tegra234-xusb.yaml    | 52 +++++++++++++++++++++---
 1 file changed, 47 insertions(+), 5 deletions(-)

diff --git a/Documentation/devicetree/bindings/usb/nvidia,tegra234-xusb.yaml b/Documentation/devicetree/bindings/usb/nvidia,tegra234-xusb.yaml
index ec0993497fbb..71e01701ae2c 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:
@@ -43,6 +45,7 @@ properties:
       - description: USB wake event 4
       - description: USB wake event 5
       - description: USB wake event 6
+      - description: USB wake event 7
     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
@@ -50,10 +53,9 @@ properties:
       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.
+      IDs correspond to the PMC wake event IDs.

+      Tegra234 PMC wake events:
         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
@@ -62,6 +64,16 @@ properties:
         PMC wake-up 81 for USB2 port 2 wakeup
         PMC wake-up 82 for USB2 port 3 wakeup

+      Tegra264 PMC wake events:
+        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
+
   clocks:
     items:
       - description: XUSB host clock
@@ -97,7 +109,13 @@ properties:
       - const: write

   iommus:
-    maxItems: 1
+    minItems: 1
+    items:
+      - description: XUSB host stream ID
+      - description: XUSB host stream ID for virtual function 1
+      - description: XUSB host stream ID for virtual function 2
+      - description: XUSB host stream ID for virtual function 3
+      - description: XUSB host stream ID for virtual function 4

   nvidia,xusb-padctl:
     $ref: /schemas/types.yaml#/definitions/phandle
@@ -137,6 +155,30 @@ properties:
 allOf:
   - $ref: usb-xhci.yaml

+  - if:
+      properties:
+        compatible:
+          contains:
+            const: nvidia,tegra234-xusb
+    then:
+      properties:
+        interrupts:
+          maxItems: 9
+        iommus:
+          maxItems: 1
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: nvidia,tegra264-xusb
+    then:
+      properties:
+        interrupts:
+          maxItems: 10
+        iommus:
+          minItems: 5
+
 unevaluatedProperties: false

 examples:
--
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH V3 2/3] usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264
  2026-09-03  7:45 [PATCH V3 0/3] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang
  2026-09-03  7:45 ` [PATCH V3 1/3] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
@ 2026-09-03  7:45 ` Wayne Chang
  2026-09-03  7:45 ` [PATCH V3 3/3] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang
  2 siblings, 0 replies; 5+ messages in thread
From: Wayne Chang @ 2026-09-03  7:45 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Mathias Nyman, Thierry Reding,
	Jonathan Hunter, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: linux-usb, devicetree, linux-tegra, linux-kernel, Wayne Chang

Tegra264 XUSB does not use the firmware mailbox handshake to enable
controller messages (MBOX_CMD_MSG_ENABLED). Add a per-SoC flag and
short-circuit __tegra_xusb_enable_firmware_messages() so both probe
and resume avoid sending the command.

Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
V2 -> V3: No change
V1 -> V2: No change
 drivers/usb/host/xhci-tegra.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
index e7e6d569f1db..7d56f35ec9e7 100644
--- a/drivers/usb/host/xhci-tegra.c
+++ b/drivers/usb/host/xhci-tegra.c
@@ -250,6 +250,7 @@ struct tegra_xusb_soc {
 	bool otg_set_port_power;
 
 	bool has_bar2;
+	bool enable_firmware_messages;
 };
 
 struct tegra_xusb_context {
@@ -1260,6 +1261,9 @@ static int __tegra_xusb_enable_firmware_messages(struct tegra_xusb *tegra)
 	struct tegra_xusb_mbox_msg msg;
 	int err;
 
+	if (!tegra->soc->enable_firmware_messages)
+		return 0;
+
 	/* Enable firmware messages from controller. */
 	msg.cmd = MBOX_CMD_MSG_ENABLED;
 	msg.data = 0;
@@ -2580,6 +2584,7 @@ static const struct tegra_xusb_soc tegra124_soc = {
 		.owner = 0xf0,
 		.smi_intr = XUSB_CFG_ARU_SMI_INTR,
 	},
+	.enable_firmware_messages = true,
 };
 #if IS_ENABLED(CONFIG_ARCH_TEGRA_124_SOC) || IS_ENABLED(CONFIG_ARCH_TEGRA_132_SOC)
 MODULE_FIRMWARE("nvidia/tegra124/xusb.bin");
@@ -2621,6 +2626,7 @@ static const struct tegra_xusb_soc tegra210_soc = {
 		.owner = 0xf0,
 		.smi_intr = XUSB_CFG_ARU_SMI_INTR,
 	},
+	.enable_firmware_messages = true,
 };
 #if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
 MODULE_FIRMWARE("nvidia/tegra210/xusb.bin");
@@ -2670,6 +2676,7 @@ static const struct tegra_xusb_soc tegra186_soc = {
 		.smi_intr = XUSB_CFG_ARU_SMI_INTR,
 	},
 	.lpm_support = true,
+	.enable_firmware_messages = true,
 };
 
 static const char * const tegra194_supply_names[] = {
@@ -2704,6 +2711,7 @@ static const struct tegra_xusb_soc tegra194_soc = {
 		.smi_intr = XUSB_CFG_ARU_SMI_INTR,
 	},
 	.lpm_support = true,
+	.enable_firmware_messages = true,
 };
 #if IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC)
 MODULE_FIRMWARE("nvidia/tegra194/xusb.bin");
@@ -2741,6 +2749,7 @@ static const struct tegra_xusb_soc tegra234_soc = {
 	},
 	.lpm_support = true,
 	.has_bar2 = true,
+	.enable_firmware_messages = true,
 };
 
 static const struct of_device_id tegra_xusb_of_match[] = {
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH V3 3/3] usb: host: xhci-tegra: Add Tegra264 XHCI support
  2026-09-03  7:45 [PATCH V3 0/3] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang
  2026-09-03  7:45 ` [PATCH V3 1/3] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
  2026-09-03  7:45 ` [PATCH V3 2/3] usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264 Wayne Chang
@ 2026-09-03  7:45 ` Wayne Chang
  2 siblings, 0 replies; 5+ messages in thread
From: Wayne Chang @ 2026-09-03  7:45 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Mathias Nyman, Thierry Reding,
	Jonathan Hunter, Rob Herring, Krzysztof Kozlowski, Conor Dooley
  Cc: linux-usb, devicetree, linux-tegra, linux-kernel, Wayne Chang

This change adds Tegra264 XUSB host mode controller support.
The host controller is very similar to the existing Tegra234 XHCI,
except the number of max_num_wakes.

Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
V2 -> V3: No change
V1 -> V2: No change
 drivers/usb/host/xhci-tegra.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/usb/host/xhci-tegra.c b/drivers/usb/host/xhci-tegra.c
index 7d56f35ec9e7..9a55d5818efb 100644
--- a/drivers/usb/host/xhci-tegra.c
+++ b/drivers/usb/host/xhci-tegra.c
@@ -2752,12 +2752,40 @@ static const struct tegra_xusb_soc tegra234_soc = {
 	.enable_firmware_messages = true,
 };
 
+static const struct tegra_xusb_soc tegra264_soc = {
+	.supply_names = tegra194_supply_names,
+	.num_supplies = ARRAY_SIZE(tegra194_supply_names),
+	.phy_types = tegra194_phy_types,
+	.num_types = ARRAY_SIZE(tegra194_phy_types),
+	.max_num_wakes = 8,
+	.context = &tegra186_xusb_context,
+	.ports = {
+		.usb3 = { .offset = 0, .count = 4, },
+		.usb2 = { .offset = 4, .count = 4, },
+	},
+	.scale_ss_clock = false,
+	.has_ipfs = false,
+	.otg_reset_sspi = false,
+	.ops = &tegra234_ops,
+	.mbox = {
+		.cmd = XUSB_BAR2_ARU_MBOX_CMD,
+		.data_in = XUSB_BAR2_ARU_MBOX_DATA_IN,
+		.data_out = XUSB_BAR2_ARU_MBOX_DATA_OUT,
+		.owner = XUSB_BAR2_ARU_MBOX_OWNER,
+		.smi_intr = XUSB_BAR2_ARU_SMI_INTR,
+	},
+	.lpm_support = true,
+	.has_bar2 = true,
+	.enable_firmware_messages = false,
+};
+
 static const struct of_device_id tegra_xusb_of_match[] = {
 	{ .compatible = "nvidia,tegra124-xusb", .data = &tegra124_soc },
 	{ .compatible = "nvidia,tegra210-xusb", .data = &tegra210_soc },
 	{ .compatible = "nvidia,tegra186-xusb", .data = &tegra186_soc },
 	{ .compatible = "nvidia,tegra194-xusb", .data = &tegra194_soc },
 	{ .compatible = "nvidia,tegra234-xusb", .data = &tegra234_soc },
+	{ .compatible = "nvidia,tegra264-xusb", .data = &tegra264_soc },
 	{ },
 };
 MODULE_DEVICE_TABLE(of, tegra_xusb_of_match);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH V3 1/3] dt-bindings: usb: Add Tegra264 XUSB host support
  2026-09-03  7:45 ` [PATCH V3 1/3] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
@ 2026-09-03 17:33   ` Conor Dooley
  0 siblings, 0 replies; 5+ messages in thread
From: Conor Dooley @ 2026-09-03 17:33 UTC (permalink / raw)
  To: Wayne Chang
  Cc: Greg Kroah-Hartman, Mathias Nyman, Thierry Reding,
	Jonathan Hunter, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	linux-usb, devicetree, linux-tegra, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 75 bytes --]

Acked-by: Conor Dooley <conor.dooley@microchip.com>
pw-bot: not-applicable

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-09-03 17:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-03  7:45 [PATCH V3 0/3] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang
2026-09-03  7:45 ` [PATCH V3 1/3] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
2026-09-03 17:33   ` Conor Dooley
2026-09-03  7:45 ` [PATCH V3 2/3] usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264 Wayne Chang
2026-09-03  7:45 ` [PATCH V3 3/3] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox