]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
arm64: dts: imx952-evk: Add PDM microphone sound card support
authorShengjiu Wang <shengjiu.wang@nxp.com>
Mon, 16 Mar 2026 02:14:39 +0000 (10:14 +0800)
committerFrank Li <Frank.Li@nxp.com>
Fri, 27 Mar 2026 13:52:59 +0000 (09:52 -0400)
Add PDM micphone sound card support, configure the pinmux.

This sound card supports recording sound from PDM microphone
and convert the PDM format data to PCM data.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Frank Li <Frank.Li@nxp.com>
arch/arm64/boot/dts/freescale/imx952-evk.dts

index 2615fbb631453dad078caa2f06f4608cda23674c..62d1c1c7c5013bc8d95305467676dddde9f86b16 100644 (file)
                stdout-path = &lpuart1;
        };
 
+       dmic: dmic {
+               compatible = "dmic-codec";
+               #sound-dai-cells = <0>;
+               num-channels = <2>;
+       };
+
        memory@80000000 {
                device_type = "memory";
                reg = <0x0 0x80000000 0 0x80000000>;
                };
        };
 
+       sound-micfil {
+               compatible = "fsl,imx-audio-card";
+               model = "micfil-audio";
+
+               pri-dai-link {
+                       format = "i2s";
+                       link-name = "micfil hifi";
+
+                       codec {
+                               sound-dai = <&dmic>;
+                       };
+
+                       cpu {
+                               sound-dai = <&micfil>;
+                       };
+               };
+       };
+
        sound-wm8962 {
                compatible = "fsl,imx-audio-wm8962";
                audio-asrc = <&asrc1>;
        status = "okay";
 };
 
+&micfil {
+       assigned-clocks = <&scmi_clk IMX952_CLK_AUDIOPLL1_VCO>,
+                         <&scmi_clk IMX952_CLK_AUDIOPLL2_VCO>,
+                         <&scmi_clk IMX952_CLK_AUDIOPLL1>,
+                         <&scmi_clk IMX952_CLK_AUDIOPLL2>,
+                         <&scmi_clk IMX952_CLK_PDM>;
+       assigned-clock-parents = <0>, <0>, <0>, <0>,
+                               <&scmi_clk IMX952_CLK_AUDIOPLL1>;
+       assigned-clock-rates = <3932160000>, <3612672000>,
+                              <393216000>, <361267200>, <49152000>;
+       pinctrl-0 = <&pinctrl_pdm>;
+       pinctrl-1 = <&pinctrl_pdm_sleep>;
+       pinctrl-names = "default", "sleep";
+       status = "okay";
+};
+
 &sai1 {
        assigned-clocks = <&scmi_clk IMX952_CLK_AUDIOPLL1_VCO>,
                          <&scmi_clk IMX952_CLK_AUDIOPLL2_VCO>,
                >;
        };
 
+       pinctrl_pdm: pdmgrp {
+               fsl,pins = <
+                       IMX952_PAD_PDM_CLK__AONMIX_TOP_PDM_CLK                          0x31e
+                       IMX952_PAD_PDM_BIT_STREAM0__AONMIX_TOP_PDM_BIT_STREAM_0         0x31e
+               >;
+       };
+
+       pinctrl_pdm_sleep: pdmsleepgrp {
+               fsl,pins = <
+                       IMX952_PAD_PDM_CLK__AONMIX_TOP_GPIO1_IO_8               0x31e
+                       IMX952_PAD_PDM_BIT_STREAM0__AONMIX_TOP_GPIO1_IO_9       0x31e
+               >;
+       };
+
        pinctrl_ptn5110: ptn5110grp {
                fsl,pins = <
                        IMX952_PAD_GPIO_IO34__WAKEUPMIX_TOP_GPIO5_IO_14              0x31e