[PATCH] arm64: dts: imx943-evk: Describe the PCIe M.2 Key E connector

From: Sherry Sun (OSS)

Date: Mon Aug 17 2026 - 22:43:00 EST


From: Sherry Sun <sherry.sun@xxxxxxx>

The i.MX943-EVK has the PCIe M.2 Mechanical Key E connector to
connect wireless connectivity cards over PCIe and UART interfaces. Hence,
describe the connector node and link it with the PCIe 0 Root Port and
LPUART6 nodes through graph port/endpoint.

Since currently the M.2 driver doesn't support SD-UART interface, for the
supported SD-UART IW612 M.2 module on imx943-evk board, need to add back
the WLAN regulator and bluetooth child node.

Signed-off-by: Sherry Sun <sherry.sun@xxxxxxx>
---
.../boot/dts/freescale/imx943-evk-sdwifi.dtso | 25 ++++++++++
arch/arm64/boot/dts/freescale/imx943-evk.dts | 55 ++++++++++++++++------
2 files changed, 66 insertions(+), 14 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx943-evk-sdwifi.dtso b/arch/arm64/boot/dts/freescale/imx943-evk-sdwifi.dtso
index 59cc1c27b9b9..b95304fd60aa 100644
--- a/arch/arm64/boot/dts/freescale/imx943-evk-sdwifi.dtso
+++ b/arch/arm64/boot/dts/freescale/imx943-evk-sdwifi.dtso
@@ -6,10 +6,35 @@
/dts-v1/;
/plugin/;

+#include <dt-bindings/gpio/gpio.h>
+
+&{/} {
+ reg_usdhc3_vmmc: regulator-usdhc3 {
+ compatible = "regulator-fixed";
+ regulator-name = "WLAN_EN";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&reg_m2_pwr>;
+ gpio = <&pcal6416_i2c3_u46 5 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+};
+
+&lpuart6 {
+ bluetooth {
+ compatible = "nxp,88w8987-bt";
+ };
+};
+
+&m2_connector {
+ status = "disabled";
+};
+
&pcie0 {
status = "disabled";
};

&usdhc3 {
+ vmmc-supply = <&reg_usdhc3_vmmc>;
status = "okay";
};
diff --git a/arch/arm64/boot/dts/freescale/imx943-evk.dts b/arch/arm64/boot/dts/freescale/imx943-evk.dts
index 64660f94f4e9..e1f6d64d3a3f 100644
--- a/arch/arm64/boot/dts/freescale/imx943-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx943-evk.dts
@@ -77,6 +77,37 @@ dmic: dmic {
#sound-dai-cells = <0>;
};

+ m2_connector: m2-connector {
+ compatible = "pcie-m2-e-connector";
+ vpcie3v3-supply = <&reg_m2_pwr>;
+ w-disable1-gpios = <&pcal6416_i2c3_u46 5 GPIO_ACTIVE_LOW>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <0>;
+ m2_e_pcie_ep: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&pcie0_port0_ep>;
+ };
+ };
+
+ port@3 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ reg = <3>;
+ m2_e_uart_ep: endpoint@0 {
+ reg = <0>;
+ remote-endpoint = <&lpuart6_ep>;
+ };
+ };
+ };
+ };
+
reg_m2_pwr: regulator-m2-pwr {
compatible = "regulator-fixed";
regulator-name = "M.2-power";
@@ -102,16 +133,6 @@ reg_slot_pwr: regulator-slot-pwr {
enable-active-high;
};

- reg_m2_wlan: regulator-wlan {
- compatible = "regulator-fixed";
- regulator-name = "WLAN_EN";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- vin-supply = <&reg_m2_pwr>;
- gpio = <&pcal6416_i2c3_u46 5 GPIO_ACTIVE_HIGH>;
- enable-active-high;
- };
-
reg_usdhc2_vmmc: regulator-usdhc2 {
compatible = "regulator-fixed";
off-on-delay-us = <12000>;
@@ -694,8 +715,10 @@ &lpuart6 {
pinctrl-names = "default";
status = "okay";

- bluetooth {
- compatible = "nxp,88w8987-bt";
+ port {
+ lpuart6_ep: endpoint {
+ remote-endpoint = <&m2_e_uart_ep>;
+ };
};
};

@@ -1175,7 +1198,12 @@ &pcie0 {

&pcie0_port0 {
reset-gpios = <&pcal6416_i2c3_u46 3 GPIO_ACTIVE_LOW>;
- vpcie3v3aux-supply = <&reg_m2_wlan>;
+
+ port {
+ pcie0_port0_ep: endpoint {
+ remote-endpoint = <&m2_e_pcie_ep>;
+ };
+ };
};

&pcie0_ep {
@@ -1288,7 +1316,6 @@ &usdhc3 {
pinctrl-1 = <&pinctrl_usdhc3>;
pinctrl-names = "default", "sleep";
bus-width = <4>;
- vmmc-supply = <&reg_m2_wlan>;
mmc-pwrseq = <&usdhc3_pwrseq>;
keep-power-in-suspend;
non-removable;

---
base-commit: e6664f2b33db9b6811eb4cec109f06cb2b4f458d
change-id: 20260818-imx943_m2-6fa2615f56a2

Best regards,
--
Sherry Sun <sherry.sun@xxxxxxx>