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]
  • 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?

  • Have you considered looking at one of our Plug-and-Play products?  They detect a wide range of digital audio formats and automatically configure to the provided audio.  There's no I2C programming required.  Also, these parts work with a wide range of logic voltage for digital audio including 3.3V.

    For up to 5.5V supply: max98360a-max98360d.pdf

    If you need more output power, this operates up to a 14V supply: max98365.pdf

    Let me know if you have other questions.

  • Thank you for your suggestion, but I am looking for a part with volume control.

  • We've been using 1.8V logic for digital audio parts for quite some time and don't have anything that will support 3.3V outside of the PnP parts recommended above.  2 things to consider:

    • You can use a bidirectional level translator to change the logic voltage.
    • Alternatively, most of our customers implement a digital volume control upstream from our DAC.  It is not uncommon for a volume controller to be built-in to the Digital Audio Source.  This is the intended use for the PnP parts
  • Thank you, I will try both methods.
    I will use the MAX98357A to implement digital volume control.