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

From: Yureka Lilian

Date: Wed Nov 04 2026 - 06:42:34 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 122a566e75d1..635635c4bfbd 100644
--- a/arch/arm64/boot/dts/apple/t600x-die0.dtsi
+++ b/arch/arm64/boot/dts/apple/t600x-die0.dtsi
@@ -460,6 +460,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>;
@@ -479,6 +480,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>;
@@ -498,6 +500,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>;
@@ -518,6 +521,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 caded1636f3d..4f9dccf839ad 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.56.0