On Tue, Oct 27, 2026 at 11:00:57AM -0400, [email protected] wrote:
> From: Frank Li <[email protected]>
> 
> 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 <[email protected]>
> ---
> 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 <[email protected]>

-- 
Thanks,
Laurentiu

Reply via email to