From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C35533F8BC; Sun, 30 Aug 2026 20:19:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788121185; cv=none; b=upUDiHb8OekxwqdeN8kLYBXt+cn4EUVEjdhEi0MsrrGx2D7Z/K2dygxWI+5W2HY/kVcKlXVvDKdNczp5m/1dX/w8b28Y3s2fYYdiwDhxItlLyNwJO9xNHq8k6DUX2IR4jjU75IaZ6yzYHET5gYVat0H9qP47cIr1rHziJ6rw3qQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788121185; c=relaxed/simple; bh=kvqEJzhyBP8e9k9bLDm5TDD8YdXBcUaHaKuYwtfBii0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eRVPmGeGr2i+PyuSap8Ub0WfnhEIOEGrxPF2uKkFMdewE/kLDwEelcOqKs3V+WDQ7m6x9Yp6jg0DMcCgBszRsgJK1GzxLcfk6nkPMd5ibPnHknRD2ep0HlL20ckOaTRYqCJATe8nx25Q2PDYhnnVrNWfuqhnvp3OqfOJ5EXinYM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Tk4ZibU7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Tk4ZibU7" Received: by smtp.kernel.org (Postfix) with ESMTPS id 35D8BC4AF54; Sun, 30 Aug 2026 20:19:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1788121185; bh=kvqEJzhyBP8e9k9bLDm5TDD8YdXBcUaHaKuYwtfBii0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Tk4ZibU7pvUC8NmMedzXP4mlWiGXkUFON1UXB4V4SeKm/4i2joO6Utimi1qg3EXo3 df6FZz79k1Hde+yUJixQkWq8+9IUMY8IHrfz390P9q5OYTovtrzdxrD9H6MyQRphAk NebfBxKNxbzymXlX5nqMwTuAyvMIAmuXKCo65JGPR4AcH3FGn4gENNEpxAnrz5yVQg C59ygsBSYWZVUiclbFou0ULher6smUUO9hfBf1sC3TdfheQ+4Tyoyvk442nUtnwMll hdobIlObQhYkSDVRMlnorxU6E9BaJ7IzV3Zh8qoW0f73twdVWqlZ1xAKQFaTS6aatu bLW9+JiHYa1nw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 16AFCC61DFD; Sun, 30 Aug 2026 20:19:45 +0000 (UTC) From: Sven Peter Date: Sun, 30 Aug 2026 22:19:37 +0200 Subject: [PATCH 19/19] arm64: dts: apple: t60xx: Add USB4 ACIO and NHI Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260830-b4-apple-soc-tbt-v1-19-44bc9348683c@kernel.org> References: <20260830-b4-apple-soc-tbt-v1-0-44bc9348683c@kernel.org> In-Reply-To: <20260830-b4-apple-soc-tbt-v1-0-44bc9348683c@kernel.org> To: Greg Kroah-Hartman , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Heikki Krogerus , Janne Grunau , Neal Gompa , Andreas Noever , Mika Westerberg , Yehezkel Bernat , Philipp Zabel Cc: Konrad Dybcio , 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 X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=45620; i=sven@kernel.org; h=from:subject:message-id; bh=kvqEJzhyBP8e9k9bLDm5TDD8YdXBcUaHaKuYwtfBii0=; b=owGbwMvMwCXmIlirolUq95LxtFoSQ9aUCTHWFT+W/cj8o8Is3z+/8ZPSHv0DAYaTcvzf+M77U vN3te3UjlIWBjEuBlkxRZbt++1Nnzx8I7h006X3MHNYmUCGMHBxCsBE3qxkZPg29yF75jEvucz1 OvuZSp5Mmhqk/GR7Ua7F4xKVM1K7Hz1l+Gdpef6k86QLF19dvDxB8ibrwiNqaxPEq5PZ9m3dWfO bx4YNAA== X-Developer-Key: i=sven@kernel.org; a=openpgp; fpr=A1E3E34A2B3C820DBC4955E5993B08092F131F93 X-Endpoint-Received: by B4 Relay for sven@kernel.org/default with auth_id=407 Add the ACIO host router, NHI, DART and mailbox nodes for the four ATC instances on each t600x and t602x die and connect the host routers to the Type-C connectors on the MacBook Pro (j314/j316 and j414/j416), Mac Studio (j375 and j475), Mac mini (j474) and Mac Pro (j180d) boards. Signed-off-by: Sven Peter --- arch/arm64/boot/dts/apple/t6002-j375d.dts | 67 +++++ arch/arm64/boot/dts/apple/t600x-dieX.dtsi | 384 +++++++++++++++++++++++++ arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi | 107 +++++++ arch/arm64/boot/dts/apple/t600x-j375.dtsi | 137 +++++++++ arch/arm64/boot/dts/apple/t6022-j180d.dts | 202 +++++++++++++ arch/arm64/boot/dts/apple/t6022-j475d.dts | 10 + arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi | 57 ++++ arch/arm64/boot/dts/apple/t602x-dieX.dtsi | 384 +++++++++++++++++++++++++ 8 files changed, 1348 insertions(+) diff --git a/arch/arm64/boot/dts/apple/t6002-j375d.dts b/arch/arm64/boot/dts/apple/t6002-j375d.dts index e6eb6b6c386d..c28f5c604550 100644 --- a/arch/arm64/boot/dts/apple/t6002-j375d.dts +++ b/arch/arm64/boot/dts/apple/t6002-j375d.dts @@ -18,6 +18,10 @@ / { aliases { atcphy4 = &atcphy0_die1; atcphy5 = &atcphy1_die1; + usb4-4-acio = &usb4_0_acio_die1; + usb4-4-nhi = &usb4_0_nhi_die1; + usb4-5-acio = &usb4_1_acio_die1; + usb4-5-nhi = &usb4_1_nhi_die1; }; }; @@ -52,6 +56,13 @@ typec4_connector_ss: endpoint { remote-endpoint = <&atcphy4_typec_lanes>; }; }; + + port@2 { + reg = <2>; + typec4_con_tbt: endpoint { + remote-endpoint = <&usb4_4_acio_tbt>; + }; + }; }; }; }; @@ -85,6 +96,13 @@ typec5_connector_ss: endpoint { remote-endpoint = <&atcphy5_typec_lanes>; }; }; + + port@2 { + reg = <2>; + typec5_con_tbt: endpoint { + remote-endpoint = <&usb4_5_acio_tbt>; + }; + }; }; }; }; @@ -186,8 +204,57 @@ atcphy5_usb3: endpoint { #include "hwmon-fan-dual.dtsi" +/* USB4 on die 1 */ +&usb4_0_acio_die1 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_4_acio_tbt: endpoint { + remote-endpoint = <&typec4_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_1_acio_die1 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_5_acio_tbt: endpoint { + remote-endpoint = <&typec5_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + /* delete unused USB nodes on die 1 */ +/delete-node/ &usb4_2_acio_die1; +/delete-node/ &usb4_2_mbox_die1; + +/delete-node/ &usb4_3_acio_die1; +/delete-node/ &usb4_3_mbox_die1; + /delete-node/ &dwc3_2_dart_0_die1; /delete-node/ &dwc3_2_dart_1_die1; /delete-node/ &dwc3_2_die1; diff --git a/arch/arm64/boot/dts/apple/t600x-dieX.dtsi b/arch/arm64/boot/dts/apple/t600x-dieX.dtsi index 9676d5127039..98867855454d 100644 --- a/arch/arm64/boot/dts/apple/t600x-dieX.dtsi +++ b/arch/arm64/boot/dts/apple/t600x-dieX.dtsi @@ -93,6 +93,22 @@ DIE_NODE(pinctrl_aop): pinctrl@293820000 { , , ; + + DIE_NODE(acio0_pins): acio0-pins { + pinmux = ; + }; + + DIE_NODE(acio1_pins): acio1-pins { + pinmux = ; + }; + + DIE_NODE(acio2_pins): acio2-pins { + pinmux = ; + }; + + DIE_NODE(acio3_pins): acio3-pins { + pinmux = ; + }; }; DIE_NODE(pinctrl_ap): pinctrl@39b028000 { @@ -120,6 +136,98 @@ DIE_NODE(pinctrl_ap): pinctrl@39b028000 { #interrupt-cells = <2>; }; + DIE_NODE(usb4_0_mbox): mailbox@701100000 { + compatible = "apple,t6000-m3-mailbox", + "apple,m3-mailbox-v2"; + reg = <0x7 0x01100000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + ; + interrupt-names = "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells = <0>; + }; + + DIE_NODE(usb4_0_acio): cio@701ac0000 { + compatible = "apple,t6000-usb4-acio", "apple,t8103-usb4-acio"; + reg = <0x7 0x01ac0000 0x0 0xc000>, + <0x7 0x01080000 0x0 0x20000>; + reg-names = "rc", "sram"; + + mboxes = <&DIE_NODE(usb4_0_mbox)>; + resets = <&DIE_NODE(cio_reset) 0>; + + power-domains = <&DIE_NODE(ps_atc0_cio)>, + <&DIE_NODE(ps_atc0_cio_pcie)>, + <&DIE_NODE(ps_atc0_cio_usb)>; + + thunderbolt-switch; + + pinctrl-0 = <&DIE_NODE(acio0_pins)>; + pinctrl-names = "default"; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x7 0x01000000 0x1000000>; + nonposted-mmio; + + DIE_NODE(usb4_0_dart): iommu@a80000 { + compatible = "apple,t6000-dart"; + reg = <0xa80000 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + }; + + DIE_NODE(usb4_0_nhi): nhi@f00000 { + reg = <0xf00000 0x100000>, + <0xdb0000 0x30004>; + reg-names = "nhi", "pdf"; + compatible = "apple,t6000-usb4-nhi", + "apple,t8103-usb4-nhi"; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = + "txring0", "txring1", "txring2", + "txring3", "txring4", "txring5", + "txring6", "txring7", "txring8", + "txring9", "txring10", "txring11", + "rxring0", "rxring1", "rxring2", + "rxring3", "rxring4", "rxring5", + "rxring6", "rxring7", "rxring8", + "rxring9", "rxring10", "rxring11"; + iommus = <&DIE_NODE(usb4_0_dart) 1>, + <&DIE_NODE(usb4_0_dart) 2>; + /* To be filled by the loader */ + apple,thunderbolt-drom = [00]; + }; + }; + DIE_NODE(dwc3_0): usb@702280000 { compatible = "apple,t6000-dwc3", "apple,t8103-dwc3"; reg = <0x7 0x02280000 0x0 0xcd00>, <0x7 0x0228cd00 0x0 0x3200>; @@ -173,6 +281,98 @@ DIE_NODE(atcphy0): phy@703000000 { power-domains = <&DIE_NODE(ps_atc0_usb)>; }; + DIE_NODE(usb4_1_mbox): mailbox@b01100000 { + compatible = "apple,t6000-m3-mailbox", + "apple,m3-mailbox-v2"; + reg = <0xb 0x01100000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + ; + interrupt-names = "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells = <0>; + }; + + DIE_NODE(usb4_1_acio): cio@b01ac0000 { + compatible = "apple,t6000-usb4-acio", "apple,t8103-usb4-acio"; + reg = <0xb 0x01ac0000 0x0 0xc000>, + <0xb 0x01080000 0x0 0x20000>; + reg-names = "rc", "sram"; + + mboxes = <&DIE_NODE(usb4_1_mbox)>; + resets = <&DIE_NODE(cio_reset) 1>; + + power-domains = <&DIE_NODE(ps_atc1_cio)>, + <&DIE_NODE(ps_atc1_cio_pcie)>, + <&DIE_NODE(ps_atc1_cio_usb)>; + + thunderbolt-switch; + + pinctrl-0 = <&DIE_NODE(acio1_pins)>; + pinctrl-names = "default"; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0xb 0x01000000 0x1000000>; + nonposted-mmio; + + DIE_NODE(usb4_1_dart): iommu@a80000 { + compatible = "apple,t6000-dart"; + reg = <0xa80000 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + }; + + DIE_NODE(usb4_1_nhi): nhi@f00000 { + reg = <0xf00000 0x100000>, + <0xdb0000 0x30004>; + reg-names = "nhi", "pdf"; + compatible = "apple,t6000-usb4-nhi", + "apple,t8103-usb4-nhi"; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = + "txring0", "txring1", "txring2", + "txring3", "txring4", "txring5", + "txring6", "txring7", "txring8", + "txring9", "txring10", "txring11", + "rxring0", "rxring1", "rxring2", + "rxring3", "rxring4", "rxring5", + "rxring6", "rxring7", "rxring8", + "rxring9", "rxring10", "rxring11"; + iommus = <&DIE_NODE(usb4_1_dart) 1>, + <&DIE_NODE(usb4_1_dart) 2>; + /* To be filled by the loader */ + apple,thunderbolt-drom = [00]; + }; + }; + DIE_NODE(dwc3_1): usb@b02280000 { compatible = "apple,t6000-dwc3", "apple,t8103-dwc3"; reg = <0xb 0x02280000 0x0 0xcd00>, <0xb 0x0228cd00 0x0 0x3200>; @@ -226,6 +426,98 @@ DIE_NODE(atcphy1): phy@b03000000 { power-domains = <&DIE_NODE(ps_atc1_usb)>; }; + DIE_NODE(usb4_2_mbox): mailbox@f01100000 { + compatible = "apple,t6000-m3-mailbox", + "apple,m3-mailbox-v2"; + reg = <0xf 0x01100000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + ; + interrupt-names = "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells = <0>; + }; + + DIE_NODE(usb4_2_acio): cio@f01ac0000 { + compatible = "apple,t6000-usb4-acio", "apple,t8103-usb4-acio"; + reg = <0xf 0x01ac0000 0x0 0xc000>, + <0xf 0x01080000 0x0 0x20000>; + reg-names = "rc", "sram"; + + mboxes = <&DIE_NODE(usb4_2_mbox)>; + resets = <&DIE_NODE(cio_reset) 2>; + + power-domains = <&DIE_NODE(ps_atc2_cio)>, + <&DIE_NODE(ps_atc2_cio_pcie)>, + <&DIE_NODE(ps_atc2_cio_usb)>; + + thunderbolt-switch; + + pinctrl-0 = <&DIE_NODE(acio2_pins)>; + pinctrl-names = "default"; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0xf 0x01000000 0x1000000>; + nonposted-mmio; + + DIE_NODE(usb4_2_dart): iommu@a80000 { + compatible = "apple,t6000-dart"; + reg = <0xa80000 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + }; + + DIE_NODE(usb4_2_nhi): nhi@f00000 { + reg = <0xf00000 0x100000>, + <0xdb0000 0x30004>; + reg-names = "nhi", "pdf"; + compatible = "apple,t6000-usb4-nhi", + "apple,t8103-usb4-nhi"; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = + "txring0", "txring1", "txring2", + "txring3", "txring4", "txring5", + "txring6", "txring7", "txring8", + "txring9", "txring10", "txring11", + "rxring0", "rxring1", "rxring2", + "rxring3", "rxring4", "rxring5", + "rxring6", "rxring7", "rxring8", + "rxring9", "rxring10", "rxring11"; + iommus = <&DIE_NODE(usb4_2_dart) 1>, + <&DIE_NODE(usb4_2_dart) 2>; + /* To be filled by the loader */ + apple,thunderbolt-drom = [00]; + }; + }; + DIE_NODE(dwc3_2): usb@f02280000 { compatible = "apple,t6000-dwc3", "apple,t8103-dwc3"; reg = <0xf 0x02280000 0x0 0xcd00>, <0xf 0x0228cd00 0x0 0x3200>; @@ -279,6 +571,98 @@ DIE_NODE(atcphy2): phy@f03000000 { power-domains = <&DIE_NODE(ps_atc2_usb)>; }; + DIE_NODE(usb4_3_mbox): mailbox@1301100000 { + compatible = "apple,t6000-m3-mailbox", + "apple,m3-mailbox-v2"; + reg = <0x13 0x01100000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + ; + interrupt-names = "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells = <0>; + }; + + DIE_NODE(usb4_3_acio): cio@1301ac0000 { + compatible = "apple,t6000-usb4-acio", "apple,t8103-usb4-acio"; + reg = <0x13 0x01ac0000 0x0 0xc000>, + <0x13 0x01080000 0x0 0x20000>; + reg-names = "rc", "sram"; + + mboxes = <&DIE_NODE(usb4_3_mbox)>; + resets = <&DIE_NODE(cio_reset) 3>; + + power-domains = <&DIE_NODE(ps_atc3_cio)>, + <&DIE_NODE(ps_atc3_cio_pcie)>, + <&DIE_NODE(ps_atc3_cio_usb)>; + + thunderbolt-switch; + + pinctrl-0 = <&DIE_NODE(acio3_pins)>; + pinctrl-names = "default"; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x13 0x01000000 0x1000000>; + nonposted-mmio; + + DIE_NODE(usb4_3_dart): iommu@a80000 { + compatible = "apple,t6000-dart"; + reg = <0xa80000 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <1>; + }; + + DIE_NODE(usb4_3_nhi): nhi@f00000 { + reg = <0xf00000 0x100000>, + <0xdb0000 0x30004>; + reg-names = "nhi", "pdf"; + compatible = "apple,t6000-usb4-nhi", + "apple,t8103-usb4-nhi"; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = + "txring0", "txring1", "txring2", + "txring3", "txring4", "txring5", + "txring6", "txring7", "txring8", + "txring9", "txring10", "txring11", + "rxring0", "rxring1", "rxring2", + "rxring3", "rxring4", "rxring5", + "rxring6", "rxring7", "rxring8", + "rxring9", "rxring10", "rxring11"; + iommus = <&DIE_NODE(usb4_3_dart) 1>, + <&DIE_NODE(usb4_3_dart) 2>; + /* To be filled by the loader */ + apple,thunderbolt-drom = [00]; + }; + }; + DIE_NODE(dwc3_3): usb@1302280000 { compatible = "apple,t6000-dwc3", "apple,t8103-dwc3"; reg = <0x13 0x02280000 0x0 0xcd00>, <0x13 0x0228cd00 0x0 0x3200>; diff --git a/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi b/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi index caded1636f3d..38b7d0c3a585 100644 --- a/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi +++ b/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi @@ -21,6 +21,12 @@ aliases { atcphy3 = &atcphy3; bluetooth0 = &bluetooth0; serial0 = &serial0; + usb4-0-acio = &usb4_0_acio; + usb4-0-nhi = &usb4_0_nhi; + usb4-1-acio = &usb4_1_acio; + usb4-1-nhi = &usb4_1_nhi; + usb4-2-acio = &usb4_2_acio; + usb4-2-nhi = &usb4_2_nhi; wifi0 = &wifi0; }; @@ -366,6 +372,107 @@ &atcphy3 { status = "disabled"; }; +&typec0 { + ports { + port@2 { + reg = <2>; + typec0_con_tbt: endpoint { + remote-endpoint = <&usb4_0_acio_tbt>; + }; + }; + }; +}; + +&typec1 { + ports { + port@2 { + reg = <2>; + typec1_con_tbt: endpoint { + remote-endpoint = <&usb4_1_acio_tbt>; + }; + }; + }; +}; + +&typec2 { + ports { + port@2 { + reg = <2>; + typec2_con_tbt: endpoint { + remote-endpoint = <&usb4_2_acio_tbt>; + }; + }; + }; +}; + +/* USB4 */ +&usb4_0_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_0_acio_tbt: endpoint { + remote-endpoint = <&typec0_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_1_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_1_acio_tbt: endpoint { + remote-endpoint = <&typec1_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_2_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_2_acio_tbt: endpoint { + remote-endpoint = <&typec2_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +/* ATC3 is used for DP-to-HDMI only and has no USB4 host router */ +/delete-node/ &usb4_3_acio; +/delete-node/ &usb4_3_mbox; + #include "spi1-nvram.dtsi" #include "hwmon-laptop.dtsi" #include "hwmon-fan-dual.dtsi" diff --git a/arch/arm64/boot/dts/apple/t600x-j375.dtsi b/arch/arm64/boot/dts/apple/t600x-j375.dtsi index 8a1494949e4c..d081cb03b03b 100644 --- a/arch/arm64/boot/dts/apple/t600x-j375.dtsi +++ b/arch/arm64/boot/dts/apple/t600x-j375.dtsi @@ -20,6 +20,14 @@ aliases { bluetooth0 = &bluetooth0; ethernet0 = ðernet0; serial0 = &serial0; + usb4-0-acio = &usb4_0_acio; + usb4-0-nhi = &usb4_0_nhi; + usb4-1-acio = &usb4_1_acio; + usb4-1-nhi = &usb4_1_nhi; + usb4-2-acio = &usb4_2_acio; + usb4-2-nhi = &usb4_2_nhi; + usb4-3-acio = &usb4_3_acio; + usb4-3-nhi = &usb4_3_nhi; wifi0 = &wifi0; }; @@ -410,4 +418,133 @@ &pcie0_dart_3 { status = "okay"; }; +&typec0 { + ports { + port@2 { + reg = <2>; + typec0_con_tbt: endpoint { + remote-endpoint = <&usb4_0_acio_tbt>; + }; + }; + }; +}; + +&typec1 { + ports { + port@2 { + reg = <2>; + typec1_con_tbt: endpoint { + remote-endpoint = <&usb4_1_acio_tbt>; + }; + }; + }; +}; + +&typec2 { + ports { + port@2 { + reg = <2>; + typec2_con_tbt: endpoint { + remote-endpoint = <&usb4_2_acio_tbt>; + }; + }; + }; +}; + +&typec3 { + ports { + port@2 { + reg = <2>; + typec3_con_tbt: endpoint { + remote-endpoint = <&usb4_3_acio_tbt>; + }; + }; + }; +}; + +/* USB4 */ +&usb4_0_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_0_acio_tbt: endpoint { + remote-endpoint = <&typec0_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_1_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_1_acio_tbt: endpoint { + remote-endpoint = <&typec1_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_2_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_2_acio_tbt: endpoint { + remote-endpoint = <&typec2_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_3_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_3_acio_tbt: endpoint { + remote-endpoint = <&typec3_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + #include "spi1-nvram.dtsi" diff --git a/arch/arm64/boot/dts/apple/t6022-j180d.dts b/arch/arm64/boot/dts/apple/t6022-j180d.dts index f76b887429dd..27323fb51dd1 100644 --- a/arch/arm64/boot/dts/apple/t6022-j180d.dts +++ b/arch/arm64/boot/dts/apple/t6022-j180d.dts @@ -26,6 +26,22 @@ aliases { atcphy5 = &atcphy1_die1; atcphy6 = &atcphy2_die1; atcphy7 = &atcphy3_die1; + usb4-0-acio = &usb4_0_acio; + usb4-0-nhi = &usb4_0_nhi; + usb4-1-acio = &usb4_1_acio; + usb4-1-nhi = &usb4_1_nhi; + usb4-2-acio = &usb4_2_acio; + usb4-2-nhi = &usb4_2_nhi; + usb4-3-acio = &usb4_3_acio; + usb4-3-nhi = &usb4_3_nhi; + usb4-4-acio = &usb4_0_acio_die1; + usb4-4-nhi = &usb4_0_nhi_die1; + usb4-5-acio = &usb4_1_acio_die1; + usb4-5-nhi = &usb4_1_nhi_die1; + usb4-6-acio = &usb4_2_acio_die1; + usb4-6-nhi = &usb4_2_nhi_die1; + usb4-7-acio = &usb4_3_acio_die1; + usb4-7-nhi = &usb4_3_nhi_die1; nvram = &nvram; serial0 = &serial0; }; @@ -152,6 +168,13 @@ typec6_connector_ss: endpoint { remote-endpoint = <&atcphy6_typec_lanes>; }; }; + + port@2 { + reg = <2>; + typec6_con_tbt: endpoint { + remote-endpoint = <&usb4_6_acio_tbt>; + }; + }; }; }; }; @@ -184,6 +207,13 @@ typec7_connector_ss: endpoint { remote-endpoint = <&atcphy7_typec_lanes>; }; }; + + port@2 { + reg = <2>; + typec7_con_tbt: endpoint { + remote-endpoint = <&usb4_7_acio_tbt>; + }; + }; }; }; }; @@ -535,4 +565,176 @@ &nco_clkref { clock-frequency = <1068000000>; }; +/* USB4 on die 1 */ +&usb4_2_acio_die1 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_6_acio_tbt: endpoint { + remote-endpoint = <&typec6_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_3_acio_die1 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_7_acio_tbt: endpoint { + remote-endpoint = <&typec7_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&typec0 { + ports { + port@2 { + reg = <2>; + typec0_con_tbt: endpoint { + remote-endpoint = <&usb4_0_acio_tbt>; + }; + }; + }; +}; + +&typec1 { + ports { + port@2 { + reg = <2>; + typec1_con_tbt: endpoint { + remote-endpoint = <&usb4_1_acio_tbt>; + }; + }; + }; +}; + +&typec2 { + ports { + port@2 { + reg = <2>; + typec2_con_tbt: endpoint { + remote-endpoint = <&usb4_2_acio_tbt>; + }; + }; + }; +}; + +&typec3 { + ports { + port@2 { + reg = <2>; + typec3_con_tbt: endpoint { + remote-endpoint = <&usb4_3_acio_tbt>; + }; + }; + }; +}; + +/* USB4 */ +&usb4_0_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_0_acio_tbt: endpoint { + remote-endpoint = <&typec0_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_1_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_1_acio_tbt: endpoint { + remote-endpoint = <&typec1_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_2_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_2_acio_tbt: endpoint { + remote-endpoint = <&typec2_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_3_acio { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_3_acio_tbt: endpoint { + remote-endpoint = <&typec3_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + #include "spi1-nvram.dtsi" diff --git a/arch/arm64/boot/dts/apple/t6022-j475d.dts b/arch/arm64/boot/dts/apple/t6022-j475d.dts index 32938a3bf96a..d99633160beb 100644 --- a/arch/arm64/boot/dts/apple/t6022-j475d.dts +++ b/arch/arm64/boot/dts/apple/t6022-j475d.dts @@ -20,6 +20,10 @@ / { aliases { atcphy4 = &atcphy0_die1; atcphy5 = &atcphy1_die1; + usb4-4-acio = &usb4_0_acio_die1; + usb4-4-nhi = &usb4_0_nhi_die1; + usb4-5-acio = &usb4_1_acio_die1; + usb4-5-nhi = &usb4_1_nhi_die1; }; }; @@ -57,6 +61,12 @@ &typec5 { /delete-node/ &dwc3_3_die1; /delete-node/ &atcphy3_die1; +/delete-node/ &usb4_2_acio_die1; +/delete-node/ &usb4_2_mbox_die1; + +/delete-node/ &usb4_3_acio_die1; +/delete-node/ &usb4_3_mbox_die1; + /* delete unused always-on power-domains on die 1 */ /delete-node/ &ps_atc2_usb_aon_die1; /delete-node/ &ps_atc2_usb_die1; diff --git a/arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi b/arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi index dc877bd604f8..944a79d30fd7 100644 --- a/arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi +++ b/arch/arm64/boot/dts/apple/t6022-jxxxd.dtsi @@ -46,6 +46,13 @@ typec4_connector_ss: endpoint { remote-endpoint = <&atcphy4_typec_lanes>; }; }; + + port@2 { + reg = <2>; + typec4_con_tbt: endpoint { + remote-endpoint = <&usb4_4_acio_tbt>; + }; + }; }; }; }; @@ -78,6 +85,13 @@ typec5_connector_ss: endpoint { remote-endpoint = <&atcphy5_typec_lanes>; }; }; + + port@2 { + reg = <2>; + typec5_con_tbt: endpoint { + remote-endpoint = <&usb4_5_acio_tbt>; + }; + }; }; }; }; @@ -169,3 +183,46 @@ atcphy5_usb3: endpoint { }; }; }; + +/* USB4 on die 1 */ +&usb4_0_acio_die1 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_4_acio_tbt: endpoint { + remote-endpoint = <&typec4_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; + +&usb4_1_acio_die1 { + ports { + #address-cells = <1>; + #size-cells = <0>; + + /* 1: USB4 port */ + port@1 { + reg = <1>; + usb4_5_acio_tbt: endpoint { + remote-endpoint = <&typec5_con_tbt>; + }; + }; + + /* 2: unused(?) USB4 port */ + /* 3: PCIe */ + /* 4: USB3 */ + /* 5: DP0 */ + /* 6: DP1 */ + }; +}; diff --git a/arch/arm64/boot/dts/apple/t602x-dieX.dtsi b/arch/arm64/boot/dts/apple/t602x-dieX.dtsi index ae3d535c5acb..dae7b81c13d0 100644 --- a/arch/arm64/boot/dts/apple/t602x-dieX.dtsi +++ b/arch/arm64/boot/dts/apple/t602x-dieX.dtsi @@ -92,6 +92,22 @@ DIE_NODE(pinctrl_aop): pinctrl@2a6820000 { , , ; + + DIE_NODE(acio0_pins): acio0-pins { + pinmux = ; + }; + + DIE_NODE(acio1_pins): acio1-pins { + pinmux = ; + }; + + DIE_NODE(acio2_pins): acio2-pins { + pinmux = ; + }; + + DIE_NODE(acio3_pins): acio3-pins { + pinmux = ; + }; }; DIE_NODE(pinctrl_ap): pinctrl@39b028000 { @@ -127,6 +143,98 @@ DIE_NODE(pmgr_gfx): power-management@404e80000 { reg = <0x4 0x4e80000 0 0x4000>; }; + DIE_NODE(usb4_0_mbox): mailbox@701108000 { + compatible = "apple,t6020-asc-mailbox", + "apple,asc-mailbox-v4"; + reg = <0x7 0x01108000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + ; + interrupt-names = "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells = <0>; + }; + + DIE_NODE(usb4_0_acio): cio@701ac0000 { + compatible = "apple,t6020-usb4-acio", "apple,t8103-usb4-acio"; + reg = <0x7 0x01ac0000 0x0 0xc000>, + <0x7 0x01080000 0x0 0x20000>; + reg-names = "rc", "sram"; + + mboxes = <&DIE_NODE(usb4_0_mbox)>; + resets = <&DIE_NODE(cio_reset) 0>; + + power-domains = <&DIE_NODE(ps_atc0_cio)>, + <&DIE_NODE(ps_atc0_cio_pcie)>, + <&DIE_NODE(ps_atc0_cio_usb)>; + + thunderbolt-switch; + + pinctrl-0 = <&DIE_NODE(acio0_pins)>; + pinctrl-names = "default"; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x7 0x01000000 0x1000000>; + nonposted-mmio; + + DIE_NODE(usb4_0_dart): iommu@a80000 { + compatible = "apple,t6020-dart", "apple,t8110-dart"; + reg = <0xa80000 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <5>; + }; + + DIE_NODE(usb4_0_nhi): nhi@f00000 { + reg = <0xf00000 0x100000>, + <0xdb0000 0x30004>; + reg-names = "nhi", "pdf"; + compatible = "apple,t6020-usb4-nhi", + "apple,t8103-usb4-nhi"; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = + "txring0", "txring1", "txring2", + "txring3", "txring4", "txring5", + "txring6", "txring7", "txring8", + "txring9", "txring10", "txring11", + "rxring0", "rxring1", "rxring2", + "rxring3", "rxring4", "rxring5", + "rxring6", "rxring7", "rxring8", + "rxring9", "rxring10", "rxring11"; + iommus = <&DIE_NODE(usb4_0_dart) 1 0x100 0x0 0x10 0x0>, + <&DIE_NODE(usb4_0_dart) 2 0x100 0x0 0x10 0x0>; + /* To be filled by the loader */ + apple,thunderbolt-drom = [00]; + }; + }; + DIE_NODE(dwc3_0): usb@702280000 { compatible = "apple,t6020-dwc3", "apple,t8103-dwc3"; reg = <0x7 0x02280000 0x0 0xcd00>, <0x7 0x0228cd00 0x0 0x3200>; @@ -180,6 +288,98 @@ DIE_NODE(atcphy0): phy@703000000 { power-domains = <&DIE_NODE(ps_atc0_usb)>; }; + DIE_NODE(usb4_1_mbox): mailbox@b01108000 { + compatible = "apple,t6020-asc-mailbox", + "apple,asc-mailbox-v4"; + reg = <0xb 0x01108000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + ; + interrupt-names = "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells = <0>; + }; + + DIE_NODE(usb4_1_acio): cio@b01ac0000 { + compatible = "apple,t6020-usb4-acio", "apple,t8103-usb4-acio"; + reg = <0xb 0x01ac0000 0x0 0xc000>, + <0xb 0x01080000 0x0 0x20000>; + reg-names = "rc", "sram"; + + mboxes = <&DIE_NODE(usb4_1_mbox)>; + resets = <&DIE_NODE(cio_reset) 1>; + + power-domains = <&DIE_NODE(ps_atc1_cio)>, + <&DIE_NODE(ps_atc1_cio_pcie)>, + <&DIE_NODE(ps_atc1_cio_usb)>; + + thunderbolt-switch; + + pinctrl-0 = <&DIE_NODE(acio1_pins)>; + pinctrl-names = "default"; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0xb 0x01000000 0x1000000>; + nonposted-mmio; + + DIE_NODE(usb4_1_dart): iommu@a80000 { + compatible = "apple,t6020-dart", "apple,t8110-dart"; + reg = <0xa80000 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <5>; + }; + + DIE_NODE(usb4_1_nhi): nhi@f00000 { + reg = <0xf00000 0x100000>, + <0xdb0000 0x30004>; + reg-names = "nhi", "pdf"; + compatible = "apple,t6020-usb4-nhi", + "apple,t8103-usb4-nhi"; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = + "txring0", "txring1", "txring2", + "txring3", "txring4", "txring5", + "txring6", "txring7", "txring8", + "txring9", "txring10", "txring11", + "rxring0", "rxring1", "rxring2", + "rxring3", "rxring4", "rxring5", + "rxring6", "rxring7", "rxring8", + "rxring9", "rxring10", "rxring11"; + iommus = <&DIE_NODE(usb4_1_dart) 1 0x100 0x0 0x10 0x0>, + <&DIE_NODE(usb4_1_dart) 2 0x100 0x0 0x10 0x0>; + /* To be filled by the loader */ + apple,thunderbolt-drom = [00]; + }; + }; + DIE_NODE(dwc3_1): usb@b02280000 { compatible = "apple,t6020-dwc3", "apple,t8103-dwc3"; reg = <0xb 0x02280000 0x0 0xcd00>, <0xb 0x0228cd00 0x0 0x3200>; @@ -233,6 +433,98 @@ DIE_NODE(atcphy1): phy@b03000000 { power-domains = <&DIE_NODE(ps_atc1_usb)>; }; + DIE_NODE(usb4_2_mbox): mailbox@f01108000 { + compatible = "apple,t6020-asc-mailbox", + "apple,asc-mailbox-v4"; + reg = <0xf 0x01108000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + ; + interrupt-names = "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells = <0>; + }; + + DIE_NODE(usb4_2_acio): cio@f01ac0000 { + compatible = "apple,t6020-usb4-acio", "apple,t8103-usb4-acio"; + reg = <0xf 0x01ac0000 0x0 0xc000>, + <0xf 0x01080000 0x0 0x20000>; + reg-names = "rc", "sram"; + + mboxes = <&DIE_NODE(usb4_2_mbox)>; + resets = <&DIE_NODE(cio_reset) 2>; + + power-domains = <&DIE_NODE(ps_atc2_cio)>, + <&DIE_NODE(ps_atc2_cio_pcie)>, + <&DIE_NODE(ps_atc2_cio_usb)>; + + thunderbolt-switch; + + pinctrl-0 = <&DIE_NODE(acio2_pins)>; + pinctrl-names = "default"; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0xf 0x01000000 0x1000000>; + nonposted-mmio; + + DIE_NODE(usb4_2_dart): iommu@a80000 { + compatible = "apple,t6020-dart", "apple,t8110-dart"; + reg = <0xa80000 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <5>; + }; + + DIE_NODE(usb4_2_nhi): nhi@f00000 { + reg = <0xf00000 0x100000>, + <0xdb0000 0x30004>; + reg-names = "nhi", "pdf"; + compatible = "apple,t6020-usb4-nhi", + "apple,t8103-usb4-nhi"; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = + "txring0", "txring1", "txring2", + "txring3", "txring4", "txring5", + "txring6", "txring7", "txring8", + "txring9", "txring10", "txring11", + "rxring0", "rxring1", "rxring2", + "rxring3", "rxring4", "rxring5", + "rxring6", "rxring7", "rxring8", + "rxring9", "rxring10", "rxring11"; + iommus = <&DIE_NODE(usb4_2_dart) 1 0x100 0x0 0x10 0x0>, + <&DIE_NODE(usb4_2_dart) 2 0x100 0x0 0x10 0x0>; + /* To be filled by the loader */ + apple,thunderbolt-drom = [00]; + }; + }; + DIE_NODE(dwc3_2): usb@f02280000 { compatible = "apple,t6020-dwc3", "apple,t8103-dwc3"; reg = <0xf 0x02280000 0x0 0xcd00>, <0xf 0x0228cd00 0x0 0x3200>; @@ -286,6 +578,98 @@ DIE_NODE(atcphy2): phy@f03000000 { power-domains = <&DIE_NODE(ps_atc2_usb)>; }; + DIE_NODE(usb4_3_mbox): mailbox@1301108000 { + compatible = "apple,t6020-asc-mailbox", + "apple,asc-mailbox-v4"; + reg = <0x13 0x01108000 0x0 0x4000>; + interrupt-parent = <&aic>; + interrupts = , + , + , + ; + interrupt-names = "send-empty", "send-not-empty", + "recv-empty", "recv-not-empty"; + #mbox-cells = <0>; + }; + + DIE_NODE(usb4_3_acio): cio@1301ac0000 { + compatible = "apple,t6020-usb4-acio", "apple,t8103-usb4-acio"; + reg = <0x13 0x01ac0000 0x0 0xc000>, + <0x13 0x01080000 0x0 0x20000>; + reg-names = "rc", "sram"; + + mboxes = <&DIE_NODE(usb4_3_mbox)>; + resets = <&DIE_NODE(cio_reset) 3>; + + power-domains = <&DIE_NODE(ps_atc3_cio)>, + <&DIE_NODE(ps_atc3_cio_pcie)>, + <&DIE_NODE(ps_atc3_cio_usb)>; + + thunderbolt-switch; + + pinctrl-0 = <&DIE_NODE(acio3_pins)>; + pinctrl-names = "default"; + + #address-cells = <1>; + #size-cells = <1>; + ranges = <0x0 0x13 0x01000000 0x1000000>; + nonposted-mmio; + + DIE_NODE(usb4_3_dart): iommu@a80000 { + compatible = "apple,t6020-dart", "apple,t8110-dart"; + reg = <0xa80000 0x4000>; + interrupt-parent = <&aic>; + interrupts = ; + #iommu-cells = <5>; + }; + + DIE_NODE(usb4_3_nhi): nhi@f00000 { + reg = <0xf00000 0x100000>, + <0xdb0000 0x30004>; + reg-names = "nhi", "pdf"; + compatible = "apple,t6020-usb4-nhi", + "apple,t8103-usb4-nhi"; + interrupt-parent = <&aic>; + interrupts = , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + , + ; + interrupt-names = + "txring0", "txring1", "txring2", + "txring3", "txring4", "txring5", + "txring6", "txring7", "txring8", + "txring9", "txring10", "txring11", + "rxring0", "rxring1", "rxring2", + "rxring3", "rxring4", "rxring5", + "rxring6", "rxring7", "rxring8", + "rxring9", "rxring10", "rxring11"; + iommus = <&DIE_NODE(usb4_3_dart) 1 0x100 0x0 0x10 0x0>, + <&DIE_NODE(usb4_3_dart) 2 0x100 0x0 0x10 0x0>; + /* To be filled by the loader */ + apple,thunderbolt-drom = [00]; + }; + }; + DIE_NODE(dwc3_3): usb@1302280000 { compatible = "apple,t6020-dwc3", "apple,t8103-dwc3"; reg = <0x13 0x02280000 0x0 0xcd00>, <0x13 0x0228cd00 0x0 0x3200>; -- 2.55.0