Skip to content

[BUG] SoundWire bus-wide IO timeouts on CS42L45+CS35L57 after enabling SDCA_CLASS - Dell XPS 16 DA16260 (follow-up to #5720) #5854

Description

@CodeBleu

Related to #5720 (closed) — same hardware/subsystem (10280dba, Dell XPS 16
DA16260, SKU 0DBA), same root cause identified there
(CONFIG_SND_SOC_SDCA_CLASS missing), confirmed independently here on
Gentoo/OpenRC rather than Arch. However, after applying that fix I hit a
different, unresolved failure — #5720 ended in a fully working card, this
does not. Opening separately since it's a distinct symptom from a different
starting point in the boot sequence.

System information

  • Machine: Dell XPS 16 DA16260 (2026), BIOS 1.9.0 (2026-07-10)
  • CPU: Intel Core Ultra 7 358H (Panther Lake)
  • System SKU: 0DBA (dmidecode -s system-sku-number)
  • Audio hardware: Cirrus Logic CS42L45 (jack codec, link 0) + 4x Cirrus
    Logic CS35L57 Rev B2 OTP1 (amps, links 2/3)
  • Distro: Gentoo Linux (OpenRC)
  • Kernel: 7.1.5 (gentoo-sources, genpatches applied)
  • sof-firmware: 2025.12.2 (community build, sof-ptl.ri)
  • linux-firmware: 20260622

Steps already taken

  1. CONFIG_SND_SOC_SOF_HDA_LINK was disabled by default — enabling it was
    required to get hdac_bus_eml_get_mutex() to return a real mutex instead
    of the always-NULL stub in include/sound/hda-mlink.h, which caused an
    immediate -ENODEV at hda_sdw_probe() before any SoundWire activity.
  2. CONFIG_PINCTRL_INTEL_PLATFORM was not enabled — required for Panther
    Lake GPIO/pinctrl. Without it, amp probing failed with Failed to add gpio mapping to AF01 (-ENXIO), matching the documented failure mode in
    Documentation/sound/codecs/cs35l56.rst.
  3. Added a local DMI quirk table entry for SKU 0DBA (mirroring the existing
    0DD6 entry in sof_sdw.c) — confirmed via A/B test this has no
    effect
    on the timeout issue below (identical dmesg with/without it).
  4. Updated to the latest available kernel point release (7.1.5) and latest
    linux-firmware (20260622) — no change in behavior at that point.
  5. Per No audio on Dell XPS 16 2026 (Panther Lake) - CS42L45 + CS35L57 - no driver for CS42L45, missing firmware #5720: enabled CONFIG_SND_SOC_SDCA_CLASS=m (module, since
    SND_SOC/SOUNDWIRE are also =m on this config — Kconfig won't allow
    it built-in when dependencies are modular). This was the missing piece
    to get the CS42L45 driver binding and loading firmware correctly:

[ 17.563180] sdca_class sdw:0:0:01fa:4245:01: SWFT not available
[ 17.573463] Loading firmware: sdca/1fa/1028/dba/2.bin
[ 17.574342] snd_soc_sdca_class_function snd_soc_sdca.SmartMic.0: loading SWF: 1fa-2-1
[ 17.578944] Loading firmware: sdca/1fa/1028/dba/42450005.bin
[ 17.579372] snd_soc_sdca_class_function snd_soc_sdca.SmartMic.0: loading SWF: 1fa-42450005-1301
[ 18.148725] snd_soc_sdca_class_function snd_soc_sdca.UAJ.1: loading SWF: 1fa-3-1
[ 18.276777] input: HID sdw:0:0:01fa:4245:01 Consumer Control as ...

This confirms the #5720 root cause is real and not distro-specific.

Current issue: bus-wide IO timeouts ~20s after enumeration

With item 5 applied, every active SoundWire link — CS42L45 on link 0 and
all four CS35L57 amps on links 2/3 — starts failing with IO/SCP timeouts
roughly 20 seconds after successful enumeration, each link failing within
~500ms of the others:

[ 21.092274] soundwire_intel soundwire_intel.link.0: SCP Msg trf timed out
[ 21.092289] soundwire sdw-master-0-0: trf on Slave 6 failed:-5 write addr 8088 count 0
[ 21.092302] snd_soc_sdca_class_function snd_soc_sdca.SmartMic.0: failed to restore register cache: -5
[ 21.596244] soundwire_intel soundwire_intel.link.0: IO transfer timed out, cmd 3 device 6 addr 5d len 1
[ 21.596300] sdca_class sdw:0:0:01fa:4245:01: Failed to sync masks in 5d
...
[ 26.131463] soundwire_intel soundwire_intel.link.2: IO transfer timed out, cmd 3 device 2 addr c1 len 1
[ 26.131500] soundwire_intel soundwire_intel.link.2: RX AVAIL 63 too long
...
[ 29.155608] soundwire_intel soundwire_intel.link.3: IO transfer timed out, cmd 3 device 2 addr c1 len 1
[ 29.155677] soundwire_intel soundwire_intel.link.3: RX AVAIL 63 too long

Result: no card registers.

$ cat /proc/asound/cards
--- no soundcards ---
$ aplay -l
aplay: device_list:279: no soundcards found...

The synchronized, sequential-by-link failure pattern (link 0 first, then 2,
then 3, each ~500ms apart) suggests a bus-wide event — possibly clock-stop
or power-state related — rather than a per-device problem. soundwire_intel
and snd_sof don't expose any module parameters I could use to test that on
this kernel (modinfo soundwire_intel | grep -i clock and
modinfo snd_sof | grep -i quirk both return nothing).

Expected behavior

SoundWire bus transactions should succeed after enumeration, and a
sof-soundwire card should register with working speakers/headphones/mic,
matching the result reported in #5720.

Additional notes

  • .config diffs and full DMI quirk patch available on request.
  • Happy to test patches or pull additional debug output (soundwire debugfs,
    ACPI dump) — fully reproducible every boot.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions