Re: [PATCH v5 5/7] arm64: dts: imx8dxl-evk: Add onboard GPIO mux controller
From: Laurentiu Palcu
Date: Wed Oct 28 2026 - 04:52:55 EST
On Tue, Oct 27, 2026 at 11:00:57AM -0400, Frank.Li@xxxxxxxxxxx wrote:
> From: Frank Li <Frank.Li@xxxxxxx>
>
> 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@xxxxxxx>
> ---
> 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@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@xxxxxxxxxxx>
--
Thanks,
Laurentiu