[PATCH 2/2] arm64: dts: apple: t600x: Add PCIe pwren gpios

From: Yureka Lilian

Date: Mon Jul 06 2026 - 18:39:05 EST


For the MacBook Pro and Mac Studio devices using the M1 Pro/Max/Ultra
SoCs, add the appropriate fixed regulators for enabling the peripherals
connected to the PCIe ports (WiFi, SD card reader and USB xHCI), which
are controlled by GPIOs connected to the SMC.
Set the regulators as the power-supply of the respective PCIe port, so
that the endpoints are powered on before probing the ports.

Add the 'pciclass,0604' compatible string to the PCIe bridge nodes in
the SoC to allow the pci-pwrctrl-generic driver to bind to them.

Signed-off-by: Yureka Lilian <yureka@xxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/apple/t600x-die0.dtsi | 4 ++++
arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi | 16 +++++++++++++++
arch/arm64/boot/dts/apple/t600x-j375.dtsi | 27 ++++++++++++++++++++++++++
3 files changed, 47 insertions(+)

diff --git a/arch/arm64/boot/dts/apple/t600x-die0.dtsi b/arch/arm64/boot/dts/apple/t600x-die0.dtsi
index f715b19efd16..53a633a3c652 100644
--- a/arch/arm64/boot/dts/apple/t600x-die0.dtsi
+++ b/arch/arm64/boot/dts/apple/t600x-die0.dtsi
@@ -449,6 +449,7 @@ pcie0: pcie@590000000 {
pinctrl-names = "default";

port00: pci@0,0 {
+ compatible = "pciclass,0604";
device_type = "pci";
reg = <0x0 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 4 GPIO_ACTIVE_LOW>;
@@ -468,6 +469,7 @@ port00: pci@0,0 {
};

port01: pci@1,0 {
+ compatible = "pciclass,0604";
device_type = "pci";
reg = <0x800 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 5 GPIO_ACTIVE_LOW>;
@@ -487,6 +489,7 @@ port01: pci@1,0 {
};

port02: pci@2,0 {
+ compatible = "pciclass,0604";
device_type = "pci";
reg = <0x1000 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 6 GPIO_ACTIVE_LOW>;
@@ -507,6 +510,7 @@ port02: pci@2,0 {
};

port03: pci@3,0 {
+ compatible = "pciclass,0604";
device_type = "pci";
reg = <0x1800 0x0 0x0 0x0 0x0>;
reset-gpios = <&pinctrl_ap 7 GPIO_ACTIVE_LOW>;
diff --git a/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi b/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
index fee84f809a9c..7954cbbe4514 100644
--- a/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
+++ b/arch/arm64/boot/dts/apple/t600x-j314-j316.dtsi
@@ -55,6 +55,20 @@ led-0 {
default-state = "keep";
};
};
+
+ vreg_pcie0_port0: regulator-pcie0-port0 {
+ compatible = "regulator-fixed";
+ regulator-name = "pwren-pcie0-port0";
+ gpio = <&smc_gpio 13 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ vreg_pcie0_port1: regulator-pcie0-port1 {
+ compatible = "regulator-fixed";
+ regulator-name = "pwren-pcie0-port1";
+ gpio = <&smc_gpio 26 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};

&serial0 {
@@ -176,6 +190,7 @@ &nco_clkref {
/* PCIe devices */
&port00 {
/* WLAN */
+ power-supply = <&vreg_pcie0_port0>;
bus-range = <1 1>;
wifi0: wifi@0,0 {
compatible = "pci14e4,4433";
@@ -195,6 +210,7 @@ bluetooth0: bluetooth@0,1 {

&port01 {
/* SD card reader */
+ power-supply = <&vreg_pcie0_port1>;
bus-range = <2 2>;
sdhci0: mmc@0,0 {
compatible = "pci17a0,9755";
diff --git a/arch/arm64/boot/dts/apple/t600x-j375.dtsi b/arch/arm64/boot/dts/apple/t600x-j375.dtsi
index 8a1494949e4c..412b2fe109be 100644
--- a/arch/arm64/boot/dts/apple/t600x-j375.dtsi
+++ b/arch/arm64/boot/dts/apple/t600x-j375.dtsi
@@ -42,6 +42,30 @@ memory@10000000000 {
device_type = "memory";
reg = <0x100 0 0x2 0>; /* To be filled by loader */
};
+
+ /* WLAN/BT */
+ vreg_pcie0_port0: regulator-pcie0-port0 {
+ compatible = "regulator-fixed";
+ regulator-name = "pwren-pcie0-port0";
+ gpio = <&smc_gpio 13 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ /* SD card reader */
+ vreg_pcie0_port1: regulator-pcie0-port1 {
+ compatible = "regulator-fixed";
+ regulator-name = "pwren-pcie0-port1";
+ gpio = <&smc_gpio 26 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ /* USB xHCI */
+ vreg_pcie0_port3: regulator-pcie0-port3 {
+ compatible = "regulator-fixed";
+ regulator-name = "pwren-pcie0-port3";
+ gpio = <&smc_gpio 20 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};

&serial0 {
@@ -356,6 +380,7 @@ &nco_clkref {
/* PCIe devices */
&port00 {
/* WLAN */
+ power-supply = <&vreg_pcie0_port0>;
bus-range = <1 1>;
wifi0: wifi@0,0 {
compatible = "pci14e4,4433";
@@ -375,6 +400,7 @@ bluetooth0: bluetooth@0,1 {

&port01 {
/* SD card reader */
+ power-supply = <&vreg_pcie0_port1>;
bus-range = <2 2>;
sdhci0: mmc@0,0 {
compatible = "pci17a0,9755";
@@ -397,6 +423,7 @@ ethernet0: ethernet@0,0 {

&port03 {
/* USB xHCI */
+ power-supply = <&vreg_pcie0_port3>;
bus-range = <4 4>;
status = "okay";
};

--
2.54.0