Skip to content

[FEATURE] Add machine table + topology for LG gram 16Z90U-KU7WK (RT713 link 3 + single RT1320 link 1) #10784

@KORDayDream

Description

@KORDayDream

Summary

LG gram 16Z90U-KU7WK (Intel Panther Lake, late-2025 model) reports a SoundWire codec layout
that has no matching entry in snd_soc_acpi_intel_ptl_sdw_machines[] and no corresponding
.tplg in linux-firmware. The kernel falls back to skl_hda_dsp_generic → users get
only HDMI output + the internal DMIC; no analog speakers, no analog mic, no headset.

Hardware layout reported by the kernel:

SDW link Device mfg_id part_id version unique_id Role
1 RT1320 0x025d 0x1320 3 1 mono smart amp (single, not aggregated)
3 RT713 VB 0x025d 0x0713 3 0 jack/headset codec

Notable: the RT713's ACPI does not expose an SDCA_FUNCTION_TYPE_SMART_MIC function,
which has two downstream effects (see "Findings" below).

Hardware

  • Model: LG Electronics 16Z90U-KU7WK (DMI sys_vendor=LG Electronics, product=16Z90U-KU7WK)
  • CPU: Intel Core Ultra 7 355 (Panther Lake)
  • PCI audio: 8086:e428 rev 01, subsystem 1854:0567
  • PCH driver in use: sof-audio-pci-intel-ptl

Software

  • Distro: Linux Mint 22.2 (Ubuntu noble base)
  • Kernel: 6.17.0-23-generic (Ubuntu HWE, mainline 6.17.0 + Canonical patches)
  • linux-firmware: 20240318.git3b128b60-0ubuntu2.27
  • firmware-sof-signed: 2023.12.1-1ubuntu1.10
  • SOF firmware booted: ADSPFW v2.14.1.1, IPC4, topology ABI 3:29:1 / kernel ABI 3:23:1
  • alsa-ucm-conf: 1.2.10-1ubuntu5.10
  • Secure Boot: off

Reproduces on stock 6.17.0-14 and 6.17.0-23 Ubuntu HWE kernels.

Reproduction

dmesg excerpt (verbatim):

sof-audio-pci-intel-ptl 0000:00:1f.3: SoundWire enabled on CannonLake+
platform, using SOF driver
sof-audio-pci-intel-ptl 0000:00:1f.3: No SoundWire machine driver found for
the ACPI-reported configuration:
sof-audio-pci-intel-ptl 0000:00:1f.3: link 1 mfg_id 0x025d part_id 0x1320
version 0x3
sof-audio-pci-intel-ptl 0000:00:1f.3: link 3 mfg_id 0x025d part_id 0x0713
version 0x3
sof-audio-pci-intel-ptl 0000:00:1f.3: hda codecs found, mask 4
sof-audio-pci-intel-ptl 0000:00:1f.3: using HDA machine driver
skl_hda_dsp_generic now

rt712-sdca sdw:0:3:025d:0713:01: rt712_sdca_io_init RT712 VB detected but no
SMART_MIC function exposed in ACPI

aplay -l shows only HDMI; arecord -l shows only DMIC Raw.

Findings (after investigating locally)

I built a patched snd-soc-acpi-intel-match + snd-soc-rt712-sdca against
the matching
source tree (apt source linux-hwe-6.17) and worked through three layers:

1. Missing machine table entry. Closest existing entries are
ptl_sdw_rt713_vb_l2_rt1320_l13 and ptl_sdw_rt713_vb_l3_rt1320_l12, both
for
aggregated 2-amp configs. Our hw has a single RT1320 on link 1 only, so
neither matches
(link_mask is BIT(1) | BIT(3) here).

2. machine_check rejects this hw. Even with the above table entry added,
the
existing entries chain to .machine_check = snd_soc_acpi_intel_sdca_is_device_rt712_vb,
which calls sdca_device_quirk_rt712_vb() (sound/soc/sdca/sdca_device.c).
That function
returns true only when the codec exposes SDCA_FUNCTION_TYPE_SMART_MIC in
ACPI. LG's
firmware on this 16Z90U does not — so the check returns false and the entry is
rejected.
Removing the machine_check makes the match fire. (Side note: this
SMART_MIC gate also
silently affects future LG/OEM systems where the function isn't declared.)

3. Codec aif3 DAI not registered. In rt712-sdca.c, the dmic component
(and
therefore rt712-sdca-aif3) is only devm_snd_soc_register_component()'d
when the same
SDCA_QUIRKS_RT712_VB quirk passes — i.e. when SMART_MIC is exposed. The
topology
references aif3 unconditionally, so binding fails:

sof_sdw sof_sdw: codec dai rt712-sdca-aif3 not registered yet

Registering the DMIC component for all RT712-VB part_ids (0x712 / 0x713 / 0x716 / 0x717)
regardless of SMART_MIC exposure lets the codec come up cleanly. The codec
driver
already logs:

rt712-sdca: RT712 VB detected but no SMART_MIC function exposed in ACPI

…so it knows the situation; it just chooses not to register aif3.

4. No matching topology. With (1)–(3) in place, the closest topologies in
linux-firmware all fail to load:

  • sof-ptl-rt713-l3-rt1320-l12.tplg — programs SDW framing for two amps;
    missing L2 amp
    leads to repeated soundwire_intel.link.3: SCP Msg trf timed out once the
    codec starts
    responding.
  • sof-ptl-rt712-l3-rt1320-l3.tplg — fails with
    error: can't connect DAI alh-copier.Playback-SimpleJack.0 stream Playback-SimpleJack /
    topology: could not load header: -22.

This is the same "widget type 27 / ABI 3:29:1 vs 3:23:1 / alh-copier can't
connect"
shape reported in #5759 for the ASUS Zephyrus PTL with CS42L43.

What is needed

  1. Machine table entry in
    sound/soc/intel/common/soc-acpi-intel-ptl-match.c:

    /* LG gram 16Z90U: RT713 (VB) on link 3 + single RT1320 amp on link 1 */
    static const struct snd_soc_acpi_adr_device rt1320_1_single_adr[] = {
        {
            .adr = 0x000131025D132001ull,
            .num_endpoints = 1,
            .endpoints = &spk_l_endpoint,
            .name_prefix = "rt1320-1"
        }
    };
    
    static const struct snd_soc_acpi_link_adr ptl_sdw_rt713_vb_l3_rt1320_l1[] =

{
{
.mask = BIT(3),
.num_adr = ARRAY_SIZE(rt713_vb_3_adr),
.adr_d = rt713_vb_3_adr,
},
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(rt1320_1_single_adr),
.adr_d = rt1320_1_single_adr,
},
{}
};

And a snd_soc_acpi_mach entry with .link_mask = BIT(1) | BIT(3). The
.machine_check should either be omitted for this hardware, or
snd_soc_acpi_intel_sdca_is_device_rt712_vb should be widened so that a
present
RT713-VB (mfg/part match + interface rev ≥ 0x0801) qualifies even when
SMART_MIC
isn't declared in ACPI. (Happy to send either as a patch.)

  1. rt712-sdca codec driver: register rt712_sdca_dmic_dai (aif3) for RT712-VB
    parts regardless of SMART_MIC ACPI declaration. Suggested guard:

if (sdca_device_quirk_match(slave, SDCA_QUIRKS_RT712_VB) ||
(slave->id.mfg_id == 0x025d &&
(slave->id.part_id == 0x712 || slave->id.part_id == 0x713 ||
slave->id.part_id == 0x716 || slave->id.part_id == 0x717))) {
ret = devm_snd_soc_register_component(dev, &soc_sdca_dev_rt712_dmic,
rt712_sdca_dmic_dai,
ARRAY_SIZE(rt712_sdca_dmic_dai));
...
}
3. Topology: add sof-ptl-rt713-l3-rt1320-l1.tplg (and the -2ch / -4ch variants
that sof_sdw_get_tplg_files() generates) for codec-on-l3 +
single-mono-amp-on-l1.
This is the piece I can't generate locally — it ties into the in-flight PTL
widget /
naming work tracked in #5759.

Related

  • [RFC] CMake: pass firmware file micro version to rimage #5759 — same failure class (PTL + SoundWire + missing exact-layout topology)
    on
    ASUS Zephyrus G16 GU606AP. Suggests this is a generation-wide gap; an
    OEM-aware audit would help.
  • Ubuntu LP #2089891
    — the LNL ThinkPad TM2 RT713 / RT718 fix (acba93d7f3a8d) is the working
    template for the PTL fix needed here.
  • Ubuntu LP #2129952
    — Dell PTL bundle currently staging RT712/RT713VB/RT722/RT1321 backports;
    likely the right vehicle for the LG entry as well.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions