From: Sven Peter <sven@kernel.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Janne Grunau <j@jannau.net>, Neal Gompa <neal@gompa.dev>,
Andreas Noever <andreas.noever@gmail.com>,
Mika Westerberg <westeri@kernel.org>,
Yehezkel Bernat <YehezkelShB@gmail.com>,
Philipp Zabel <p.zabel@pengutronix.de>
Cc: Konrad Dybcio <konradybcio@kernel.org>,
linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, asahi@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
Sven Peter <sven@kernel.org>
Subject: [PATCH 04/19] dt-bindings: thunderbolt: Add Apple USB4/Thunderbolt NHI
Date: Sun, 30 Aug 2026 22:19:22 +0200 [thread overview]
Message-ID: <20260830-b4-apple-soc-tbt-v1-4-44bc9348683c@kernel.org> (raw)
In-Reply-To: <20260830-b4-apple-soc-tbt-v1-0-44bc9348683c@kernel.org>
The Native Host Interface (NHI) provides the TX and RX rings used by the
software connection manager on Apple Silicon SoCs.
The NHI is part of the ACIO host router and is exposed to the main SoC
bus while the ACIO co-processor is running.
T6000 and T6020 use one DART stream for the TX and RX control rings and
one shared by all other rings, which are used for XDomain connections.
This likely improves the isolation of those host-to-host connections.
The M3 generation uses a slightly insane set of 24 IOMMU entries. These
are probably one DART stream for each TX and RX ring.
Signed-off-by: Sven Peter <sven@kernel.org>
---
.../bindings/thunderbolt/apple,t8103-usb4-nhi.yaml | 151 +++++++++++++++++++++
MAINTAINERS | 2 +
2 files changed, 153 insertions(+)
diff --git a/Documentation/devicetree/bindings/thunderbolt/apple,t8103-usb4-nhi.yaml b/Documentation/devicetree/bindings/thunderbolt/apple,t8103-usb4-nhi.yaml
new file mode 100644
index 000000000000..a80c8db3ef51
--- /dev/null
+++ b/Documentation/devicetree/bindings/thunderbolt/apple,t8103-usb4-nhi.yaml
@@ -0,0 +1,151 @@
+# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/thunderbolt/apple,t8103-usb4-nhi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple Silicon USB4/Thunderbolt Native Host Interface (NHI)
+
+maintainers:
+ - Sven Peter <sven@kernel.org>
+
+description: |
+ On Apple Silicon SoCs the Native Host Interface (NHI) is part of the ACIO
+ host router. It provides the transmit and receive rings used by the software
+ connection manager.
+
+ The ACIO co-processor exposes its registers to the main SoC bus while it is
+ running. The NHI is therefore represented as a child of the ACIO node.
+
+properties:
+ compatible:
+ oneOf:
+ - const: apple,t8103-usb4-nhi
+ - items:
+ - enum:
+ - apple,t6000-usb4-nhi
+ - apple,t6020-usb4-nhi
+ - apple,t6030-usb4-nhi
+ - apple,t6031-usb4-nhi
+ - apple,t8112-usb4-nhi
+ - apple,t8122-usb4-nhi
+ - const: apple,t8103-usb4-nhi
+
+ reg:
+ items:
+ - description: NHI registers with the transmit and receive rings
+ - description:
+ Protocol Defined Field (PDF) bitmasks selecting which frames are
+ accepted by each receive ring
+
+ reg-names:
+ items:
+ - const: nhi
+ - const: pdf
+
+ interrupts:
+ description:
+ One interrupt for each of the 12 transmit rings followed by one for each
+ of the 12 receive rings.
+ maxItems: 24
+
+ interrupt-names:
+ items:
+ - const: txring0
+ - const: txring1
+ - const: txring2
+ - const: txring3
+ - const: txring4
+ - const: txring5
+ - const: txring6
+ - const: txring7
+ - const: txring8
+ - const: txring9
+ - const: txring10
+ - const: txring11
+ - const: rxring0
+ - const: rxring1
+ - const: rxring2
+ - const: rxring3
+ - const: rxring4
+ - const: rxring5
+ - const: rxring6
+ - const: rxring7
+ - const: rxring8
+ - const: rxring9
+ - const: rxring10
+ - const: rxring11
+
+ iommus:
+ minItems: 1
+ maxItems: 24
+ description: |
+ T8103 and T8112 use a single IOMMU for all DMA transactions.
+
+ T6000 and T6020 use two IOMMUs: The first is used for transmit ring 0
+ and receive ring 0 which carry control traffic. The second is shared by
+ all other rings which are only used for XDomain connections to other
+ hosts.
+
+ T6030, T6031 and T8122 use 24 IOMMUs. These are most likely one DART
+ stream for each of the 12 transmit and 12 receive rings.
+
+ apple,thunderbolt-drom:
+ $ref: /schemas/types.yaml#/definitions/uint8-array
+ description:
+ DROM of the host router built by the bootloader from Apple's Device Tree.
+
+ apple,tunable-nhi:
+ $ref: /schemas/types.yaml#/definitions/uint32-matrix
+ items:
+ items:
+ - description: Register offset
+ - description: Mask of bits to clear
+ - description: Bits to set
+ description: |
+ List of (register offset, mask, value) tuples copied from Apple's Device
+ Tree, converted by the bootloader and used to configure the NHI after
+ the co-processor has booted.
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - interrupts
+ - interrupt-names
+ - iommus
+ - apple,thunderbolt-drom
+
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - apple,t6030-usb4-nhi
+ - apple,t6031-usb4-nhi
+ - apple,t8122-usb4-nhi
+ then:
+ properties:
+ iommus:
+ minItems: 24
+ maxItems: 24
+ else:
+ if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - apple,t6000-usb4-nhi
+ - apple,t6020-usb4-nhi
+ then:
+ properties:
+ iommus:
+ minItems: 2
+ maxItems: 2
+ else:
+ properties:
+ iommus:
+ maxItems: 1
+
+additionalProperties: false
diff --git a/MAINTAINERS b/MAINTAINERS
index 3a19da74d00c..bb26036a043f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2658,6 +2658,7 @@ F: Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml
F: Documentation/devicetree/bindings/soc/apple/apple,t6000-pmgr-misc.yaml
F: Documentation/devicetree/bindings/spi/apple,spi.yaml
F: Documentation/devicetree/bindings/spmi/apple,spmi.yaml
+F: Documentation/devicetree/bindings/thunderbolt/apple,t8103-usb4-nhi.yaml
F: Documentation/devicetree/bindings/usb/apple,dwc3.yaml
F: Documentation/devicetree/bindings/watchdog/apple,wdt.yaml
F: Documentation/hwmon/macsmc-hwmon.rst
@@ -27215,6 +27216,7 @@ L: linux-usb@vger.kernel.org
S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/westeri/thunderbolt.git
F: Documentation/admin-guide/thunderbolt.rst
+F: Documentation/devicetree/bindings/thunderbolt/
F: drivers/thunderbolt/
F: include/linux/thunderbolt.h
--
2.55.0
next prev parent reply other threads:[~2026-08-30 20:19 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-30 20:19 [PATCH 00/19] Initial USB4/Thunderbolt support for Apple M1/M2/M3 SoCs Sven Peter
2026-08-30 20:19 ` [PATCH 01/19] dt-bindings: usb: Add thunderbolt-switch property Sven Peter
2026-08-30 20:19 ` [PATCH 02/19] usb: typec: Add thunderbolt switch Sven Peter
2026-08-30 20:30 ` sashiko-bot
2026-09-01 11:17 ` Heikki Krogerus
2026-09-01 18:53 ` Sven Peter
2026-08-30 20:19 ` [PATCH 03/19] usb: typec: tipd: Hook up Thunderbolt switch for CD321x Sven Peter
2026-08-30 20:36 ` sashiko-bot
2026-08-30 20:19 ` Sven Peter [this message]
2026-08-30 20:19 ` [PATCH 05/19] dt-bindings: thunderbolt: Add Apple USB4/Thunderbolt ACIO block Sven Peter
2026-08-30 20:31 ` sashiko-bot
2026-08-30 20:19 ` [PATCH 06/19] thunderbolt: Try reading host DROM from device tree first Sven Peter
2026-08-30 20:33 ` sashiko-bot
2026-09-01 8:48 ` Mika Westerberg
2026-08-30 20:19 ` [PATCH 07/19] thunderbolt: Don't read the UID if we already know it Sven Peter
2026-08-30 20:19 ` [PATCH 08/19] thunderbolt: Allocate ring HopID before requesting the ring interrupt Sven Peter
2026-08-30 20:32 ` sashiko-bot
2026-08-30 20:19 ` [PATCH 09/19] thunderbolt: Add ring_interrupt_active to tb_nhi_ops Sven Peter
2026-08-30 20:19 ` [PATCH 10/19] thunderbolt: Make the ring register layout configurable Sven Peter
2026-09-01 8:58 ` Mika Westerberg
2026-09-01 18:56 ` Sven Peter
2026-08-30 20:19 ` [PATCH 11/19] thunderbolt: Add ring_interrupt_mask to tb_nhi_ops Sven Peter
2026-08-30 20:19 ` [PATCH 12/19] thunderbolt: Add ring_configure " Sven Peter
2026-08-30 20:28 ` sashiko-bot
2026-08-30 20:19 ` [PATCH 13/19] thunderbolt: Add QUIRK_NO_DMA_PORT Sven Peter
2026-09-01 9:04 ` Mika Westerberg
2026-09-01 17:06 ` Sven Peter
2026-08-30 20:19 ` [PATCH 14/19] thunderbolt: Add QUIRK_NO_USB3_BW_ALLOC Sven Peter
2026-09-01 9:12 ` Mika Westerberg
2026-08-30 20:19 ` [PATCH 15/19] thunderbolt: Export symbols required by the Apple Silicon driver Sven Peter
2026-08-30 20:19 ` [PATCH 16/19] thunderbolt: Add Apple Silicon support Sven Peter
2026-08-30 20:39 ` sashiko-bot
2026-09-01 10:09 ` Mika Westerberg
2026-09-01 19:06 ` Sven Peter
2026-08-30 20:19 ` [PATCH 17/19] arm64: dts: apple: t8103: Add USB4 ACIO and NHI Sven Peter
2026-09-01 10:20 ` Mika Westerberg
2026-08-30 20:19 ` [PATCH 18/19] arm64: dts: apple: t8112: " Sven Peter
2026-08-30 20:39 ` sashiko-bot
2026-08-30 20:19 ` [PATCH 19/19] arm64: dts: apple: t60xx: " Sven Peter
2026-08-31 17:44 ` [PATCH 00/19] Initial USB4/Thunderbolt support for Apple M1/M2/M3 SoCs Joshua Peisach
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260830-b4-apple-soc-tbt-v1-4-44bc9348683c@kernel.org \
--to=sven@kernel.org \
--cc=YehezkelShB@gmail.com \
--cc=andreas.noever@gmail.com \
--cc=asahi@lists.linux.dev \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=j@jannau.net \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=neal@gompa.dev \
--cc=p.zabel@pengutronix.de \
--cc=robh@kernel.org \
--cc=westeri@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox