Post Go back to editing

MAX98388, not working, Device Tree

Category: Software
Product Number: MAX98388
Software Version: Linux

Hello,
I am trying to use the MAX98388 on an Embedded linux with a sam9x60 but it doesn't wok.
I think there are some mistakes on my device tree.
Here is an extract :

sound {


compatible = "simple-audio-card";
simple-audio-card,name = "max98388";
simple-audio-card,format = "i2s";
status = "okay";

simple-audio-card,bitclock-m*a*s*t*e*r = ; // I ad * to respect the Q&A policy
simple-audio-card,frame-m*a*s*t*e*r = ;
simple-audio-card,routing = "Speaker", "Speaker";

cpu_dai: simple-audio-card,cpu {
sound-dai =<&i2s> ;
};

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

};

&i2s {status = "okay";

pinctrl-names = "default";
#sound-dai-cells = <0> ;
pinctrl-0 = <&pinctrl_i2s_default>;

};

&flx0 {


atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
status = "okay";

i2c0: i2c@600 {


dmas = <0>, <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_flx0_default>;
i2c-analog-filter;
i2c-digital-filter;
i2c-digital-filter-width-ns = <35>;
status = "okay";

eeprom@53 {


compatible = "atmel,24c02";
reg = <0x53>;
pagesize = <16>;


};

max98388: amplifier@39 {

compatible = "maxim,max98388";
reg = <0x39>;
#sound-dai-cells = <0>;
status = "okay";
adi,vmon-slot-no = <0>;
adi,imon-slot-no = <1>;
adi,interleave-mode;
reset-gpios = <&pioB 24 GPIO_ACTIVE_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_max98388_reset>;


};

};

};

I tried to test the chip with the following command : speaker-test -D plughw:0,0 -c 2 -twav

I think that the MAX98388 is correctly connected.
The max98388 seems to be detected.
[root@sam9x60curiosity ~]$ dmesg | grep -i max98388
[ 1.887618] max98388 0-0039: MAX98388 revisionID: 0x41
[ 2.044804] max98388 0-0039: Reset completed (retry:0)
[ 2.089222] #0: max98388
And the MAX98388 is detected by i2c at the correct adresse. 39
[root@sam9x60curiosity ~]$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: max98388 [max98388], device 0: f001c000.i2s-max98388-aif1 max98388-aif1-0 [f001c000.i2s-max98388-aif1 max98388-aif1-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

Any help would be greatly appreciated. Thanks!

Edit Notes

Some parameters between were not visible.
[edited by: hekuat at 9:59 AM (GMT -5) on 28 Jan 2026]
Parents
  • The driver initialization is complete, but no sound is played, so this appears to be a general amplifier bring-up issue. Could you check the register dump of the MAX98388, chip power supply, and the audio format of the I2S master.  You need to ensure the digital audio provided by the audio master conforms to the configuration set in the MAX98388.

    I can help with this if you like, but I'll need the following:

    • Digital audio master configuration.  This includes, but not limited to Format (I2S, TDM, etc.), sample rate, bit depth per channel, number of channels)
    • Provide a MAX98388 register dump.  If you provide all register writes you're making , I can confirm if it correctly matches the supplied digital audio.
    • Provide a scope measurement of the digital audio master output.  This includes BCLK, LRCLK, and DIN.  The scope should be triggered on LRCLK so I can decode the frame properly.  From this, I can compare the digital audio to your desired setting and ensure it matches.

    More things to verify:

    • Double check the hardware enable pin to make certain the device is not in hardware shutdown.
    • Confirm all power supplies are provided and match EC table values.
  • Thank you for your help.

    I checked my I2S signal. The I2S signal sent by my microprocessor is at 3.3V whereas it should be at 1.8V.

    Do you know if there is another module that can work at 3.3V?

Reply Children