Skip to content

Samsung Galaxy Book 4 Pro (940XGK) - No speaker audio, MAX98390 amplifiers not integrated #5568

@BreadJS

Description

@BreadJS

System Information

  • Laptop Model: Samsung Galaxy Book 4 Pro (940XGK)
  • BIOS Version: P09VAG
  • Kernel Version: 6.17.2-061702-generic
  • Distribution: Ubuntu 24.04
  • Audio Controller: Intel Meteor Lake-P HD Audio Controller [8086:7e28] (rev 20)
  • HDA Codec: Realtek ALC298 (Subsystem ID: 0x144dca07)
  • Speaker Amplifiers: 4x Maxim MAX98390 on I2C bus 2

Problem Description

Internal speakers produce no audio output. Headphones work perfectly through the ALC298 HDA codec. The laptop is equipped with four MAX98390 speaker amplifiers connected via I2C2 at addresses 0x38, 0x39, 0x3C, and 0x3D, but they are not initialized or integrated into the audio pipeline.

Current Status

Working

  • Headphone audio through ALC298 codec
  • MAX98390 kernel driver (snd-soc-max98390) present and functional
  • ACPI properly declares MAX98390 devices
  • MAX98390 chips respond when manually instantiated (Revision ID: 0x42)
  • samsung-galaxybook platform driver loaded

Not Working

  • Internal speaker audio
  • Automatic I2C device instantiation from ACPI
  • SOF topology integration for MAX98390 amplifiers

Technical Details

ACPI Declaration

The DSDT contains a proper MAX98390 device declaration:

Scope (_SB.PC00.I2C2)
{
    Device (MX98)
    {
        Name (_HID, "MAX98390")
        Name (_UID, One)
        Name (RBUF, ResourceTemplate ()
        {
            I2cSerialBusV2 (0x0038, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.PC00.I2C2",
                0x00, ResourceConsumer, , Exclusive, )
            I2cSerialBusV2 (0x0039, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.PC00.I2C2",
                0x00, ResourceConsumer, , Exclusive, )
            I2cSerialBusV2 (0x003C, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.PC00.I2C2",
                0x00, ResourceConsumer, , Exclusive, )
            I2cSerialBusV2 (0x003D, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\_SB.PC00.I2C2",
                0x00, ResourceConsumer, , Exclusive, )
        })
        Method (_STA, 0, NotSerialized)
        {
            Return (0x0F)
        }
        Method (_CRS, 0, NotSerialized)
        {
            Return (RBUF)
        }
    }
}

Current SOF Configuration

[    4.679186] sof-audio-pci-intel-mtl 0000:00:1f.3:  Topology file: intel/sof-ace-tplg/sof-hda-generic-4ch.tplg
[    4.679869] sof-audio-pci-intel-mtl 0000:00:1f.3: Loaded firmware library: ADSPFW, version: 2.13.0.1
[    4.814325] sof-audio-pci-intel-mtl 0000:00:1f.3: Booted firmware version: 2.13.0.1
[    4.984618] skl_hda_dsp_generic skl_hda_dsp_generic: hda_dsp_hdmi_build_controls: no PCM in topology for HDMI converter 3

The system loads sof-hda-generic-4ch.tplg which only handles the HDA codec and has no knowledge of the I2C-connected MAX98390 amplifiers.

Manual Testing Results

When manually instantiating the MAX98390 devices:

echo "max98390 0x39" | sudo tee /sys/bus/i2c/devices/i2c-2/new_device
echo "max98390 0x3c" | sudo tee /sys/bus/i2c/devices/i2c-2/new_device
echo "max98390 0x3d" | sudo tee /sys/bus/i2c/devices/i2c-2/new_device

The devices are successfully detected:

[  830.419732] i2c i2c-2: new_device: Instantiated device max98390 at 0x39
[  830.423208] max98390 2-0039: MAX98390 revisionID: 0x42
[  1039.725112] max98390 2-003c: MAX98390 revisionID: 0x42
[  1051.542250] max98390 2-003d: MAX98390 revisionID: 0x42

However, address 0x38 consistently fails with error -16 (EBUSY), likely because the ACPI device i2c-MAX98390:00 is already present but has no driver bound to it.

ACPI Modalias Issue

The ACPI device reports modalias as acpi:MAX98390: but the driver alias is acpi*:MX98390:*, causing the automatic binding to fail:

$ cat /sys/bus/i2c/devices/i2c-2/i2c-MAX98390:00/modalias
acpi:MAX98390:

$ modinfo snd-soc-max98390 | grep alias
alias:          i2c:max98390
alias:          acpi*:MX98390:*

What's Needed

  1. SOF Topology File: Create a new topology file for Meteor Lake systems with ALC298 + MAX98390 configuration (e.g., sof-mtl-max98390-alc298.tplg)

  2. Machine Driver Quirk: Add DMI matching for Samsung 940XGK to automatically select the correct topology and initialize the MAX98390 amplifiers

  3. ACPI Modalias Fix: Update the MAX98390 driver to also match acpi:MAX98390: in addition to acpi:MX98390:

  4. I2C Device Instantiation: Ensure all four MAX98390 devices are properly instantiated from ACPI

Related Information

  • This issue is similar to previous Samsung Galaxy Book models that required speaker amplifier quirks
  • Kernel Bugzilla #218862 also tracks this issue
  • The samsung-galaxybook platform driver (mainline since 6.15) is loaded but doesn't handle audio configuration

Additional Logs Available

I can provide additional debugging information if needed:

  • Complete alsa-info.sh output
  • Full DSDT dump
  • SOF firmware debug logs
  • I2C bus traces

Metadata

Metadata

Assignees

No one assigned

    Labels

    MTLApplies to Meteor Lake platform.OEM HDA codec customizationIssue with HDA codec verbs/configuration by OEMbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions