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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions