From 95d9f469f3856ddbf91b4cf81399c8ab04583d61 Mon Sep 17 00:00:00 2001 From: Kieran Graham Date: Wed, 14 Oct 2026 23:16:08 +0100 Subject: [PATCH 6/6] arm64: apple: retain J414/J416 PCIe-C resets with parent cold-init policy Provide the three PCIe-C reset lines and admit their T602x cold-init path when ACIO acquires a reset. Do not set apple,pciec-kernel-init on T602x: the parent reserves that property for the t8103 resume sequence. Preserve the parent tunables and preinitialized-handoff protections. Original assistance attribution: Claude:claude-opus-5-5. Ported from release 56 onto omacom/linux-aurora 6f6367775. Assisted-by: Codex:gpt-6.1-sol --- arch/arm64/boot/dts/apple/t602x-j414-j416.dtsi | 13 +++++++++++++ drivers/thunderbolt/apple.c | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/apple/t602x-j414-j416.dtsi b/arch/arm64/boot/dts/apple/t602x-j414-j416.dtsi index 98301e378..a23779744 100644 --- a/arch/arm64/boot/dts/apple/t602x-j414-j416.dtsi +++ b/arch/arm64/boot/dts/apple/t602x-j414-j416.dtsi @@ -367,6 +367,19 @@ &usb4_2_acio { apple,pcie-tunnel = <&usb4_2_pcie_tunnel>; }; +/* Reset a failed PCIe-C activation before restarting its ACIO. */ +&apciec0 { + resets = <&ps_atc0_pcie>; +}; + +&apciec1 { + resets = <&ps_atc1_pcie>; +}; + +&apciec2 { + resets = <&ps_atc2_pcie>; +}; + /* Keep dptx_phy_ps on until DCP can sequence it during display bring-up. */ &ps_dptx_phy_ps { apple,always-on; diff --git a/drivers/thunderbolt/apple.c b/drivers/thunderbolt/apple.c index db398dae3..79a1d1494 100644 --- a/drivers/thunderbolt/apple.c +++ b/drivers/thunderbolt/apple.c @@ -789,7 +789,8 @@ static int apple_cio_get_pcie_reset(struct apple_cio *acio) if (!of_device_is_compatible(child, "apple,t8103-pciec") && !of_device_is_compatible(child, "apple,t6000-pciec")) continue; - if (!of_property_read_bool(child, "apple,pciec-kernel-init")) + if (!of_property_read_bool(child, "apple,pciec-kernel-init") && + !apple_pcie_tunnel_needs_cold_init(child)) break; rst = of_reset_control_get_optional_exclusive(child, NULL); -- 2.56.0