Linux USB
 help / color / mirror / Atom feed
* [PATCH 0/8] Enable USB host functions on Jetson AGX Thor
@ 2026-06-29  9:33 Wayne Chang
  2026-06-29  9:33 ` [PATCH 1/8] dt-bindings: phy: tegra-xusb: Add support for Tegra264 Wayne Chang
                   ` (7 more replies)
  0 siblings, 8 replies; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:33 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree

Enable support for USB host functions on the Tegra264 Jetson AGX Thor
platform

Sing-Han Chen (1):
  phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking
    clock

Wayne Chang (7):
  dt-bindings: phy: tegra-xusb: Add support for Tegra264
  dt-bindings: usb: Add Tegra264 XUSB host support
  arm64: tegra: Enable XUSB host function on Jetson AGX Thor
  phy: tegra: xusb: Increase timeout for USB2_TRK_COMPLETED polling
  phy: tegra: xusb: Add Tegra264 support
  usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264
  usb: host: xhci-tegra: Add Tegra264 XHCI support

 .../phy/nvidia,tegra194-xusb-padctl.yaml      |   1 +
 .../bindings/usb/nvidia,tegra234-xusb.yaml    | 115 +++++++++----
 .../arm64/boot/dts/nvidia/tegra264-p3834.dtsi |  50 ++++++
 .../dts/nvidia/tegra264-p4071-0000+p3834.dtsi |  95 +++++++++++
 arch/arm64/boot/dts/nvidia/tegra264.dtsi      | 154 ++++++++++++++++++
 drivers/phy/tegra/Makefile                    |   1 +
 drivers/phy/tegra/xusb-tegra186.c             |  30 +++-
 drivers/phy/tegra/xusb.c                      |   6 +
 drivers/phy/tegra/xusb.h                      |   3 +
 drivers/usb/host/xhci-tegra.c                 |  37 +++++
 10 files changed, 454 insertions(+), 38 deletions(-)


base-commit: dc59e4fea9d83f03bad6bddf3fa2e52491777482
-- 
2.25.1


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

* [PATCH 1/8] dt-bindings: phy: tegra-xusb: Add support for Tegra264
  2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
@ 2026-06-29  9:33 ` Wayne Chang
  2026-06-29 15:19   ` Conor Dooley
  2026-06-29  9:34 ` [PATCH 2/8] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:33 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree

Add the compatible string for the Tegra264 XUSB PHY.

Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
 .../devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml     | 1 +
 1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml b/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml
index d8de900a4fce..f6fe3c90b5b0 100644
--- a/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml
+++ b/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml
@@ -45,6 +45,7 @@ properties:
     enum:
       - nvidia,tegra194-xusb-padctl
       - nvidia,tegra234-xusb-padctl
+      - nvidia,tegra264-xusb-padctl
 
   reg:
     items:
-- 
2.25.1


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

* [PATCH 2/8] dt-bindings: usb: Add Tegra264 XUSB host support
  2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
  2026-06-29  9:33 ` [PATCH 1/8] dt-bindings: phy: tegra-xusb: Add support for Tegra264 Wayne Chang
@ 2026-06-29  9:34 ` Wayne Chang
  2026-06-29 15:21   ` Conor Dooley
  2026-06-29  9:34 ` [PATCH 3/8] arm64: tegra: Enable XUSB host function on Jetson AGX Thor Wayne Chang
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:34 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree

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 <waynec@nvidia.com>
---
 .../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
-
   clocks:
     items:
       - description: XUSB host clock
@@ -96,9 +67,6 @@ properties:
       - const: dma-mem # read
       - const: write
 
-  iommus:
-    maxItems: 1
-
   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


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

* [PATCH 3/8] arm64: tegra: Enable XUSB host function on Jetson AGX Thor
  2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
  2026-06-29  9:33 ` [PATCH 1/8] dt-bindings: phy: tegra-xusb: Add support for Tegra264 Wayne Chang
  2026-06-29  9:34 ` [PATCH 2/8] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
@ 2026-06-29  9:34 ` Wayne Chang
  2026-06-29  9:34 ` [PATCH 4/8] phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking clock Wayne Chang
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:34 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree

This commit enables XUSB host and pad controller on Jetson AGX Thor.

Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
 .../arm64/boot/dts/nvidia/tegra264-p3834.dtsi |  50 ++++++
 .../dts/nvidia/tegra264-p4071-0000+p3834.dtsi |  95 +++++++++++
 arch/arm64/boot/dts/nvidia/tegra264.dtsi      | 154 ++++++++++++++++++
 3 files changed, 299 insertions(+)

diff --git a/arch/arm64/boot/dts/nvidia/tegra264-p3834.dtsi b/arch/arm64/boot/dts/nvidia/tegra264-p3834.dtsi
index 7e2c3e66c2ab..61802334452e 100644
--- a/arch/arm64/boot/dts/nvidia/tegra264-p3834.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra264-p3834.dtsi
@@ -35,4 +35,54 @@ cmdqv@6200000 {
 			status = "okay";
 		};
 	};
+
+	bus@a800000000 {
+		padctl@8680000 {
+			vclamp-usb-supply = <&vdd_ao_1v8>;
+			avdd-usb-supply = <&vdd_ao_3v3>;
+
+			ports {
+				usb2-0 {
+					vbus-supply = <&vdd_5v0_sys>;
+				};
+
+				usb2-1 {
+					vbus-supply = <&vdd_5v0_sys>;
+				};
+
+				usb2-2 {
+					vbus-supply = <&vdd_5v0_sys>;
+				};
+
+				usb2-3 {
+					vbus-supply = <&vdd_5v0_sys>;
+				};
+			};
+		};
+	};
+
+	vdd_5v0_sys: regulator-vdd-5v0-sys {
+		compatible = "regulator-fixed";
+		regulator-name = "VIN_SYS_5V0";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		regulator-always-on;
+		regulator-boot-on;
+	};
+
+	vdd_ao_1v8: regulator-vdd-1v8-ao {
+		compatible = "regulator-fixed";
+		regulator-name = "vdd-AO-1v8";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		regulator-always-on;
+	};
+
+	vdd_ao_3v3: regulator-vdd-3v3-ao {
+		compatible = "regulator-fixed";
+		regulator-name = "vdd-AO-3v3";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-always-on;
+	};
 };
diff --git a/arch/arm64/boot/dts/nvidia/tegra264-p4071-0000+p3834.dtsi b/arch/arm64/boot/dts/nvidia/tegra264-p4071-0000+p3834.dtsi
index 45f8df9bbfd6..9d6d0c31f881 100644
--- a/arch/arm64/boot/dts/nvidia/tegra264-p4071-0000+p3834.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra264-p4071-0000+p3834.dtsi
@@ -9,4 +9,99 @@ aliases {
 	chosen {
 		stdout-path = "serial0:115200n8";
 	};
+
+	bus@a800000000 {
+		padctl@8680000 {
+			status = "okay";
+
+			pads {
+				usb2 {
+					lanes {
+						usb2-0 {
+							status = "okay";
+						};
+
+						usb2-1 {
+							status = "okay";
+						};
+
+						usb2-2 {
+							status = "okay";
+						};
+
+						usb2-3 {
+							status = "okay";
+						};
+					};
+				};
+
+				usb3 {
+					lanes {
+						usb3-0 {
+							status = "okay";
+						};
+
+						usb3-1 {
+							status = "okay";
+						};
+
+						usb3-2 {
+							status = "okay";
+						};
+					};
+				};
+			};
+
+			ports {
+				usb2-0 {
+					mode = "host";
+					status = "okay";
+				};
+
+				usb2-1 {
+					mode = "host";
+					status = "okay";
+				};
+
+				usb2-2 {
+					mode = "host";
+					status = "okay";
+				};
+
+				usb2-3 {
+					mode = "host";
+					status = "okay";
+				};
+
+				usb3-0 {
+					nvidia,usb2-companion = <1>;
+					status = "okay";
+				};
+
+				usb3-1 {
+					nvidia,usb2-companion = <0>;
+					status = "okay";
+				};
+
+				usb3-2 {
+					nvidia,usb2-companion = <3>;
+					status = "okay";
+				};
+			};
+		};
+
+		usb@aa10000 {
+			status = "okay";
+
+			phys = <&{/bus@a800000000/padctl@8680000/pads/usb2/lanes/usb2-0}>,
+			       <&{/bus@a800000000/padctl@8680000/pads/usb2/lanes/usb2-1}>,
+			       <&{/bus@a800000000/padctl@8680000/pads/usb2/lanes/usb2-2}>,
+			       <&{/bus@a800000000/padctl@8680000/pads/usb2/lanes/usb2-3}>,
+			       <&{/bus@a800000000/padctl@8680000/pads/usb3/lanes/usb3-0}>,
+			       <&{/bus@a800000000/padctl@8680000/pads/usb3/lanes/usb3-1}>,
+			       <&{/bus@a800000000/padctl@8680000/pads/usb3/lanes/usb3-2}>;
+			phy-names = "usb2-0", "usb2-1", "usb2-2", "usb2-3",
+				    "usb3-0", "usb3-1", "usb3-2";
+		};
+	};
 };
diff --git a/arch/arm64/boot/dts/nvidia/tegra264.dtsi b/arch/arm64/boot/dts/nvidia/tegra264.dtsi
index 2d8e7e37830f..3433587dc572 100644
--- a/arch/arm64/boot/dts/nvidia/tegra264.dtsi
+++ b/arch/arm64/boot/dts/nvidia/tegra264.dtsi
@@ -4049,6 +4049,160 @@ pci@8480000 {
 			nvidia,bpmp = <&bpmp 5>;
 			status = "disabled";
 		};
+
+		xusb_padctl: padctl@8680000 {
+			compatible = "nvidia,tegra264-xusb-padctl";
+			reg = <0x00 0x8680000 0x00 0x20000>,
+			      <0x00 0x86a0000 0x00 0x10000>;
+			reg-names = "padctl", "ao";
+			interrupts = <GIC_SPI 4101 IRQ_TYPE_LEVEL_HIGH>;
+
+			resets = <&bpmp TEGRA264_RESET_XUSB1_PADCTL>;
+			reset-names = "padctl";
+
+			status = "disabled";
+
+			pads {
+				usb2 {
+					lanes {
+						usb2-0 {
+							nvidia,function = "xusb";
+							status = "disabled";
+							#phy-cells = <0>;
+						};
+
+						usb2-1 {
+							nvidia,function = "xusb";
+							status = "disabled";
+							#phy-cells = <0>;
+						};
+
+						usb2-2 {
+							nvidia,function = "xusb";
+							status = "disabled";
+							#phy-cells = <0>;
+						};
+
+						usb2-3 {
+							nvidia,function = "xusb";
+							status = "disabled";
+							#phy-cells = <0>;
+						};
+					};
+				};
+
+				usb3 {
+					lanes {
+						usb3-0 {
+							nvidia,function = "xusb";
+							status = "disabled";
+							#phy-cells = <0>;
+						};
+
+						usb3-1 {
+							nvidia,function = "xusb";
+							status = "disabled";
+							#phy-cells = <0>;
+						};
+
+						usb3-2 {
+							nvidia,function = "xusb";
+							status = "disabled";
+							#phy-cells = <0>;
+						};
+
+						usb3-3 {
+							nvidia,function = "xusb";
+							status = "disabled";
+							#phy-cells = <0>;
+						};
+					};
+				};
+			};
+
+			ports {
+				usb2-0 {
+					status = "disabled";
+				};
+
+				usb2-1 {
+					status = "disabled";
+				};
+
+				usb2-2 {
+					status = "disabled";
+				};
+
+				usb2-3 {
+					status = "disabled";
+				};
+
+				usb3-0 {
+					status = "disabled";
+				};
+
+				usb3-1 {
+					status = "disabled";
+				};
+
+				usb3-2 {
+					status = "disabled";
+				};
+
+				usb3-3 {
+					status = "disabled";
+				};
+			};
+		};
+
+		usb@aa10000 {
+			compatible = "nvidia,tegra264-xusb";
+			reg = <0x00 0xaa10000 0x00 0x40000>,
+			      <0x00 0xaa00000 0x00 0x10000>,
+			      <0x00 0xaa50000 0x00 0x10000>;
+			reg-names = "hcd", "fpci", "bar2";
+
+			interrupts-extended = <&gic GIC_SPI 952 IRQ_TYPE_LEVEL_HIGH>,
+						  <&gic GIC_SPI 4096 IRQ_TYPE_LEVEL_HIGH>,
+						  <&pmc 79 IRQ_TYPE_LEVEL_HIGH>,
+						  <&pmc 80 IRQ_TYPE_LEVEL_HIGH>,
+						  <&pmc 81 IRQ_TYPE_LEVEL_HIGH>,
+						  <&pmc 82 IRQ_TYPE_LEVEL_HIGH>,
+						  <&pmc 83 IRQ_TYPE_LEVEL_HIGH>,
+						  <&pmc 84 IRQ_TYPE_LEVEL_HIGH>,
+						  <&pmc 85 IRQ_TYPE_LEVEL_HIGH>,
+						  <&pmc 86 IRQ_TYPE_LEVEL_HIGH>;
+
+			clocks = <&bpmp TEGRA264_CLK_XUSB1_CORE_HOST>,
+				<&bpmp TEGRA264_CLK_XUSB1_FALCON>,
+				<&bpmp TEGRA264_CLK_XUSB1_CORE_SUPERSPEED>,
+				<&bpmp TEGRA264_CLK_XUSB1_SS>,
+				<&bpmp TEGRA264_CLK_OSC>,
+				<&bpmp TEGRA264_CLK_XUSB1_FS>,
+				<&bpmp TEGRA264_CLK_UTMI_PLL1>,
+				<&bpmp TEGRA264_CLK_OSC>,
+				<&bpmp TEGRA264_CLK_PLLE0>;
+			clock-names = "xusb_host", "xusb_falcon_src",
+				      "xusb_ss", "xusb_ss_src", "xusb_hs_src",
+				      "xusb_fs_src", "pll_u_480m", "clk_m",
+				      "pll_e";
+			interconnects = <&mc TEGRA264_MEMORY_CLIENT_XUSB_DEVR &emc>,
+					<&mc TEGRA264_MEMORY_CLIENT_XUSB_DEVW &emc>;
+			interconnect-names = "dma-mem", "write";
+			iommus = <&smmu1 TEGRA264_SID_XUSB_DEV>,
+				<&smmu1 TEGRA264_SID_XUSB_DEV1>,
+				<&smmu1 TEGRA264_SID_XUSB_DEV2>,
+				<&smmu1 TEGRA264_SID_XUSB_DEV3>,
+				<&smmu1 TEGRA264_SID_XUSB_DEV4>;
+
+			power-domains = <&bpmp TEGRA264_POWER_DOMAIN_XUSB_HOST>,
+					<&bpmp TEGRA264_POWER_DOMAIN_XUSB_SS>;
+			power-domain-names = "xusb_host", "xusb_ss";
+
+			nvidia,xusb-padctl = <&xusb_padctl>;
+			dma-coherent;
+			status = "disabled";
+		};
 	};
 
 	cpus {
-- 
2.25.1


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

* [PATCH 4/8] phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking clock
  2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
                   ` (2 preceding siblings ...)
  2026-06-29  9:34 ` [PATCH 3/8] arm64: tegra: Enable XUSB host function on Jetson AGX Thor Wayne Chang
@ 2026-06-29  9:34 ` Wayne Chang
  2026-06-29  9:34 ` [PATCH 5/8] phy: tegra: xusb: Increase timeout for USB2_TRK_COMPLETED polling Wayne Chang
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:34 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree, Sing-Han Chen

From: Sing-Han Chen <singhanc@nvidia.com>

The USB2 PAD tracking clock is an optional clock so use
devm_clk_get_optional() so a missing clock in devicetree is
represented as NULL and probe can continue. clk_prepare_enable()
and clk_disable_unprepare() already treat a NULL clock as a no-op.

Signed-off-by: Sing-Han Chen <singhanc@nvidia.com>
Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
 drivers/phy/tegra/xusb-tegra186.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c
index 60156aea2707..800be0cbb3f9 100644
--- a/drivers/phy/tegra/xusb-tegra186.c
+++ b/drivers/phy/tegra/xusb-tegra186.c
@@ -1045,7 +1045,7 @@ tegra186_usb2_pad_probe(struct tegra_xusb_padctl *padctl,
 		goto out;
 	}
 
-	priv->usb2_trk_clk = devm_clk_get(&pad->dev, "trk");
+	priv->usb2_trk_clk = devm_clk_get_optional(&pad->dev, "trk");
 	if (IS_ERR(priv->usb2_trk_clk)) {
 		err = PTR_ERR(priv->usb2_trk_clk);
 		dev_dbg(&pad->dev, "failed to get usb2 trk clock: %d\n", err);
-- 
2.25.1


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

* [PATCH 5/8] phy: tegra: xusb: Increase timeout for USB2_TRK_COMPLETED polling
  2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
                   ` (3 preceding siblings ...)
  2026-06-29  9:34 ` [PATCH 4/8] phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking clock Wayne Chang
@ 2026-06-29  9:34 ` Wayne Chang
  2026-06-29  9:34 ` [PATCH 6/8] phy: tegra: xusb: Add Tegra264 support Wayne Chang
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:34 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree

On Tegra264, the UTMI bias tracking circuit runs at 1 MHz and needs
more cycles for the biases to settle than on earlier SoCs such as
Tegra234. The existing timeout is therefore not long enough and can
cause spurious polling failures during bias pad power-on. Therefore,
increase the timeout to 200 cycles to support Tegra264 devices

Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
 drivers/phy/tegra/xusb-tegra186.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c
index 800be0cbb3f9..9c1bcd4a72ac 100644
--- a/drivers/phy/tegra/xusb-tegra186.c
+++ b/drivers/phy/tegra/xusb-tegra186.c
@@ -636,7 +636,7 @@ static void tegra186_utmi_bias_pad_power_on(struct tegra_xusb_padctl *padctl)
 
 	if (padctl->soc->poll_trk_completed) {
 		err = padctl_readl_poll(padctl, XUSB_PADCTL_USB2_BIAS_PAD_CTL1,
-					USB2_TRK_COMPLETED, USB2_TRK_COMPLETED, 100);
+					USB2_TRK_COMPLETED, USB2_TRK_COMPLETED, 200);
 		if (err) {
 			/* The failure with polling on trk complete will not
 			 * cause the failure of powering on the bias pad.
-- 
2.25.1


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

* [PATCH 6/8] phy: tegra: xusb: Add Tegra264 support
  2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
                   ` (4 preceding siblings ...)
  2026-06-29  9:34 ` [PATCH 5/8] phy: tegra: xusb: Increase timeout for USB2_TRK_COMPLETED polling Wayne Chang
@ 2026-06-29  9:34 ` Wayne Chang
  2026-06-29  9:34 ` [PATCH 7/8] usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264 Wayne Chang
  2026-06-29  9:34 ` [PATCH 8/8] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang
  7 siblings, 0 replies; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:34 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree

Add support for the XUSB pad controller for Tegra264. Most of
the Tegra264 XUSB PADCTL registers definition and programming sequence
are the same as Tegra234, Tegra264 XUSB PADCTL can share the same
driver with Tegra186, Tegra194, and Tegra234 XUSB PADCTL.

Signed-off-by: Wayne Chang <waynec@nvidia.com>
---
 drivers/phy/tegra/Makefile        |  1 +
 drivers/phy/tegra/xusb-tegra186.c | 26 +++++++++++++++++++++++++-
 drivers/phy/tegra/xusb.c          |  6 ++++++
 drivers/phy/tegra/xusb.h          |  3 +++
 4 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/drivers/phy/tegra/Makefile b/drivers/phy/tegra/Makefile
index eeeea72de117..33a695d4ed59 100644
--- a/drivers/phy/tegra/Makefile
+++ b/drivers/phy/tegra/Makefile
@@ -8,4 +8,5 @@ phy-tegra-xusb-$(CONFIG_ARCH_TEGRA_210_SOC) += xusb-tegra210.o
 phy-tegra-xusb-$(CONFIG_ARCH_TEGRA_186_SOC) += xusb-tegra186.o
 phy-tegra-xusb-$(CONFIG_ARCH_TEGRA_194_SOC) += xusb-tegra186.o
 phy-tegra-xusb-$(CONFIG_ARCH_TEGRA_234_SOC) += xusb-tegra186.o
+phy-tegra-xusb-$(CONFIG_ARCH_TEGRA_264_SOC) += xusb-tegra186.o
 obj-$(CONFIG_PHY_TEGRA194_P2U) += phy-tegra194-p2u.o
diff --git a/drivers/phy/tegra/xusb-tegra186.c b/drivers/phy/tegra/xusb-tegra186.c
index 9c1bcd4a72ac..3eb60ed09b68 100644
--- a/drivers/phy/tegra/xusb-tegra186.c
+++ b/drivers/phy/tegra/xusb-tegra186.c
@@ -1668,7 +1668,8 @@ EXPORT_SYMBOL_GPL(tegra186_xusb_padctl_soc);
 #endif
 
 #if IS_ENABLED(CONFIG_ARCH_TEGRA_194_SOC) || \
-	IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC)
+	IS_ENABLED(CONFIG_ARCH_TEGRA_234_SOC) || \
+	IS_ENABLED(CONFIG_ARCH_TEGRA_264_SOC)
 static const char * const tegra194_xusb_padctl_supply_names[] = {
 	"avdd-usb",
 	"vclamp-usb",
@@ -1753,6 +1754,29 @@ const struct tegra_xusb_padctl_soc tegra234_xusb_padctl_soc = {
 	.has_per_pad_term = true,
 };
 EXPORT_SYMBOL_GPL(tegra234_xusb_padctl_soc);
+
+const struct tegra_xusb_padctl_soc tegra264_xusb_padctl_soc = {
+	.num_pads = ARRAY_SIZE(tegra194_pads),
+	.pads = tegra194_pads,
+	.ports = {
+		.usb2 = {
+			.ops = &tegra186_usb2_port_ops,
+			.count = 4,
+		},
+		.usb3 = {
+			.ops = &tegra186_usb3_port_ops,
+			.count = 4,
+		},
+	},
+	.ops = &tegra186_xusb_padctl_ops,
+	.supply_names = tegra194_xusb_padctl_supply_names,
+	.num_supplies = ARRAY_SIZE(tegra194_xusb_padctl_supply_names),
+	.supports_gen2 = true,
+	.poll_trk_completed = true,
+	.trk_hw_mode = true,
+	.supports_lp_cfg_en = true,
+};
+EXPORT_SYMBOL_GPL(tegra264_xusb_padctl_soc);
 #endif
 
 MODULE_AUTHOR("JC Kuo <jckuo@nvidia.com>");
diff --git a/drivers/phy/tegra/xusb.c b/drivers/phy/tegra/xusb.c
index 9d74c0ecc31b..d0d0b252a205 100644
--- a/drivers/phy/tegra/xusb.c
+++ b/drivers/phy/tegra/xusb.c
@@ -77,6 +77,12 @@ static const struct of_device_id tegra_xusb_padctl_of_match[] = {
 		.compatible = "nvidia,tegra234-xusb-padctl",
 		.data = &tegra234_xusb_padctl_soc,
 	},
+#endif
+#if defined(CONFIG_ARCH_TEGRA_264_SOC)
+	{
+		.compatible = "nvidia,tegra264-xusb-padctl",
+		.data = &tegra264_xusb_padctl_soc,
+	},
 #endif
 	{ }
 };
diff --git a/drivers/phy/tegra/xusb.h b/drivers/phy/tegra/xusb.h
index 77609e54de66..d8d799d9e752 100644
--- a/drivers/phy/tegra/xusb.h
+++ b/drivers/phy/tegra/xusb.h
@@ -514,5 +514,8 @@ extern const struct tegra_xusb_padctl_soc tegra194_xusb_padctl_soc;
 #if defined(CONFIG_ARCH_TEGRA_234_SOC)
 extern const struct tegra_xusb_padctl_soc tegra234_xusb_padctl_soc;
 #endif
+#if defined(CONFIG_ARCH_TEGRA_264_SOC)
+extern const struct tegra_xusb_padctl_soc tegra264_xusb_padctl_soc;
+#endif
 
 #endif /* __PHY_TEGRA_XUSB_H */
-- 
2.25.1


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

* [PATCH 7/8] usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264
  2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
                   ` (5 preceding siblings ...)
  2026-06-29  9:34 ` [PATCH 6/8] phy: tegra: xusb: Add Tegra264 support Wayne Chang
@ 2026-06-29  9:34 ` Wayne Chang
  2026-06-29  9:34 ` [PATCH 8/8] usb: host: xhci-tegra: Add Tegra264 XHCI support Wayne Chang
  7 siblings, 0 replies; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:34 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree

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>
---
 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] 11+ messages in thread

* [PATCH 8/8] usb: host: xhci-tegra: Add Tegra264 XHCI support
  2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
                   ` (6 preceding siblings ...)
  2026-06-29  9:34 ` [PATCH 7/8] usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264 Wayne Chang
@ 2026-06-29  9:34 ` Wayne Chang
  7 siblings, 0 replies; 11+ messages in thread
From: Wayne Chang @ 2026-06-29  9:34 UTC (permalink / raw)
  To: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh
  Cc: waynec, linux-usb, linux-tegra, linux-kernel, linux-phy,
	devicetree

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>
---
 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] 11+ messages in thread

* Re: [PATCH 1/8] dt-bindings: phy: tegra-xusb: Add support for Tegra264
  2026-06-29  9:33 ` [PATCH 1/8] dt-bindings: phy: tegra-xusb: Add support for Tegra264 Wayne Chang
@ 2026-06-29 15:19   ` Conor Dooley
  0 siblings, 0 replies; 11+ messages in thread
From: Conor Dooley @ 2026-06-29 15:19 UTC (permalink / raw)
  To: Wayne Chang
  Cc: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh, linux-usb, linux-tegra,
	linux-kernel, linux-phy, devicetree

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

On Mon, Jun 29, 2026 at 05:33:59PM +0800, Wayne Chang wrote:
> Add the compatible string for the Tegra264 XUSB PHY.
> 
> Signed-off-by: Wayne Chang <waynec@nvidia.com>

Why is a fallback compatible not suitable here?


Thanks,
Conor.

> ---
>  .../devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml     | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml b/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml
> index d8de900a4fce..f6fe3c90b5b0 100644
> --- a/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml
> +++ b/Documentation/devicetree/bindings/phy/nvidia,tegra194-xusb-padctl.yaml
> @@ -45,6 +45,7 @@ properties:
>      enum:
>        - nvidia,tegra194-xusb-padctl
>        - nvidia,tegra234-xusb-padctl
> +      - nvidia,tegra264-xusb-padctl
>  
>    reg:
>      items:
> -- 
> 2.25.1
> 

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

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

* Re: [PATCH 2/8] dt-bindings: usb: Add Tegra264 XUSB host support
  2026-06-29  9:34 ` [PATCH 2/8] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
@ 2026-06-29 15:21   ` Conor Dooley
  0 siblings, 0 replies; 11+ messages in thread
From: Conor Dooley @ 2026-06-29 15:21 UTC (permalink / raw)
  To: Wayne Chang
  Cc: mathias.nyman, vkoul, neil.armstrong, robh, krzk+dt, conor+dt,
	gregkh, thierry.reding, jonathanh, linux-usb, linux-tegra,
	linux-kernel, linux-phy, devicetree

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

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 <waynec@nvidia.com>
> ---
>  .../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
> 

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

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

end of thread, other threads:[~2026-06-29 15:21 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-29  9:33 [PATCH 0/8] Enable USB host functions on Jetson AGX Thor Wayne Chang
2026-06-29  9:33 ` [PATCH 1/8] dt-bindings: phy: tegra-xusb: Add support for Tegra264 Wayne Chang
2026-06-29 15:19   ` Conor Dooley
2026-06-29  9:34 ` [PATCH 2/8] dt-bindings: usb: Add Tegra264 XUSB host support Wayne Chang
2026-06-29 15:21   ` Conor Dooley
2026-06-29  9:34 ` [PATCH 3/8] arm64: tegra: Enable XUSB host function on Jetson AGX Thor Wayne Chang
2026-06-29  9:34 ` [PATCH 4/8] phy: tegra: xusb: Use devm_clk_get_optional to fetch USB2 tracking clock Wayne Chang
2026-06-29  9:34 ` [PATCH 5/8] phy: tegra: xusb: Increase timeout for USB2_TRK_COMPLETED polling Wayne Chang
2026-06-29  9:34 ` [PATCH 6/8] phy: tegra: xusb: Add Tegra264 support Wayne Chang
2026-06-29  9:34 ` [PATCH 7/8] usb: host: xhci-tegra: Skip MBOX MSG_ENABLED on Tegra264 Wayne Chang
2026-06-29  9:34 ` [PATCH 8/8] 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