Skip to contentSkip to conversation

arm64: dts: imx8mm: Enable DMIC input on Variscite boards

PATCH Applied Stefano Radaelli 3 participants 6 messages Oct 16 – Oct 22

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

cover arm64: dts: imx8mm: Enable DMIC input on Variscite boards

This series describes the digital microphone connection to the WM8904 codec on the Variscite DART-MX8M-MINI and VAR-SOM-MX8M-MINI platforms.

Configure IN1L as DMICDAT1 on both platforms to enable the digital microphone capture path.

Stefano Radaelli (2):
arm64: dts: imx8mm-var-dart: Enable WM8904 DMIC input
arm64: dts: imx8mm-var-som: Enable WM8904 DMIC input

 arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi | 2 ++
 arch/arm64/boot/dts/freescale/imx8mm-var-som.dtsi  | 2 ++
 2 files changed, 4 insertions(+)

base-commit: 31f9ec9f38735f42e1f0ba57347c420e56b99824

Signature · 1 line
2.47.3
#1 lore raw

PATCH 1/2 arm64: dts: imx8mm-var-dart: Enable WM8904 DMIC input

From: Stefano Radaelli <[email protected]>

The digital microphone data line is connected to the WM8904 IN1L pin, but this connection is not described in the device tree.

Configure IN1L as DMICDAT1 to enable the digital microphone capture path.

---
 arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi | 2 ++
 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +2 -0
index c5f0e22f549b..183b4f7af009 100644
@@ -300,6 +300,8 @@ wm8904: audio-codec@1a {
 				   /bits/ 16 <0x04af 0x324b 0x0010 0x050e>;
 		/* GPIO1 = DMIC_CLK, don't touch others */
 		wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>;
+		/* DMIC is connected to IN1L */
+		wlf,in1l-as-dmicdat1;
 	};
 };
 
Signature · 1 line
2.47.3
#2 lore raw

Re: [PATCH v1 1/2] arm64: dts: imx8mm-var-dart: Enable WM8904 DMIC input

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] ASoC: dt: imx8mm: stale DMIC audio routing to Microphone Jack --

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] ASoC: dt: imx8mm: stale DMIC audio routing to Microphone Jack
--

commit 9bda3c8c55088e18eaa9e764f1a00912ea93534f
Author: Stefano Radaelli <[email protected]>

arm64: dts: imx8mm-var-dart: Enable WM8904 DMIC input

The digital microphone data line is connected to the WM8904 IN1L pin, but this connection is not described in the device tree. Configure IN1L as DMICDAT1 to enable the digital microphone capture path.

arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi wm8904: audio-codec@1a { · line 304

Quoted 10 lines
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +2 -0
index c5f0e22f549b4..183b4f7af009f 100644
@@ -300,6 +300,8 @@ wm8904: audio-codec@1a {
 				   /bits/ 16 <0x04af 0x324b 0x0010 0x050e>;
 		/* GPIO1 = DMIC_CLK, don't touch others */
 		wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>;
+		/* DMIC is connected to IN1L */
+		wlf,in1l-as-dmicdat1;

[Severity: Medium]
Does this patch also need to update the simple-audio-card,routing array in the sound-wm8904 node?

Currently, the routing in arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi still maps IN1L to "Microphone Jack":

	sound-wm8904 {
		...
		simple-audio-card,routing =
			...
			"IN1L", "Microphone Jack",
			"IN1R", "Microphone Jack";
		...
	}

Exposing an onboard digital microphone (DMIC) as a "Microphone Jack" causes semantic confusion in ALSA userspace. Audio routing daemons like PulseAudio and PipeWire use widget names to distinguish between built-in microphones and external pluggable headsets.

Leaving the newly configured digital IN1L input tied to an external analog jack breaks userspace jack detection logic and presents incorrect routing options.

Quoted 2 lines
arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi +0 -0
 	};
 };
Signature · 1 line
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
#3 lore raw

Re: [PATCH v1 1/2] arm64: dts: imx8mm-var-dart: Enable WM8904 DMIC input

Quoted 17 lines · On Fri, Oct 16, 2026 at 08:49:52AM +0000, [email protected] wrote:

[Severity: Medium]
Does this patch also need to update the simple-audio-card,routing array in the sound-wm8904 node?

Currently, the routing in arch/arm64/boot/dts/freescale/imx8mm-var-dart.dtsi still maps IN1L to "Microphone Jack":

	sound-wm8904 {
		...
		simple-audio-card,routing =
			...
			"IN1L", "Microphone Jack",
			"IN1R", "Microphone Jack";
		...
	}
Quoted 9 lines

Exposing an onboard digital microphone (DMIC) as a "Microphone Jack" causes semantic confusion in ALSA userspace. Audio routing daemons like PulseAudio and PipeWire use widget names to distinguish between built-in microphones and external pluggable headsets.

Leaving the newly configured digital IN1L input tied to an external analog jack breaks userspace jack detection logic and presents incorrect routing options.

“Microphone Jack” is the existing DAPM widget name; it does not select analog operation or enable jack detection.
This board does not configure microphone jack detection through simple-audio-card, so I do not see how retaining this name would cause the reported userspace jack detection failure.

This patch adds the missing IN1L DMIC configuration.
The same configuration, including the existing widget name and routing, is also used on the Variscite DART-MX91, DART-MX93 and DART-MX95.

A more descriptive widget name could be considered separately. I would prefer to keep this patch focused on the missing DMIC property.

Stefano

#4 lore raw

PATCH 2/2 arm64: dts: imx8mm-var-som: Enable WM8904 DMIC input

In reply to Stefano Radaelli

From: Stefano Radaelli <[email protected]>

The digital microphone data line is connected to the WM8904 IN1L pin, but this connection is not described in the device tree.

Configure IN1L as DMICDAT1 to enable the digital microphone capture path.

---
 arch/arm64/boot/dts/freescale/imx8mm-var-som.dtsi | 2 ++
 1 file changed, 2 insertions(+)
arch/arm64/boot/dts/freescale/imx8mm-var-som.dtsi +2 -0
index d05b1ab17fed..514cc568fb71 100644
@@ -348,6 +348,8 @@ wm8904: codec@1a {
 				   /bits/ 16 <0x04af 0x324b 0x0010 0x050e>;
 		/* GPIO1 = DMIC_CLK, don't touch others */
 		wlf,gpio-cfg = <0x0018>, <0xffff>, <0xffff>, <0xffff>;
+		/* DMIC is connected to IN1L */
+		wlf,in1l-as-dmicdat1;
 	};
 };
 
Signature · 1 line
2.47.3
#5 lore raw
In reply to Stefano Radaelli

From: Frank Li <[email protected]>

Quoted 11 lines · Stefano Radaelli

This series describes the digital microphone connection to the WM8904 codec on the Variscite DART-MX8M-MINI and VAR-SOM-MX8M-MINI platforms.

Configure IN1L as DMICDAT1 on both platforms to enable the digital microphone capture path.

Stefano Radaelli (2):
arm64: dts: imx8mm-var-dart: Enable WM8904 DMIC input
arm64: dts: imx8mm-var-som: Enable WM8904 DMIC input

[...]

Applied to imx/dt64-intend (will appear to linux-next after v7.4-rc1), thanks!

[1/2] arm64: dts: imx8mm-var-dart: Enable WM8904 DMIC input

      commit: 98bb62f6426fe83d1d9ad1b0a8a689d2babfbcee
[2/2] arm64: dts: imx8mm-var-som: Enable WM8904 DMIC input
      commit: 5391f84729fb68a5b0e3180e4fbf9d64282fd036

Best regards,
--
Frank Li <[email protected]>