[PATCH v5 5/7] arm64: dts: imx8dxl-evk: Add onboard GPIO mux controller

Laurentiu Palcu laurentiu.palcu at oss.nxp.com
Wed Oct 28 01:49:48 PDT 2026


On Tue, Oct 27, 2026 at 11:00:57AM -0400, Frank.Li at oss.nxp.com wrote:
> From: Frank Li <Frank.Li at nxp.com>
> 
> Add a GPIO mux controller to describe the onboard signal multiplexer.
> Previously, the device tree relied on the hardware reset defaults to
> select the mux state. Now that the kernel supports the pinctrl-multiplexer
> framework, describe the onboard mux explicitly and let the kernel configure
> the required routing.
> 
> Prepare for additional device tree overlays that require different mux
> configurations.
> 
> Remove the regulator-m2uart1sel node, which incorrectly modeled the board
> mux as a regulator.
> 
> There are no backward compatibility concerns, as the affected functions
> (lpuart1 for Bluetooth, spi3, and m4_lpuart) are not used by existing other
> users such as U-Boot.
> 
> Signed-off-by: Frank Li <Frank.Li at nxp.com>
> ---
> change in v4
> - add idle-state = <1> (sashiko AI)
> - ref to spi0_fun for sai0
> ---
>  arch/arm64/boot/dts/freescale/imx8dxl-evk.dts | 80 +++++++++++++++++++++++----
>  1 file changed, 68 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8dxl-evk.dts b/arch/arm64/boot/dts/freescale/imx8dxl-evk.dts
> index 71eff3efa6d32..f21ac208bf00e 100644
> --- a/arch/arm64/boot/dts/freescale/imx8dxl-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8dxl-evk.dts
> @@ -97,14 +97,70 @@ vdev0buffer: vdev0buffer at 90400000 {
>  		};
>  	};
>  
> -	m2_uart1_sel: regulator-m2uart1sel {
> -		compatible = "regulator-fixed";
> -		regulator-min-microvolt = <3300000>;
> -		regulator-max-microvolt = <3300000>;
> -		regulator-name = "m2_uart1_sel";
> -		gpio = <&pca6416_1 6 GPIO_ACTIVE_HIGH>;
> -		enable-active-high;
> -		regulator-always-on;
> +	m4_debug_mux: mux-controller-0 {
> +		compatible = "gpio-mux";
> +		#mux-control-cells = <0>;
> +		#mux-state-cells = <1>;
> +		idle-state = <1>;
> +		mux-gpios = <&pca6416_1 3 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	spi3_mux: mux-controller-1 {
> +		compatible = "gpio-mux";
> +		#mux-control-cells = <0>;
> +		#mux-state-cells = <1>;
> +		idle-state = <1>;
> +		mux-gpios = <&pca6416_1 4 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	uart1_mux: mux-controller-2 {
> +		compatible = "gpio-mux";
> +		#mux-control-cells = <0>;
> +		#mux-state-cells = <1>;
> +		mux-gpios = <&pca6416_1 6 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	spi0_mux: mux-controller-3 {
> +		compatible = "gpio-mux";
> +		#mux-control-cells = <0>;
> +		#mux-state-cells = <1>;
> +		mux-gpios = <&pca6416_1 7 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	pinctrl-gpiomux {
> +		compatible = "pinctrl-multiplexer";
> +
> +		m4_debug_fun: cm4-uart-grp {
> +			mux-states = <&m4_debug_mux 1>;
> +		};
> +
> +		spi0_fun: spi0-grp {
> +			mux-states = <&spi0_mux 1>;
> +		};
> +
> +		spi3_fun: spi3-grp {
> +			mux-states = <&spi3_mux 1>;
> +		};
> +
> +		uart1_fun: uart1-grp {
> +			mux-states = <&uart1_mux 1>;
> +		};
> +
> +		lcd_0_fun: lcd0-grp {
> +			mux-states = <&spi0_mux 0>;
> +		};
> +
> +		lcd_1_fun: lcd1-grp {
> +			mux-states = <&spi3_mux 0>;
> +		};
> +
> +		lcd_2_fun: lcd2-grp {
> +			mux-states = <&uart1_mux 0>;
> +		};
> +
> +		lcd_3_fun: lcd3-grp {
> +			mux-states = <&m4_debug_mux 0>;
> +		};

A lot of fun above! :) Joke aside, wouldn't it be more appropriate to replace
'fun' with 'func' in those label suffixes above? 

Otherwise:
Acked-by: Laurentiu Palcu <laurentiu.palcu at oss.nxp.com>

-- 
Thanks,
Laurentiu



More information about the linux-arm-kernel mailing list