* [PATCH 1/3] arm64: dts: freescale: imx95-toradex-smarc: Add SER2 interface
2026-03-25 9:50 [PATCH 0/3] arm64: dts: freescale: imx95-toradex-smarc: Add Bluetooth and SER2 Franz Schnyder
@ 2026-03-25 9:50 ` Franz Schnyder
2026-03-25 9:50 ` [PATCH 2/3] arm64: dts: freescale: imx95-toradex-smarc: Enable bluetooth on lpuart5 Franz Schnyder
2026-03-25 11:55 ` [PATCH 3/3] arm64: dts: freescale: imx95-toradex-smarc: Use gpio-hog for WIFI_UART_EN Franz Schnyder
2 siblings, 0 replies; 7+ messages in thread
From: Franz Schnyder @ 2026-03-25 9:50 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, imx, linux-arm-kernel, linux-kernel,
Francesco Dolcini, Franz Schnyder
From: Franz Schnyder <franz.schnyder@toradex.com>
The Toradex SMARC iMX95 has four exposed serial interfaces, one of these
is SER2, which supports RTS/CTS.
Add UART support for SMARC SER2.
Signed-off-by: Franz Schnyder <franz.schnyder@toradex.com>
---
.../arm64/boot/dts/freescale/imx95-toradex-smarc-dev.dts | 5 +++++
arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi | 16 ++++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc-dev.dts b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc-dev.dts
index 5b05f256fd52..7437e523ff63 100644
--- a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc-dev.dts
+++ b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc-dev.dts
@@ -210,6 +210,11 @@ &lpuart3 {
status = "okay";
};
+/* SMARC SER2 */
+&lpuart6 {
+ status = "okay";
+};
+
/* SMARC MDIO, shared between all ethernet ports */
&netc_emdio {
status = "okay";
diff --git a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
index 7a73958f6eec..1d369983cf7d 100644
--- a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
@@ -22,6 +22,7 @@ aliases {
rtc1 = &scmi_bbm;
serial0 = &lpuart2;
serial1 = &lpuart1;
+ serial2 = &lpuart6;
serial3 = &lpuart3;
};
@@ -615,6 +616,13 @@ &lpuart3 {
pinctrl-0 = <&pinctrl_uart3>;
};
+/* SMARC SER2 */
+&lpuart6 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_uart6>;
+ uart-has-rtscts;
+};
+
&mu7 {
status = "okay";
};
@@ -1105,6 +1113,14 @@ pinctrl_uart3: uart3grp {
<IMX95_PAD_GPIO_IO15__LPUART3_RX 0x31e>; /* SMARC P141 - SER3_RX */
};
+ /* SMARC SER2 */
+ pinctrl_uart6: uart6grp {
+ fsl,pins = <IMX95_PAD_GPIO_IO34__LPUART6_CTS_B 0x31e>, /* SMARC P139 - SER2_CTS# */
+ <IMX95_PAD_GPIO_IO07__LPUART6_RTS_B 0x31e>, /* SMARC P138 - SER2_RTS# */
+ <IMX95_PAD_GPIO_IO05__LPUART6_RX 0x31e>, /* SMARC P137 - SER2_RX */
+ <IMX95_PAD_GPIO_IO04__LPUART6_TX 0x31e>; /* SMARC P136 - SER2_TX */
+ };
+
/* On-module eMMC */
pinctrl_usdhc1: usdhc1grp {
fsl,pins = <IMX95_PAD_SD1_CLK__USDHC1_CLK 0x158e>, /* SD1_CLK */
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 2/3] arm64: dts: freescale: imx95-toradex-smarc: Enable bluetooth on lpuart5
2026-03-25 9:50 [PATCH 0/3] arm64: dts: freescale: imx95-toradex-smarc: Add Bluetooth and SER2 Franz Schnyder
2026-03-25 9:50 ` [PATCH 1/3] arm64: dts: freescale: imx95-toradex-smarc: Add SER2 interface Franz Schnyder
@ 2026-03-25 9:50 ` Franz Schnyder
2026-03-25 11:55 ` [PATCH 3/3] arm64: dts: freescale: imx95-toradex-smarc: Use gpio-hog for WIFI_UART_EN Franz Schnyder
2 siblings, 0 replies; 7+ messages in thread
From: Franz Schnyder @ 2026-03-25 9:50 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: devicetree, imx, linux-arm-kernel, linux-kernel,
Francesco Dolcini, Franz Schnyder
From: Franz Schnyder <franz.schnyder@toradex.com>
The Toradex SMARC iMX95 uses the MAYA-W260 WiFi/Bluetooth module, which
uses the UART interface for Bluetooth.
Add the missing UART support to enable bluetooth functionality on the
MAYA-W260.
Signed-off-by: Franz Schnyder <franz.schnyder@toradex.com>
---
Although Documentation/devicetree/bindings/dts-coding-style.rst
recommends an empty line between status and latest property, leave it
unchanged for consistency with the rest of the file.
---
.../boot/dts/freescale/imx95-toradex-smarc.dtsi | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
index 1d369983cf7d..a90edefc5197 100644
--- a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
@@ -616,6 +616,19 @@ &lpuart3 {
pinctrl-0 = <&pinctrl_uart3>;
};
+/* On-module Bluetooth */
+&lpuart5 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_bt_uart>;
+ uart-has-rtscts;
+ status = "okay";
+
+ bluetooth {
+ compatible = "nxp,88w8987-bt";
+ fw-init-baudrate = <3000000>;
+ };
+};
+
/* SMARC SER2 */
&lpuart6 {
pinctrl-names = "default";
@@ -830,6 +843,14 @@ &wdog3 {
};
&scmi_iomuxc {
+ /* On-module Bluetooth, UART pins shared with JTAG */
+ pinctrl_bt_uart: btuartgrp {
+ fsl,pins = <IMX95_PAD_DAP_TDO_TRACESWO__LPUART5_TX 0x31e>, /* WiFI_UART_RXD */
+ <IMX95_PAD_DAP_TDI__LPUART5_RX 0x31e>, /* WiFI_UART_TXD */
+ <IMX95_PAD_DAP_TCLK_SWCLK__LPUART5_CTS_B 0x31e>, /* WiFI_UART_RTS# */
+ <IMX95_PAD_DAP_TMS_SWDIO__LPUART5_RTS_B 0x31e>; /* WiFI_UART_CTS# */
+ };
+
/* SMARC CAM_MCK */
pinctrl_cam_mck: cammckgrp {
fsl,pins = <IMX95_PAD_CCM_CLKO1__CCMSRCGPCMIX_TOP_CLKO_1 0x51e>; /* SMARC S6 - CAM_MCK */
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* [PATCH 3/3] arm64: dts: freescale: imx95-toradex-smarc: Use gpio-hog for WIFI_UART_EN
2026-03-25 9:50 [PATCH 0/3] arm64: dts: freescale: imx95-toradex-smarc: Add Bluetooth and SER2 Franz Schnyder
2026-03-25 9:50 ` [PATCH 1/3] arm64: dts: freescale: imx95-toradex-smarc: Add SER2 interface Franz Schnyder
2026-03-25 9:50 ` [PATCH 2/3] arm64: dts: freescale: imx95-toradex-smarc: Enable bluetooth on lpuart5 Franz Schnyder
@ 2026-03-25 11:55 ` Franz Schnyder
2026-03-25 14:54 ` Frank Li
2 siblings, 1 reply; 7+ messages in thread
From: Franz Schnyder @ 2026-03-25 11:55 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Frank Li,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: Franz Schnyder, devicetree, imx, linux-arm-kernel, linux-kernel,
Francesco Dolcini
From: Franz Schnyder <franz.schnyder@toradex.com>
On the Toradex SMARC iMX95, the WiFi UART signals are shared with the
JTAG. The WIFI_UART_EN signal is used to select between these
two functions.
Configure the signal as gpio-hog and drive it high to select the UART
function by default. Add a label to override the hog in derived
device trees.
Signed-off-by: Franz Schnyder <franz.schnyder@toradex.com>
---
arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
index a90edefc5197..29e3f5bf867b 100644
--- a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
@@ -451,6 +451,13 @@ som_gpio_expander_1: gpio@21 {
"",
"",
"SMARC_SDIO_WP";
+
+ wifi_uart_en: wifi-uart-en-hog {
+ gpio-hog;
+ gpios = <12 GPIO_ACTIVE_HIGH>;
+ line-name = "WIFI_UART_EN";
+ output-high;
+ };
};
embedded-controller@28 {
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH 3/3] arm64: dts: freescale: imx95-toradex-smarc: Use gpio-hog for WIFI_UART_EN
2026-03-25 11:55 ` [PATCH 3/3] arm64: dts: freescale: imx95-toradex-smarc: Use gpio-hog for WIFI_UART_EN Franz Schnyder
@ 2026-03-25 14:54 ` Frank Li
2026-03-25 18:10 ` Francesco Dolcini
0 siblings, 1 reply; 7+ messages in thread
From: Frank Li @ 2026-03-25 14:54 UTC (permalink / raw)
To: Franz Schnyder
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Franz Schnyder,
devicetree, imx, linux-arm-kernel, linux-kernel,
Francesco Dolcini
On Wed, Mar 25, 2026 at 12:55:11PM +0100, Franz Schnyder wrote:
> From: Franz Schnyder <franz.schnyder@toradex.com>
>
> On the Toradex SMARC iMX95, the WiFi UART signals are shared with the
> JTAG. The WIFI_UART_EN signal is used to select between these
> two functions.
>
> Configure the signal as gpio-hog and drive it high to select the UART
> function by default. Add a label to override the hog in derived
> device trees.
gpio hog have problem about probe order, are you sure gpio device probe
before pcie?
I have not seen any place refer to wifi_uart_en.
Frank
>
> Signed-off-by: Franz Schnyder <franz.schnyder@toradex.com>
> ---
> arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
> index a90edefc5197..29e3f5bf867b 100644
> --- a/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx95-toradex-smarc.dtsi
> @@ -451,6 +451,13 @@ som_gpio_expander_1: gpio@21 {
> "",
> "",
> "SMARC_SDIO_WP";
> +
> + wifi_uart_en: wifi-uart-en-hog {
> + gpio-hog;
> + gpios = <12 GPIO_ACTIVE_HIGH>;
> + line-name = "WIFI_UART_EN";
> + output-high;
> + };
> };
>
> embedded-controller@28 {
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH 3/3] arm64: dts: freescale: imx95-toradex-smarc: Use gpio-hog for WIFI_UART_EN
2026-03-25 14:54 ` Frank Li
@ 2026-03-25 18:10 ` Francesco Dolcini
2026-03-25 18:58 ` Frank Li
0 siblings, 1 reply; 7+ messages in thread
From: Francesco Dolcini @ 2026-03-25 18:10 UTC (permalink / raw)
To: Frank Li
Cc: Franz Schnyder, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Franz Schnyder, devicetree, imx, linux-arm-kernel, linux-kernel,
Francesco Dolcini
On Wed, Mar 25, 2026 at 10:54:46AM -0400, Frank Li wrote:
> On Wed, Mar 25, 2026 at 12:55:11PM +0100, Franz Schnyder wrote:
> > From: Franz Schnyder <franz.schnyder@toradex.com>
> >
> > On the Toradex SMARC iMX95, the WiFi UART signals are shared with the
> > JTAG. The WIFI_UART_EN signal is used to select between these
> > two functions.
> >
> > Configure the signal as gpio-hog and drive it high to select the UART
> > function by default. Add a label to override the hog in derived
> > device trees.
>
> gpio hog have problem about probe order, are you sure gpio device probe
> before pcie?
This is not about PCIe, we are talking about UART here. Specifically the
module is a combo Wi-Fi/BT device, with Wi-Fi over SDIO, and BT over
UART from NXP.
In any case, this DT is going to be used also by the boot firmware that will
configure the GPIO hog way before the Linux driver probes.
The DT files from the Linux kernel are used also by other projects.
> I have not seen any place refer to wifi_uart_en.
There is none (as of now). This is there to make it easier for a user
that needs access to debug to adjust this node enabling the JTAG
functionality.
Francesco
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] arm64: dts: freescale: imx95-toradex-smarc: Use gpio-hog for WIFI_UART_EN
2026-03-25 18:10 ` Francesco Dolcini
@ 2026-03-25 18:58 ` Frank Li
0 siblings, 0 replies; 7+ messages in thread
From: Frank Li @ 2026-03-25 18:58 UTC (permalink / raw)
To: Francesco Dolcini
Cc: Franz Schnyder, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
Franz Schnyder, devicetree, imx, linux-arm-kernel, linux-kernel
On Wed, Mar 25, 2026 at 07:10:57PM +0100, Francesco Dolcini wrote:
> On Wed, Mar 25, 2026 at 10:54:46AM -0400, Frank Li wrote:
> > On Wed, Mar 25, 2026 at 12:55:11PM +0100, Franz Schnyder wrote:
> > > From: Franz Schnyder <franz.schnyder@toradex.com>
> > >
> > > On the Toradex SMARC iMX95, the WiFi UART signals are shared with the
> > > JTAG. The WIFI_UART_EN signal is used to select between these
> > > two functions.
> > >
> > > Configure the signal as gpio-hog and drive it high to select the UART
> > > function by default. Add a label to override the hog in derived
> > > device trees.
> >
> > gpio hog have problem about probe order, are you sure gpio device probe
> > before pcie?
>
> This is not about PCIe, we are talking about UART here. Specifically the
> module is a combo Wi-Fi/BT device, with Wi-Fi over SDIO, and BT over
> UART from NXP.
>
> In any case, this DT is going to be used also by the boot firmware that will
> configure the GPIO hog way before the Linux driver probes.
Commit message need show it is safe.
Frank
>
> The DT files from the Linux kernel are used also by other projects.
>
> > I have not seen any place refer to wifi_uart_en.
>
> There is none (as of now). This is there to make it easier for a user
> that needs access to debug to adjust this node enabling the JTAG
> functionality.
>
> Francesco
>
^ permalink raw reply [flat|nested] 7+ messages in thread