* [PATCH v1 1/3] arm64: dts: imx94: add pcie0 and pcie0-ep supports
2026-02-06 5:50 [PATCH v1 0/3] Add i.MX943 PCIe supports Richard Zhu
@ 2026-02-06 5:50 ` Richard Zhu
2026-02-06 16:39 ` Frank Li
2026-02-06 5:50 ` [PATCH v1 2/3] arm64: dts: imx943: add pcie1 and pcie1-ep supports Richard Zhu
2026-02-06 5:50 ` [PATCH v1 3/3] arm64: dts: imx943-evk: Add pcie[0,1] and pcie-ep[0,1] support Richard Zhu
2 siblings, 1 reply; 7+ messages in thread
From: Richard Zhu @ 2026-02-06 5:50 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, shawnguo, frank.li, s.hauer, festevam
Cc: kernel, devicetree, imx, linux-arm-kernel, linux-kernel,
Richard Zhu
Add pcie0 and pcie0-ep supports.
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
arch/arm64/boot/dts/freescale/imx94.dtsi | 89 ++++++++++++++++++++++++
1 file changed, 89 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx94.dtsi b/arch/arm64/boot/dts/freescale/imx94.dtsi
index d2f31c8caf6eb..d2fe6e0aebaf8 100644
--- a/arch/arm64/boot/dts/freescale/imx94.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx94.dtsi
@@ -38,6 +38,13 @@ clk_ext1: clock-ext1 {
clock-output-names = "clk_ext1";
};
+ clk_sys100m: clock-sys100m {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <100000000>;
+ clock-output-names = "clk_sys100m";
+ };
+
sai1_mclk: clock-sai1-mclk1 {
compatible = "fixed-clock";
#clock-cells = <0>;
@@ -1366,5 +1373,87 @@ ddr-pmu@4e090dc0 {
reg = <0x0 0x4e090dc0 0x0 0x200>;
interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
};
+
+ hsio_blk_ctl: syscon@4c0100c0 {
+ compatible = "nxp,imx95-hsio-blk-ctl", "syscon";
+ reg = <0x0 0x4c0100c0 0x0 0x1>;
+ #clock-cells = <1>;
+ clocks = <&clk_sys100m>;
+ power-domains = <&scmi_devpd IMX94_PD_HSIO_TOP>;
+ };
+
+ pcie0: pcie@4c300000 {
+ compatible = "fsl,imx95-pcie";
+ reg = <0 0x4c300000 0 0x10000>,
+ <0 0x60100000 0 0xfe00000>,
+ <0 0x4c360000 0 0x10000>,
+ <0 0x4c340000 0 0x4000>;
+ reg-names = "dbi", "config", "atu", "app";
+ ranges = <0x81000000 0x0 0x00000000 0x0 0x6ff00000 0 0x00100000>,
+ <0x82000000 0x0 0x10000000 0x9 0x10000000 0 0x80000000>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ device_type = "pci";
+ linux,pci-domain = <2>;
+ msi-map = <0x0 &its 0x10 0x1>,
+ <0x100 &its 0x11 0x7>;
+ msi-map-mask = <0x1ff>;
+ bus-range = <0x00 0xff>;
+ num-lanes = <1>;
+ num-viewport = <8>;
+ interrupts = <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "msi", "pme", "intr";
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 0x7>;
+ interrupt-map = <0 0 0 1 &gic 0 0 GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 2 &gic 0 0 GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 3 &gic 0 0 GIC_SPI 362 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 4 &gic 0 0 GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&scmi_clk IMX94_CLK_HSIO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
+ <&hsio_blk_ctl 0>;
+ clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux", "ref";
+ assigned-clocks =<&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
+ assigned-clock-rates = <3600000000>, <100000000>, <10000000>;
+ assigned-clock-parents = <0>, <0>,
+ <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+ power-domains = <&scmi_devpd IMX94_PD_HSIO_TOP>;
+ fsl,max-link-speed = <3>;
+ status = "disabled";
+ };
+
+ pcie0_ep: pcie-ep@4c300000 {
+ compatible = "fsl,imx95-pcie-ep";
+ reg = <0 0x4c300000 0 0x10000>,
+ <0 0x4c360000 0 0x1000>,
+ <0 0x4c320000 0 0x1000>,
+ <0 0x4c340000 0 0x4000>,
+ <0 0x4c370000 0 0x10000>,
+ <0x9 0 1 0>;
+ reg-names = "dbi","atu", "dbi2", "app", "dma", "addr_space";
+ num-lanes = <1>;
+ interrupts = <GIC_SPI 365 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "dma";
+ clocks = <&scmi_clk IMX94_CLK_HSIO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
+ clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
+ assigned-clocks =<&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
+ assigned-clock-rates = <3600000000>, <100000000>, <10000000>;
+ assigned-clock-parents = <0>, <0>,
+ <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+ msi-map = <0x0 &its 0x10 0x1>;
+ power-domains = <&scmi_devpd IMX94_PD_HSIO_TOP>;
+ status = "disabled";
+ };
};
};
--
2.37.1
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v1 1/3] arm64: dts: imx94: add pcie0 and pcie0-ep supports
2026-02-06 5:50 ` [PATCH v1 1/3] arm64: dts: imx94: add pcie0 and pcie0-ep supports Richard Zhu
@ 2026-02-06 16:39 ` Frank Li
0 siblings, 0 replies; 7+ messages in thread
From: Frank Li @ 2026-02-06 16:39 UTC (permalink / raw)
To: Richard Zhu
Cc: robh, krzk+dt, conor+dt, shawnguo, s.hauer, festevam, kernel,
devicetree, imx, linux-arm-kernel, linux-kernel
On Fri, Feb 06, 2026 at 01:50:05PM +0800, Richard Zhu wrote:
> Add pcie0 and pcie0-ep supports.
>
> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> ---
> arch/arm64/boot/dts/freescale/imx94.dtsi | 89 ++++++++++++++++++++++++
> 1 file changed, 89 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx94.dtsi b/arch/arm64/boot/dts/freescale/imx94.dtsi
> index d2f31c8caf6eb..d2fe6e0aebaf8 100644
> --- a/arch/arm64/boot/dts/freescale/imx94.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx94.dtsi
> @@ -38,6 +38,13 @@ clk_ext1: clock-ext1 {
> clock-output-names = "clk_ext1";
> };
>
> + clk_sys100m: clock-sys100m {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <100000000>;
> + clock-output-names = "clk_sys100m";
> + };
> +
keep order as node name clock-sys100m. which should be after clock-sai1-mclk1.
> sai1_mclk: clock-sai1-mclk1 {
> compatible = "fixed-clock";
> #clock-cells = <0>;
> @@ -1366,5 +1373,87 @@ ddr-pmu@4e090dc0 {
> reg = <0x0 0x4e090dc0 0x0 0x200>;
> interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
> };
> +
> + hsio_blk_ctl: syscon@4c0100c0 {
order according to hex address, 4c0100c0 less than 4e090dc0
Frank
> + compatible = "nxp,imx95-hsio-blk-ctl", "syscon";
> + reg = <0x0 0x4c0100c0 0x0 0x1>;
> + #clock-cells = <1>;
> + clocks = <&clk_sys100m>;
> + power-domains = <&scmi_devpd IMX94_PD_HSIO_TOP>;
> + };
> +
> + pcie0: pcie@4c300000 {
> + compatible = "fsl,imx95-pcie";
> + reg = <0 0x4c300000 0 0x10000>,
> + <0 0x60100000 0 0xfe00000>,
> + <0 0x4c360000 0 0x10000>,
> + <0 0x4c340000 0 0x4000>;
> + reg-names = "dbi", "config", "atu", "app";
> + ranges = <0x81000000 0x0 0x00000000 0x0 0x6ff00000 0 0x00100000>,
> + <0x82000000 0x0 0x10000000 0x9 0x10000000 0 0x80000000>;
> + #address-cells = <3>;
> + #size-cells = <2>;
> + device_type = "pci";
> + linux,pci-domain = <2>;
> + msi-map = <0x0 &its 0x10 0x1>,
> + <0x100 &its 0x11 0x7>;
> + msi-map-mask = <0x1ff>;
> + bus-range = <0x00 0xff>;
> + num-lanes = <1>;
> + num-viewport = <8>;
> + interrupts = <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 364 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "msi", "pme", "intr";
> + #interrupt-cells = <1>;
> + interrupt-map-mask = <0 0 0 0x7>;
> + interrupt-map = <0 0 0 1 &gic 0 0 GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>,
> + <0 0 0 2 &gic 0 0 GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>,
> + <0 0 0 3 &gic 0 0 GIC_SPI 362 IRQ_TYPE_LEVEL_HIGH>,
> + <0 0 0 4 &gic 0 0 GIC_SPI 363 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&scmi_clk IMX94_CLK_HSIO>,
> + <&scmi_clk IMX94_CLK_HSIOPLL>,
> + <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
> + <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
> + <&hsio_blk_ctl 0>;
> + clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux", "ref";
> + assigned-clocks =<&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
> + <&scmi_clk IMX94_CLK_HSIOPLL>,
> + <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
> + assigned-clock-rates = <3600000000>, <100000000>, <10000000>;
> + assigned-clock-parents = <0>, <0>,
> + <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
> + power-domains = <&scmi_devpd IMX94_PD_HSIO_TOP>;
> + fsl,max-link-speed = <3>;
> + status = "disabled";
> + };
> +
> + pcie0_ep: pcie-ep@4c300000 {
> + compatible = "fsl,imx95-pcie-ep";
> + reg = <0 0x4c300000 0 0x10000>,
> + <0 0x4c360000 0 0x1000>,
> + <0 0x4c320000 0 0x1000>,
> + <0 0x4c340000 0 0x4000>,
> + <0 0x4c370000 0 0x10000>,
> + <0x9 0 1 0>;
> + reg-names = "dbi","atu", "dbi2", "app", "dma", "addr_space";
> + num-lanes = <1>;
> + interrupts = <GIC_SPI 365 IRQ_TYPE_LEVEL_HIGH>;
> + interrupt-names = "dma";
> + clocks = <&scmi_clk IMX94_CLK_HSIO>,
> + <&scmi_clk IMX94_CLK_HSIOPLL>,
> + <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
> + <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
> + clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
> + assigned-clocks =<&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
> + <&scmi_clk IMX94_CLK_HSIOPLL>,
> + <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
> + assigned-clock-rates = <3600000000>, <100000000>, <10000000>;
> + assigned-clock-parents = <0>, <0>,
> + <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
> + msi-map = <0x0 &its 0x10 0x1>;
> + power-domains = <&scmi_devpd IMX94_PD_HSIO_TOP>;
> + status = "disabled";
> + };
> };
> };
> --
> 2.37.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v1 2/3] arm64: dts: imx943: add pcie1 and pcie1-ep supports
2026-02-06 5:50 [PATCH v1 0/3] Add i.MX943 PCIe supports Richard Zhu
2026-02-06 5:50 ` [PATCH v1 1/3] arm64: dts: imx94: add pcie0 and pcie0-ep supports Richard Zhu
@ 2026-02-06 5:50 ` Richard Zhu
2026-02-06 5:50 ` [PATCH v1 3/3] arm64: dts: imx943-evk: Add pcie[0,1] and pcie-ep[0,1] support Richard Zhu
2 siblings, 0 replies; 7+ messages in thread
From: Richard Zhu @ 2026-02-06 5:50 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, shawnguo, frank.li, s.hauer, festevam
Cc: kernel, devicetree, imx, linux-arm-kernel, linux-kernel,
Richard Zhu
Add pcie1 and pcie1-ep supports.
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
arch/arm64/boot/dts/freescale/imx943.dtsi | 76 +++++++++++++++++++++++
1 file changed, 76 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx943.dtsi b/arch/arm64/boot/dts/freescale/imx943.dtsi
index 45b8da758e877..0df9d24cf985d 100644
--- a/arch/arm64/boot/dts/freescale/imx943.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx943.dtsi
@@ -145,4 +145,80 @@ l3_cache: l3-cache {
cache-unified;
};
};
+
+ soc {
+ pcie1: pcie@4c380000 {
+ compatible = "fsl,imx95-pcie";
+ reg = <0 0x4c380000 0 0x10000>,
+ <8 0x80100000 0 0xfe00000>,
+ <0 0x4c3e0000 0 0x10000>,
+ <0 0x4c3c0000 0 0x4000>;
+ reg-names = "dbi", "config", "atu", "app";
+ ranges = <0x81000000 0 0x00000000 0x8 0x8ff00000 0 0x00100000>,
+ <0x82000000 0 0x10000000 0xa 0x10000000 0 0x80000000>;
+ #address-cells = <3>;
+ #size-cells = <2>;
+ device_type = "pci";
+ linux,pci-domain = <3>;
+ msi-map = <0x0 &its 0x98 0x1>,
+ <0x100 &its 0x99 0x7>;
+ msi-map-mask = <0x1ff>;
+ bus-range = <0x00 0xff>;
+ num-lanes = <1>;
+ num-viewport = <8>;
+ interrupts = <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 370 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "msi", "pme", "intr";
+ #interrupt-cells = <1>;
+ interrupt-map-mask = <0 0 0 0x7>;
+ interrupt-map = <0 0 0 1 &gic 0 0 GIC_SPI 366 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 2 &gic 0 0 GIC_SPI 367 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 3 &gic 0 0 GIC_SPI 368 IRQ_TYPE_LEVEL_HIGH>,
+ <0 0 0 4 &gic 0 0 GIC_SPI 369 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&scmi_clk IMX94_CLK_HSIO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
+ <&hsio_blk_ctl 0>;
+ clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux", "ref";
+ assigned-clocks =<&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
+ assigned-clock-rates = <3600000000>, <100000000>, <10000000>;
+ assigned-clock-parents = <0>, <0>,
+ <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+ power-domains = <&scmi_devpd IMX94_PD_HSIO_TOP>;
+ fsl,max-link-speed = <3>;
+ status = "disabled";
+ };
+
+ pcie1_ep: pcie-ep@4c380000 {
+ compatible = "fsl,imx95-pcie-ep";
+ reg = <0 0x4c380000 0 0x10000>,
+ <0 0x4c3e0000 0 0x1000>,
+ <0 0x4c3a0000 0 0x1000>,
+ <0 0x4c3c0000 0 0x4000>,
+ <0 0x4c3f0000 0 0x10000>,
+ <0xa 0 1 0>;
+ reg-names = "dbi", "atu", "dbi2", "app", "dma", "addr_space";
+ num-lanes = <1>;
+ interrupts = <GIC_SPI 371 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "dma";
+ clocks = <&scmi_clk IMX94_CLK_HSIO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
+ clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux";
+ assigned-clocks =<&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>;
+ assigned-clock-rates = <3600000000>, <100000000>, <10000000>;
+ assigned-clock-parents = <0>, <0>,
+ <&scmi_clk IMX94_CLK_SYSPLL1_PFD1_DIV2>;
+ msi-map = <0x0 &its 0x98 0x1>;
+ power-domains = <&scmi_devpd IMX94_PD_HSIO_TOP>;
+ status = "disabled";
+ };
+ };
};
--
2.37.1
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH v1 3/3] arm64: dts: imx943-evk: Add pcie[0,1] and pcie-ep[0,1] support
2026-02-06 5:50 [PATCH v1 0/3] Add i.MX943 PCIe supports Richard Zhu
2026-02-06 5:50 ` [PATCH v1 1/3] arm64: dts: imx94: add pcie0 and pcie0-ep supports Richard Zhu
2026-02-06 5:50 ` [PATCH v1 2/3] arm64: dts: imx943: add pcie1 and pcie1-ep supports Richard Zhu
@ 2026-02-06 5:50 ` Richard Zhu
2026-02-06 16:41 ` Frank Li
2026-02-07 3:29 ` Sherry Sun
2 siblings, 2 replies; 7+ messages in thread
From: Richard Zhu @ 2026-02-06 5:50 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, shawnguo, frank.li, s.hauer, festevam
Cc: kernel, devicetree, imx, linux-arm-kernel, linux-kernel,
Richard Zhu
Add pcie[0,1] and pcie-ep[0,1] support.
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
---
arch/arm64/boot/dts/freescale/imx943-evk.dts | 108 +++++++++++++++++++
1 file changed, 108 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx943-evk.dts b/arch/arm64/boot/dts/freescale/imx943-evk.dts
index 31fa9675cee13..37a8349bc7905 100644
--- a/arch/arm64/boot/dts/freescale/imx943-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx943-evk.dts
@@ -53,6 +53,13 @@ dmic: dmic {
#sound-dai-cells = <0>;
};
+ pcie_ref_clk: clock-pcie-ref {
+ compatible = "gpio-gate-clock";
+ clocks = <&xtal25m>;
+ #clock-cells = <0>;
+ enable-gpios = <&pca9670_i2c3 7 GPIO_ACTIVE_LOW>;
+ };
+
reg_usdhc2_vmmc: regulator-usdhc2 {
compatible = "regulator-fixed";
off-on-delay-us = <12000>;
@@ -74,6 +81,41 @@ reg_audio_pwr: regulator-wm8962-pwr {
enable-active-high;
};
+ reg_m2_pwr: regulator-m2-pwr {
+ compatible = "regulator-fixed";
+ regulator-name = "M.2-power";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&pcal6416_i2c3_u46 2 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ /*
+ * M.2 device only can be enabled(W_DISABLE1#) after all Power
+ * Rails reach their minimum operating voltage (PCI Express M.2
+ * Specification r5.1 3.1.4 Power-up Timing).
+ * Set a delay equal to the max value of Tsettle here.
+ */
+ startup-delay-us = <5000>;
+ };
+
+ reg_pcie0: regulator-pcie {
+ compatible = "regulator-fixed";
+ regulator-name = "PCIE_WLAN_EN";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <®_m2_pwr>;
+ gpio = <&pcal6416_i2c3_u46 5 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ reg_slot_pwr: regulator-slot-pwr {
+ compatible = "regulator-fixed";
+ regulator-name = "PCIe slot-power";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&pcal6416_i2c3_u46 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
reserved-memory {
ranges;
#address-cells = <2>;
@@ -144,6 +186,13 @@ memory@80000000 {
reg = <0x0 0x80000000 0x0 0x80000000>;
device_type = "memory";
};
+
+ xtal25m: clock-xtal25m {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-frequency = <25000000>;
+ clock-output-names = "xtal_25MHz";
+ };
};
&enetc1 {
@@ -609,6 +658,18 @@ IMX94_PAD_GPIO_IO28__LPI2C6_SCL 0x40000b9e
>;
};
+ pinctrl_pcie0: pcie0grp {
+ fsl,pins = <
+ IMX94_PAD_GPIO_IO20__PCIE1_CLKREQ_B 0x4000031e
+ >;
+ };
+
+ pinctrl_pcie1: pcie1grp {
+ fsl,pins = <
+ IMX94_PAD_GPIO_IO23__PCIE2_CLKREQ_B 0x4000031e
+ >;
+ };
+
pinctrl_pdm: pdmgrp {
fsl,pins = <
IMX94_PAD_PDM_CLK__PDM_CLK 0x31e
@@ -756,6 +817,53 @@ IMX94_PAD_XSPI1_DQS__XSPI1_A_DQS 0x3fe
};
};
+&pcie0 {
+ pinctrl-0 = <&pinctrl_pcie0>;
+ pinctrl-names = "default";
+ clocks = <&scmi_clk IMX94_CLK_HSIO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
+ <&hsio_blk_ctl 0>,
+ <&pcie_ref_clk>;
+ clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux",
+ "ref", "extref";
+ reset-gpio = <&pcal6416_i2c3_u46 3 GPIO_ACTIVE_LOW>;
+ vpcie3v3aux-supply = <®_pcie0>;
+ supports-clkreq;
+ status = "okay";
+};
+
+&pcie0_ep {
+ pinctrl-0 = <&pinctrl_pcie0>;
+ pinctrl-names = "default";
+ vpcie3v3aux-supply = <®_pcie0>;
+ status = "disabled";
+};
+
+&pcie1 {
+ pinctrl-0 = <&pinctrl_pcie1>;
+ pinctrl-names = "default";
+ clocks = <&scmi_clk IMX94_CLK_HSIO>,
+ <&scmi_clk IMX94_CLK_HSIOPLL>,
+ <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
+ <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
+ <&hsio_blk_ctl 0>,
+ <&pcie_ref_clk>;
+ clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux",
+ "ref", "extref";
+ reset-gpio = <&pcal6416_i2c3_u46 1 GPIO_ACTIVE_LOW>;
+ vpcie3v3aux-supply = <®_slot_pwr>;
+ status = "okay";
+};
+
+&pcie1_ep {
+ pinctrl-0 = <&pinctrl_pcie1>;
+ pinctrl-names = "default";
+ vpcie3v3aux-supply = <®_slot_pwr>;
+ status = "disabled";
+};
+
&usdhc1 {
pinctrl-0 = <&pinctrl_usdhc1>;
pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
--
2.37.1
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v1 3/3] arm64: dts: imx943-evk: Add pcie[0,1] and pcie-ep[0,1] support
2026-02-06 5:50 ` [PATCH v1 3/3] arm64: dts: imx943-evk: Add pcie[0,1] and pcie-ep[0,1] support Richard Zhu
@ 2026-02-06 16:41 ` Frank Li
2026-02-07 3:29 ` Sherry Sun
1 sibling, 0 replies; 7+ messages in thread
From: Frank Li @ 2026-02-06 16:41 UTC (permalink / raw)
To: Richard Zhu
Cc: robh, krzk+dt, conor+dt, shawnguo, s.hauer, festevam, kernel,
devicetree, imx, linux-arm-kernel, linux-kernel
On Fri, Feb 06, 2026 at 01:50:07PM +0800, Richard Zhu wrote:
> Add pcie[0,1] and pcie-ep[0,1] support.
>
> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> ---
> arch/arm64/boot/dts/freescale/imx943-evk.dts | 108 +++++++++++++++++++
> 1 file changed, 108 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx943-evk.dts b/arch/arm64/boot/dts/freescale/imx943-evk.dts
> index 31fa9675cee13..37a8349bc7905 100644
> --- a/arch/arm64/boot/dts/freescale/imx943-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx943-evk.dts
> @@ -53,6 +53,13 @@ dmic: dmic {
> #sound-dai-cells = <0>;
> };
>
> + pcie_ref_clk: clock-pcie-ref {
> + compatible = "gpio-gate-clock";
> + clocks = <&xtal25m>;
> + #clock-cells = <0>;
> + enable-gpios = <&pca9670_i2c3 7 GPIO_ACTIVE_LOW>;
> + };
> +
order by node name, clock-pcie-ref should before dmic.
> reg_usdhc2_vmmc: regulator-usdhc2 {
> compatible = "regulator-fixed";
> off-on-delay-us = <12000>;
> @@ -74,6 +81,41 @@ reg_audio_pwr: regulator-wm8962-pwr {
> enable-active-high;
> };
>
> + reg_m2_pwr: regulator-m2-pwr {
order by by node name, regulator-m2-pwr
Frank
> + compatible = "regulator-fixed";
> + regulator-name = "M.2-power";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&pcal6416_i2c3_u46 2 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + /*
> + * M.2 device only can be enabled(W_DISABLE1#) after all Power
> + * Rails reach their minimum operating voltage (PCI Express M.2
> + * Specification r5.1 3.1.4 Power-up Timing).
> + * Set a delay equal to the max value of Tsettle here.
> + */
> + startup-delay-us = <5000>;
> + };
> +
> + reg_pcie0: regulator-pcie {
> + compatible = "regulator-fixed";
> + regulator-name = "PCIE_WLAN_EN";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + vin-supply = <®_m2_pwr>;
> + gpio = <&pcal6416_i2c3_u46 5 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + reg_slot_pwr: regulator-slot-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "PCIe slot-power";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&pcal6416_i2c3_u46 0 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> reserved-memory {
> ranges;
> #address-cells = <2>;
> @@ -144,6 +186,13 @@ memory@80000000 {
> reg = <0x0 0x80000000 0x0 0x80000000>;
> device_type = "memory";
> };
> +
> + xtal25m: clock-xtal25m {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <25000000>;
> + clock-output-names = "xtal_25MHz";
> + };
> };
>
> &enetc1 {
> @@ -609,6 +658,18 @@ IMX94_PAD_GPIO_IO28__LPI2C6_SCL 0x40000b9e
> >;
> };
>
> + pinctrl_pcie0: pcie0grp {
> + fsl,pins = <
> + IMX94_PAD_GPIO_IO20__PCIE1_CLKREQ_B 0x4000031e
> + >;
> + };
> +
> + pinctrl_pcie1: pcie1grp {
> + fsl,pins = <
> + IMX94_PAD_GPIO_IO23__PCIE2_CLKREQ_B 0x4000031e
> + >;
> + };
> +
> pinctrl_pdm: pdmgrp {
> fsl,pins = <
> IMX94_PAD_PDM_CLK__PDM_CLK 0x31e
> @@ -756,6 +817,53 @@ IMX94_PAD_XSPI1_DQS__XSPI1_A_DQS 0x3fe
> };
> };
>
> +&pcie0 {
> + pinctrl-0 = <&pinctrl_pcie0>;
> + pinctrl-names = "default";
> + clocks = <&scmi_clk IMX94_CLK_HSIO>,
> + <&scmi_clk IMX94_CLK_HSIOPLL>,
> + <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
> + <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
> + <&hsio_blk_ctl 0>,
> + <&pcie_ref_clk>;
> + clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux",
> + "ref", "extref";
> + reset-gpio = <&pcal6416_i2c3_u46 3 GPIO_ACTIVE_LOW>;
> + vpcie3v3aux-supply = <®_pcie0>;
> + supports-clkreq;
> + status = "okay";
> +};
> +
> +&pcie0_ep {
> + pinctrl-0 = <&pinctrl_pcie0>;
> + pinctrl-names = "default";
> + vpcie3v3aux-supply = <®_pcie0>;
> + status = "disabled";
> +};
> +
> +&pcie1 {
> + pinctrl-0 = <&pinctrl_pcie1>;
> + pinctrl-names = "default";
> + clocks = <&scmi_clk IMX94_CLK_HSIO>,
> + <&scmi_clk IMX94_CLK_HSIOPLL>,
> + <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
> + <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
> + <&hsio_blk_ctl 0>,
> + <&pcie_ref_clk>;
> + clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux",
> + "ref", "extref";
> + reset-gpio = <&pcal6416_i2c3_u46 1 GPIO_ACTIVE_LOW>;
> + vpcie3v3aux-supply = <®_slot_pwr>;
> + status = "okay";
> +};
> +
> +&pcie1_ep {
> + pinctrl-0 = <&pinctrl_pcie1>;
> + pinctrl-names = "default";
> + vpcie3v3aux-supply = <®_slot_pwr>;
> + status = "disabled";
> +};
> +
> &usdhc1 {
> pinctrl-0 = <&pinctrl_usdhc1>;
> pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
> --
> 2.37.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread* RE: [PATCH v1 3/3] arm64: dts: imx943-evk: Add pcie[0,1] and pcie-ep[0,1] support
2026-02-06 5:50 ` [PATCH v1 3/3] arm64: dts: imx943-evk: Add pcie[0,1] and pcie-ep[0,1] support Richard Zhu
2026-02-06 16:41 ` Frank Li
@ 2026-02-07 3:29 ` Sherry Sun
1 sibling, 0 replies; 7+ messages in thread
From: Sherry Sun @ 2026-02-07 3:29 UTC (permalink / raw)
To: Hongxing Zhu, robh@kernel.org, krzk+dt@kernel.org,
conor+dt@kernel.org, shawnguo@kernel.org, Frank Li,
s.hauer@pengutronix.de, festevam@gmail.com
Cc: kernel@pengutronix.de, devicetree@vger.kernel.org,
imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Hongxing Zhu
> Subject: [PATCH v1 3/3] arm64: dts: imx943-evk: Add pcie[0,1] and pcie-
> ep[0,1] support
>
> Add pcie[0,1] and pcie-ep[0,1] support.
>
> Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com>
> ---
> arch/arm64/boot/dts/freescale/imx943-evk.dts | 108 +++++++++++++++++++
> 1 file changed, 108 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx943-evk.dts
> b/arch/arm64/boot/dts/freescale/imx943-evk.dts
> index 31fa9675cee13..37a8349bc7905 100644
> --- a/arch/arm64/boot/dts/freescale/imx943-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx943-evk.dts
> @@ -53,6 +53,13 @@ dmic: dmic {
> #sound-dai-cells = <0>;
> };
>
> + pcie_ref_clk: clock-pcie-ref {
> + compatible = "gpio-gate-clock";
> + clocks = <&xtal25m>;
> + #clock-cells = <0>;
> + enable-gpios = <&pca9670_i2c3 7 GPIO_ACTIVE_LOW>;
> + };
> +
> reg_usdhc2_vmmc: regulator-usdhc2 {
> compatible = "regulator-fixed";
> off-on-delay-us = <12000>;
> @@ -74,6 +81,41 @@ reg_audio_pwr: regulator-wm8962-pwr {
> enable-active-high;
> };
>
> + reg_m2_pwr: regulator-m2-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "M.2-power";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&pcal6416_i2c3_u46 2 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + /*
> + * M.2 device only can be enabled(W_DISABLE1#) after all
> Power
> + * Rails reach their minimum operating voltage (PCI Express
> M.2
> + * Specification r5.1 3.1.4 Power-up Timing).
> + * Set a delay equal to the max value of Tsettle here.
> + */
> + startup-delay-us = <5000>;
> + };
> +
> + reg_pcie0: regulator-pcie {
> + compatible = "regulator-fixed";
> + regulator-name = "PCIE_WLAN_EN";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + vin-supply = <®_m2_pwr>;
> + gpio = <&pcal6416_i2c3_u46 5 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
Hi Richard,
Please check the patch here: https://patchwork.kernel.org/project/imx/patch/20260204022306.2372889-1-sherry.sun@nxp.com/
I have added the reg_m2_pwr and reg_pcie0(rename to reg_m2_wlan
to support SDIO wifi), so you can delete these two nodes in your patch.
Best Regards
Sherry
> + reg_slot_pwr: regulator-slot-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "PCIe slot-power";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&pcal6416_i2c3_u46 0 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> reserved-memory {
> ranges;
> #address-cells = <2>;
> @@ -144,6 +186,13 @@ memory@80000000 {
> reg = <0x0 0x80000000 0x0 0x80000000>;
> device_type = "memory";
> };
> +
> + xtal25m: clock-xtal25m {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-frequency = <25000000>;
> + clock-output-names = "xtal_25MHz";
> + };
> };
>
> &enetc1 {
> @@ -609,6 +658,18 @@ IMX94_PAD_GPIO_IO28__LPI2C6_SCL
> 0x40000b9e
> >;
> };
>
> + pinctrl_pcie0: pcie0grp {
> + fsl,pins = <
> + IMX94_PAD_GPIO_IO20__PCIE1_CLKREQ_B
> 0x4000031e
> + >;
> + };
> +
> + pinctrl_pcie1: pcie1grp {
> + fsl,pins = <
> + IMX94_PAD_GPIO_IO23__PCIE2_CLKREQ_B
> 0x4000031e
> + >;
> + };
> +
> pinctrl_pdm: pdmgrp {
> fsl,pins = <
> IMX94_PAD_PDM_CLK__PDM_CLK
> 0x31e
> @@ -756,6 +817,53 @@ IMX94_PAD_XSPI1_DQS__XSPI1_A_DQS 0x3fe
> };
> };
>
> +&pcie0 {
> + pinctrl-0 = <&pinctrl_pcie0>;
> + pinctrl-names = "default";
> + clocks = <&scmi_clk IMX94_CLK_HSIO>,
> + <&scmi_clk IMX94_CLK_HSIOPLL>,
> + <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
> + <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
> + <&hsio_blk_ctl 0>,
> + <&pcie_ref_clk>;
> + clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux",
> + "ref", "extref";
> + reset-gpio = <&pcal6416_i2c3_u46 3 GPIO_ACTIVE_LOW>;
> + vpcie3v3aux-supply = <®_pcie0>;
> + supports-clkreq;
> + status = "okay";
> +};
> +
> +&pcie0_ep {
> + pinctrl-0 = <&pinctrl_pcie0>;
> + pinctrl-names = "default";
> + vpcie3v3aux-supply = <®_pcie0>;
> + status = "disabled";
> +};
> +
> +&pcie1 {
> + pinctrl-0 = <&pinctrl_pcie1>;
> + pinctrl-names = "default";
> + clocks = <&scmi_clk IMX94_CLK_HSIO>,
> + <&scmi_clk IMX94_CLK_HSIOPLL>,
> + <&scmi_clk IMX94_CLK_HSIOPLL_VCO>,
> + <&scmi_clk IMX94_CLK_HSIOPCIEAUX>,
> + <&hsio_blk_ctl 0>,
> + <&pcie_ref_clk>;
> + clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_aux",
> + "ref", "extref";
> + reset-gpio = <&pcal6416_i2c3_u46 1 GPIO_ACTIVE_LOW>;
> + vpcie3v3aux-supply = <®_slot_pwr>;
> + status = "okay";
> +};
> +
> +&pcie1_ep {
> + pinctrl-0 = <&pinctrl_pcie1>;
> + pinctrl-names = "default";
> + vpcie3v3aux-supply = <®_slot_pwr>;
> + status = "disabled";
> +};
> +
> &usdhc1 {
> pinctrl-0 = <&pinctrl_usdhc1>;
> pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
> --
> 2.37.1
>
^ permalink raw reply [flat|nested] 7+ messages in thread