asoc-simple-card: parse error after upgrading to kernel 6.18.x

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

asoc-simple-card: parse error after upgrading to kernel 6.18.x

308 Views
MicMoba
Contributor V

Hi,

here is my working DT for Kernel 6.6.52:

/ {
codec: max98357a@0{
        compatible = "maxim,max98357a";
        #sound-dai-cells = <0>;
        pinctrl-names = "default";
        pinctrl-0 = <&sdmode_en>;
        sdmode-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
        status = "okay";
    };

    sound {
        compatible = "simple-audio-card";

        simple-audio-card,name = "SAI3 MAX98357A";
        simple-audio-card,format = "i2s";
        simple-audio-card,widgets = "Speaker","Speakers";
        simple-audio-card,routing = "Speakers","Speaker";
        simple-audio-card,bitclock-master = <&cpu_dai>;
        simple-audio-card,frame-master = <&cpu_dai>;

        cpu_dai: simple-audio-card,cpu {
            sound-dai = <&sai3>;
            clocks = <&clk IMX8MP_CLK_SAI3>;
            clock-names = "mclk";
            //system-clock-frequency = <&clk IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>;
            dai-tdm-slot-num = <2>;
            dai-tdm-slot-width = <32>;
        };

        codec_dai: simple-audio-card,codec {
            sound-dai = <&codec>;
            //clocks = <&clk IMX8MP_CLK_SAI3>;
        };
    };
};
&sai3{
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_sai3>;
    #sound-dai-cells = <0>;

    clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_IPG>,
             <&clk IMX8MP_CLK_DUMMY>,
             <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>,
             <&clk IMX8MP_CLK_DUMMY>,
             <&clk IMX8MP_CLK_DUMMY>,
             <&clk IMX8MP_AUDIO_PLL1_OUT>,
             <&clk IMX8MP_AUDIO_PLL2_OUT>;
    clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k";

    assigned-clocks = <&clk IMX8MP_CLK_SAI3>,
                      <&clk IMX8MP_AUDIO_PLL1>,
                      <&clk IMX8MP_AUDIO_PLL2>;

    assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL2_OUT>,
                             <&clk IMX8MP_AUDIO_PLL1_OUT>;
    // Try common MCLK rates that divide well to 48 kHz multiples
    // Option A: 24.576 MHz (very common for MAX98357A + 48 kHz)
    assigned-clock-rates = <24576000>,       // PLL2 for 48 kHz
                           <22579200>;       // PLL1 for 44.1 kHz

    // Option B (if 44.1 kHz needed later): use PLL1 + 22579200
    //assigned-clock-rates = <22579200>;
    fsl,sai-asynchronous;
    fsl,sai-mclk-direction-output;
    status = "okay";
};

After moving to kernel 6.18.20 SAI3 is not probing and I got no sound-card.

The boot log shows:
platform sound: deferred probe pending: asoc-simple-card: parse error

What changes in the DT syntax from kernel 6.6.52 to 6.18.x? I didn't find anything relevant. How can I investigate the parse error?

0 Kudos
Reply
4 Replies

200 Views
MicMoba
Contributor V

I got it, sound is working.

My kernel configs:

CONFIG_SND_IMX_SOC=m
CONFIG_SND_IMX_SOC=m
CONFIG_SND_SOC_FSL_SAI=m
CONFIG_SND_SOC_FSL_UTILS=m
CONFIG_IMX_AIPSTZ=y

The devicetree part:

/{
    codec: max98357a@0{
        compatible = "maxim,max98357a";
        #sound-dai-cells = <0>;
        pinctrl-names = "default";
        pinctrl-0 = <&sdmode_en>;
        sdmode-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
        status = "okay";
    };

    sound {
        compatible = "simple-audio-card";
        status = "okay";
        simple-audio-card,name = "SAI3 MAX98357A";
        simple-audio-card,format = "i2s";
        simple-audio-card,widgets = "Speaker", "Speaker Ext";
        simple-audio-card,routing = "Speaker Ext", "Speaker";
        simple-audio-card,bitclock-master = <&cpu_dai>;
        simple-audio-card,frame-master = <&cpu_dai>;

        cpu_dai: simple-audio-card,cpu {
            sound-dai = <&sai3>;
            clocks = <&clk IMX8MP_CLK_SAI3>;
            clock-names = "mclk";
            //system-clock-frequency = <&clk IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>;
            dai-tdm-slot-num = <2>;
            dai-tdm-slot-width = <32>;
        };

        codec_dai: simple-audio-card,codec {
            sound-dai = <&codec>;
        };
    };
};

&sdma2 {
    status = "okay";
    fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
};

&aips5 {
    status = "okay";
};

&audio_blk_ctrl {
    status = "okay";
    assigned-clocks = <&clk IMX8MP_AUDIO_PLL1>,
                      <&clk IMX8MP_AUDIO_PLL2>;
    assigned-clock-rates = <393216000>, <361267200>;
};

&sai3{
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_sai3>;
    #sound-dai-cells = <0>;
    assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
    assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
    assigned-clock-rates = <12288000>;

    clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_IPG>,
             <&clk IMX8MP_CLK_DUMMY>,
             <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1>,
             <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK2>,
             <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI3_MCLK3>;
    clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3";

    dmas = <&sdma2 4 2 0>, <&sdma2 5 2 0>;
    dma-names = "rx", "tx";
    
    fsl,sai-asynchronous;
    fsl,sai-mclk-direction-output;
    status = "okay";
};

The devicetree base is imx8mp.dtsi

 

 

0 Kudos
Reply

218 Views
MicMoba
Contributor V

Hi,

I have moved one step forward. After enabling the kernel configuration option CONFIG_IMX_AIPSTZ=y, the sound card device is now available.

Because  sai3 node is a sub node of aips5 I also had to enable aips5 in my devicetree:

&aips5 {
status = "okay";
};

Now I got the following error messages:

[ 13.081746] fsl-sai 30c30000.sai: ASoC error (-110): at snd_soc_dai_hw_params() on sai-tx-rx
[ 13.090223] sai-tx-rx-HiFi: ASoC error (-110): at __soc_pcm_hw_params() on sai-tx-rx-HiFi
speaker-test -c 2 -r 48000 -t sine 2>&1 | head -20
[ 31.368187] fsl-sai 30c30000.sai: ASoC error (-110): at snd_soc_dai_hw_params() on sai-tx-rx
[ 31.376682] sai-tx-rx-HiFi: ASoC error (-110): at __soc_pcm_hw_params() on sai-tx-rx-HiFi
Unable to set hw params for playback: Connection timed out

speaker-test 1.2.11

Playback device is default
Stream parameters are 48000Hz, S16_LE, 2 channels
Sine wave rate is 440.0000Hz
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 24 to 131072
Period size range from 12 to 16383
Periods = 4
Setting of hwparams failed: Connection timed out




 

0 Kudos
Reply

276 Views
JorgeCas
NXP TechSupport
NXP TechSupport

Hello,

Could you please share your dmesg log?

Best regards.

0 Kudos
Reply

253 Views
MicMoba
Contributor V

Hi Jorge,

dmesg log and running device tree (./dtc -I fs -O dts /proc/device-tree > /tmp/running.dts) attached.

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2397822%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Easoc-simple-card%3A%20parse%20error%20after%20upgrading%20to%20kernel%206.18.x%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2397822%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3Ehere%20is%20my%20working%20DT%20for%20Kernel%206.6.52%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%2F%20%7B%0Acodec%3A%20max98357a%400%7B%0A%20%20%20%20%20%20%20%20compatible%20%3D%20%22maxim%2Cmax98357a%22%3B%0A%20%20%20%20%20%20%20%20%23sound-dai-cells%20%3D%20%26lt%3B0%26gt%3B%3B%0A%20%20%20%20%20%20%20%20pinctrl-names%20%3D%20%22default%22%3B%0A%20%20%20%20%20%20%20%20pinctrl-0%20%3D%20%26lt%3B%26amp%3Bsdmode_en%26gt%3B%3B%0A%20%20%20%20%20%20%20%20sdmode-gpios%20%3D%20%26lt%3B%26amp%3Bgpio4%2028%20GPIO_ACTIVE_HIGH%26gt%3B%3B%0A%20%20%20%20%20%20%20%20status%20%3D%20%22okay%22%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20sound%20%7B%0A%20%20%20%20%20%20%20%20compatible%20%3D%20%22simple-audio-card%22%3B%0A%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cname%20%3D%20%22SAI3%20MAX98357A%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cformat%20%3D%20%22i2s%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cwidgets%20%3D%20%22Speaker%22%2C%22Speakers%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Crouting%20%3D%20%22Speakers%22%2C%22Speaker%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cbitclock-master%20%3D%20%26lt%3B%26amp%3Bcpu_dai%26gt%3B%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cframe-master%20%3D%20%26lt%3B%26amp%3Bcpu_dai%26gt%3B%3B%0A%0A%20%20%20%20%20%20%20%20cpu_dai%3A%20simple-audio-card%2Ccpu%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20sound-dai%20%3D%20%26lt%3B%26amp%3Bsai3%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_SAI3%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20clock-names%20%3D%20%22mclk%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2Fsystem-clock-frequency%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20dai-tdm-slot-num%20%3D%20%26lt%3B2%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%20%20codec_dai%3A%20simple-audio-card%2Ccodec%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20sound-dai%20%3D%20%26lt%3B%26amp%3Bcodec%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2Fclocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_SAI3%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%3B%0A%7D%3B%0A%26amp%3Bsai3%7B%0A%20%20%20%20pinctrl-names%20%3D%20%22default%22%3B%0A%20%20%20%20pinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_sai3%26gt%3B%3B%0A%20%20%20%20%23sound-dai-cells%20%3D%20%26lt%3B0%26gt%3B%3B%0A%0A%20%20%20%20clocks%20%3D%20%26lt%3B%26amp%3Baudio_blk_ctrl%20IMX8MP_CLK_AUDIOMIX_SAI3_IPG%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_DUMMY%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Baudio_blk_ctrl%20IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_DUMMY%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_DUMMY%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL1_OUT%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL2_OUT%26gt%3B%3B%0A%20%20%20%20clock-names%20%3D%20%22bus%22%2C%20%22mclk0%22%2C%20%22mclk1%22%2C%20%22mclk2%22%2C%20%22mclk3%22%2C%20%22pll8k%22%2C%20%22pll11k%22%3B%0A%0A%20%20%20%20assigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_SAI3%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL1%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL2%26gt%3B%3B%0A%0A%20%20%20%20assigned-clock-parents%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL2_OUT%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL1_OUT%26gt%3B%3B%0A%20%20%20%20%2F%2F%20Try%20common%20MCLK%20rates%20that%20divide%20well%20to%2048%20kHz%20multiples%0A%20%20%20%20%2F%2F%20Option%20A%3A%2024.576%20MHz%20(very%20common%20for%20MAX98357A%20%2B%2048%20kHz)%0A%20%20%20%20assigned-clock-rates%20%3D%20%26lt%3B24576000%26gt%3B%2C%20%20%20%20%20%20%20%2F%2F%20PLL2%20for%2048%20kHz%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B22579200%26gt%3B%3B%20%20%20%20%20%20%20%2F%2F%20PLL1%20for%2044.1%20kHz%0A%0A%20%20%20%20%2F%2F%20Option%20B%20(if%2044.1%20kHz%20needed%20later)%3A%20use%20PLL1%20%2B%2022579200%0A%20%20%20%20%2F%2Fassigned-clock-rates%20%3D%20%26lt%3B22579200%26gt%3B%3B%0A%20%20%20%20fsl%2Csai-asynchronous%3B%0A%20%20%20%20fsl%2Csai-mclk-direction-output%3B%0A%20%20%20%20status%20%3D%20%22okay%22%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3EAfter%20moving%20to%20kernel%206.18.20%20SAI3%20is%20not%20probing%20and%20I%20got%20no%20sound-card.%3C%2FP%3E%3CP%3EThe%20boot%20log%20shows%3A%3CBR%20%2F%3Eplatform%20sound%3A%20deferred%20probe%20pending%3A%20asoc-simple-card%3A%20parse%20error%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3EWhat%20changes%20in%20the%20DT%20syntax%20from%20kernel%206.6.52%20to%206.18.x%3F%20I%20didn't%20find%20anything%20relevant.%20How%20can%20I%20investigate%20the%20parse%20error%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2397822%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3Ei.MX%208M%20%7C%20i.MX%208M%20Mini%20%7C%20i.MX%208M%20Nano%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ELinux%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EYocto%20Project%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2397907%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20asoc-simple-card%3A%20parse%20error%20after%20upgrading%20to%20kernel%206.18.x%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2397907%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHello%2C%3C%2FP%3E%0A%3CP%3ECould%20you%20please%20share%20your%20dmesg%20log%3F%3C%2FP%3E%0A%3CP%3EBest%20regards.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2398530%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20asoc-simple-card%3A%20parse%20error%20after%20upgrading%20to%20kernel%206.18.x%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2398530%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20Jorge%2C%3C%2FP%3E%3CP%3Edmesg%20log%20and%20running%20device%20tree%20(.%2Fdtc%20-I%20fs%20-O%20dts%20%2Fproc%2Fdevice-tree%20%26gt%3B%20%2Ftmp%2Frunning.dts)%20attached.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2399222%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20asoc-simple-card%3A%20parse%20error%20after%20upgrading%20to%20kernel%206.18.x%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2399222%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3EI%20have%20moved%20one%20step%20forward.%20After%20enabling%20the%20kernel%20configuration%20option%20CONFIG_IMX_AIPSTZ%3Dy%2C%20the%20sound%20card%20device%20is%20now%20available.%3C%2FP%3E%3CP%3EBecause%26nbsp%3B%20sai3%20node%20is%20a%20sub%20node%20of%20aips5%20I%20also%20had%20to%20enable%20aips5%20in%20my%20devicetree%3A%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3C%2FDIV%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3E%26amp%3Baips5%20%7B%0Astatus%20%3D%20%22okay%22%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3ENow%20I%20got%20the%20following%20error%20messages%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3E%5B%2013.081746%5D%20fsl-sai%2030c30000.sai%3A%20ASoC%20error%20(-110)%3A%20at%20snd_soc_dai_hw_params()%20on%20sai-tx-rx%0A%5B%2013.090223%5D%20sai-tx-rx-HiFi%3A%20ASoC%20error%20(-110)%3A%20at%20__soc_pcm_hw_params()%20on%20sai-tx-rx-HiFi%3C%2FCODE%3E%3C%2FPRE%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3Espeaker-test%20-c%202%20-r%2048000%20-t%20sine%202%26gt%3B%26amp%3B1%20%7C%20head%20-20%0A%5B%2031.368187%5D%20fsl-sai%2030c30000.sai%3A%20ASoC%20error%20(-110)%3A%20at%20snd_soc_dai_hw_params()%20on%20sai-tx-rx%0A%5B%2031.376682%5D%20sai-tx-rx-HiFi%3A%20ASoC%20error%20(-110)%3A%20at%20__soc_pcm_hw_params()%20on%20sai-tx-rx-HiFi%0AUnable%20to%20set%20hw%20params%20for%20playback%3A%20Connection%20timed%20out%0A%0Aspeaker-test%201.2.11%0A%0APlayback%20device%20is%20default%0AStream%20parameters%20are%2048000Hz%2C%20S16_LE%2C%202%20channels%0ASine%20wave%20rate%20is%20440.0000Hz%0ARate%20set%20to%2048000Hz%20(requested%2048000Hz)%0ABuffer%20size%20range%20from%2024%20to%20131072%0APeriod%20size%20range%20from%2012%20to%2016383%0APeriods%20%3D%204%0ASetting%20of%20hwparams%20failed%3A%20Connection%20timed%20out%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2399399%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20asoc-simple-card%3A%20parse%20error%20after%20upgrading%20to%20kernel%206.18.x%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2399399%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20got%20it%2C%20sound%20is%20working.%3C%2FP%3E%3CP%3EMy%20kernel%20configs%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-c%22%3E%3CCODE%3ECONFIG_SND_IMX_SOC%3Dm%0ACONFIG_SND_IMX_SOC%3Dm%0ACONFIG_SND_SOC_FSL_SAI%3Dm%0ACONFIG_SND_SOC_FSL_UTILS%3Dm%0ACONFIG_IMX_AIPSTZ%3Dy%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3EThe%20devicetree%20part%3A%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-markup%22%3E%3CCODE%3E%2F%7B%0A%20%20%20%20codec%3A%20max98357a%400%7B%0A%20%20%20%20%20%20%20%20compatible%20%3D%20%22maxim%2Cmax98357a%22%3B%0A%20%20%20%20%20%20%20%20%23sound-dai-cells%20%3D%20%26lt%3B0%26gt%3B%3B%0A%20%20%20%20%20%20%20%20pinctrl-names%20%3D%20%22default%22%3B%0A%20%20%20%20%20%20%20%20pinctrl-0%20%3D%20%26lt%3B%26amp%3Bsdmode_en%26gt%3B%3B%0A%20%20%20%20%20%20%20%20sdmode-gpios%20%3D%20%26lt%3B%26amp%3Bgpio4%2028%20GPIO_ACTIVE_HIGH%26gt%3B%3B%0A%20%20%20%20%20%20%20%20status%20%3D%20%22okay%22%3B%0A%20%20%20%20%7D%3B%0A%0A%20%20%20%20sound%20%7B%0A%20%20%20%20%20%20%20%20compatible%20%3D%20%22simple-audio-card%22%3B%0A%20%20%20%20%20%20%20%20status%20%3D%20%22okay%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cname%20%3D%20%22SAI3%20MAX98357A%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cformat%20%3D%20%22i2s%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cwidgets%20%3D%20%22Speaker%22%2C%20%22Speaker%20Ext%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Crouting%20%3D%20%22Speaker%20Ext%22%2C%20%22Speaker%22%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cbitclock-master%20%3D%20%26lt%3B%26amp%3Bcpu_dai%26gt%3B%3B%0A%20%20%20%20%20%20%20%20simple-audio-card%2Cframe-master%20%3D%20%26lt%3B%26amp%3Bcpu_dai%26gt%3B%3B%0A%0A%20%20%20%20%20%20%20%20cpu_dai%3A%20simple-audio-card%2Ccpu%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20sound-dai%20%3D%20%26lt%3B%26amp%3Bsai3%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_SAI3%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20clock-names%20%3D%20%22mclk%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2Fsystem-clock-frequency%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20dai-tdm-slot-num%20%3D%20%26lt%3B2%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20dai-tdm-slot-width%20%3D%20%26lt%3B32%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%20%20codec_dai%3A%20simple-audio-card%2Ccodec%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20sound-dai%20%3D%20%26lt%3B%26amp%3Bcodec%26gt%3B%3B%0A%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%7D%3B%0A%7D%3B%0A%0A%26amp%3Bsdma2%20%7B%0A%20%20%20%20status%20%3D%20%22okay%22%3B%0A%20%20%20%20fsl%2Csdma-ram-script-name%20%3D%20%22imx%2Fsdma%2Fsdma-imx7d.bin%22%3B%0A%7D%3B%0A%0A%26amp%3Baips5%20%7B%0A%20%20%20%20status%20%3D%20%22okay%22%3B%0A%7D%3B%0A%0A%26amp%3Baudio_blk_ctrl%20%7B%0A%20%20%20%20status%20%3D%20%22okay%22%3B%0A%20%20%20%20assigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL1%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL2%26gt%3B%3B%0A%20%20%20%20assigned-clock-rates%20%3D%20%26lt%3B393216000%26gt%3B%2C%20%26lt%3B361267200%26gt%3B%3B%0A%7D%3B%0A%0A%26amp%3Bsai3%7B%0A%20%20%20%20pinctrl-names%20%3D%20%22default%22%3B%0A%20%20%20%20pinctrl-0%20%3D%20%26lt%3B%26amp%3Bpinctrl_sai3%26gt%3B%3B%0A%20%20%20%20%23sound-dai-cells%20%3D%20%26lt%3B0%26gt%3B%3B%0A%20%20%20%20assigned-clocks%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_SAI3%26gt%3B%3B%0A%20%20%20%20assigned-clock-parents%20%3D%20%26lt%3B%26amp%3Bclk%20IMX8MP_AUDIO_PLL1_OUT%26gt%3B%3B%0A%20%20%20%20assigned-clock-rates%20%3D%20%26lt%3B12288000%26gt%3B%3B%0A%0A%20%20%20%20clocks%20%3D%20%26lt%3B%26amp%3Baudio_blk_ctrl%20IMX8MP_CLK_AUDIOMIX_SAI3_IPG%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Bclk%20IMX8MP_CLK_DUMMY%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Baudio_blk_ctrl%20IMX8MP_CLK_AUDIOMIX_SAI3_MCLK1%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Baudio_blk_ctrl%20IMX8MP_CLK_AUDIOMIX_SAI3_MCLK2%26gt%3B%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%26amp%3Baudio_blk_ctrl%20IMX8MP_CLK_AUDIOMIX_SAI3_MCLK3%26gt%3B%3B%0A%20%20%20%20clock-names%20%3D%20%22bus%22%2C%20%22mclk0%22%2C%20%22mclk1%22%2C%20%22mclk2%22%2C%20%22mclk3%22%3B%0A%0A%20%20%20%20dmas%20%3D%20%26lt%3B%26amp%3Bsdma2%204%202%200%26gt%3B%2C%20%26lt%3B%26amp%3Bsdma2%205%202%200%26gt%3B%3B%0A%20%20%20%20dma-names%20%3D%20%22rx%22%2C%20%22tx%22%3B%0A%20%20%20%20%0A%20%20%20%20fsl%2Csai-asynchronous%3B%0A%20%20%20%20fsl%2Csai-mclk-direction-output%3B%0A%20%20%20%20status%20%3D%20%22okay%22%3B%0A%7D%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3EThe%20devicetree%20base%20is%20imx8mp.dtsi%3C%2FP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E