Hello,
I'm working on integrating a MAX98089 audio codec with the i.MX8M Mini. I have it so the driver is detected through 'aplay -l', alsamixer and such. It appears to work from the linux driver view, but when sound is played nothing can be heard.
When playing a demo sound, the speaker output has the following signal.
Any help would be appreciated. Thank you.
Here is the relevant device tree.
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default", "sleep";
pinctrl-0 = <&pinctrl_i2c3>;
pinctrl-1 = <&pinctrl_i2c3_sleep>;
status = "okay";
max98088: codec@10 {
compatible = "maxim,max98088", "maxim,max98089";
reg = <0x10>;
#sound-dai-cells = <0>;
clock-names = "mclk";
clocks = <&clk IMX8MM_CLK_SAI5_ROOT>;
status = "okay";
};
};
sound-max98088 {
compatible = "simple-audio-card";
pinctrl-names = "default";
simple-audio-card,name = "max98088-audio";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&cpu_dai>;
simple-audio-card,frame-master = <&cpu_dai>;
simple-audio-card,widgets =
"Speaker", "SPKL",
"Speaker", "SPKR",
"Headphone", "HPL",
"Headphone", "HPR";
simple-audio-card,routing =
"SPKL", "Left SPK Mixer",
"SPKR", "Right SPK Mixer",
"HPL", "HP Left Out",
"HPR", "HP Right Out";
cpu_dai: simple-audio-card,cpu {
sound-dai = <&sai5>;
};
simple-audio-card,codec {
sound-dai = <&max98088>;
clocks = <&clk IMX8MM_CLK_SAI5_ROOT>;
};
};
&sai5 {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&pinctrl_sai5>;
pinctrl-1 = <&pinctrl_sai5_sleep>;
assigned-clocks = <&clk IMX8MM_CLK_SAI5>;
assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
assigned-clock-rates = <12288000>;
clocks = <&clk IMX8MM_CLK_SAI5_IPG>, <&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_SAI5_ROOT>, <&clk IMX8MM_CLK_DUMMY>,
<&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_AUDIO_PLL1_OUT>,
<&clk IMX8MM_AUDIO_PLL2_OUT>;
clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k";
status = "okay";
};
I've attempted to follow this:
Solved: Integrating audio codec MAX98089 on i.MX8M Plus - NXP Community
but can't get past the error:
imx-max98088 sound-max98089: ASoC: CODEC DAI max98088 not registered
Do you select the codec driver in kernel? Add the driver in defconfig file or select the driver in menuconfig.