[PATCH v2 09/17] arm64: dts: imx943-evk: Add board muxes to select between CAN1/PDM and MQS1/MIC
From: Chancel Liu
Date: Mon Aug 17 2026 - 23:04:06 EST
From: Chancel Liu <chancel.liu@xxxxxxx>
CAN1 has pin conflict with PDM, and MQS1 has pin conflict with the
MICFIL function. Replace static gpio-hog settings with GPIO-controlled
board muxes using the pinctrl-multiplexer framework, so that the
conflicting functions can be selected at runtime.
Update the MICFIL node to select MICFIL function via PINCTRL.
Signed-off-by: Chancel Liu <chancel.liu@xxxxxxx>
---
arch/arm64/boot/dts/freescale/imx943-evk.dts | 49 ++++++++++++++------
1 file changed, 35 insertions(+), 14 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx943-evk.dts b/arch/arm64/boot/dts/freescale/imx943-evk.dts
index 64660f94f4e9..07b782ef698a 100644
--- a/arch/arm64/boot/dts/freescale/imx943-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx943-evk.dts
@@ -38,6 +38,40 @@ bt_sco_codec: bt-sco-codec {
#sound-dai-cells = <1>;
};
+ can1_pdm_mux: mux-controller-0 {
+ compatible = "gpio-mux";
+ #mux-control-cells = <0>;
+ #mux-state-cells = <1>;
+ mux-gpios = <&pcal6416_i2c6_u44 12 GPIO_ACTIVE_HIGH>;
+ };
+
+ mqs1_mic_mux: mux-controller-1 {
+ compatible = "gpio-mux";
+ #mux-control-cells = <0>;
+ #mux-state-cells = <1>;
+ mux-gpios = <&pcal6416_i2c3_u171 11 GPIO_ACTIVE_HIGH>;
+ };
+
+ pinctrl-gpiomux {
+ compatible = "pinctrl-multiplexer";
+
+ can1_fun: can1-grp {
+ mux-states = <&can1_pdm_mux 1>;
+ };
+
+ mic_fun: mic-grp {
+ mux-states = <&mqs1_mic_mux 0>;
+ };
+
+ mqs1_fun: mqs1-grp {
+ mux-states = <&mqs1_mic_mux 1>;
+ };
+
+ pdm_fun: pdm-grp {
+ mux-states = <&can1_pdm_mux 0>;
+ };
+ };
+
flexcan2_phy: can-phy0 {
compatible = "nxp,tjr1443";
#phy-cells = <0>;
@@ -535,12 +569,6 @@ audio-pwren-hog {
gpio-hog;
output-high;
};
-
- mqs-mic-sel-hog {
- gpios = <11 GPIO_ACTIVE_HIGH>;
- gpio-hog;
- output-low;
- };
};
};
@@ -651,13 +679,6 @@ pcal6416_i2c6_u44: gpio@20 {
#gpio-cells = <2>;
gpio-controller;
- /* pdm selection */
- can-pdm-sel-hog {
- gpios = <12 GPIO_ACTIVE_HIGH>;
- gpio-hog;
- output-low;
- };
-
sai3-sel-hog {
gpios = <11 GPIO_ACTIVE_HIGH>;
gpio-hog;
@@ -710,7 +731,7 @@ &micfil {
assigned-clock-rates = <3932160000>,
<3612672000>, <393216000>,
<361267200>, <49152000>;
- pinctrl-0 = <&pinctrl_pdm>;
+ pinctrl-0 = <&pinctrl_pdm>, <&mic_fun>, <&pdm_fun>;
pinctrl-names = "default";
status = "okay";
};
--
2.50.1