Skip to content

[BUG] Internal mic silent on ThinkPad X1 Carbon Gen 14 with kernel 7.2.x — SDCA SmartMic SWF fallback not loading (worked on 7.1.8, same BIOS) #5933

Description

@kdejaeger

Summary

The internal microphone of a Lenovo ThinkPad X1 Carbon Gen 14 (Panther Lake, CS42L45 + 2x CS35L63) works on kernel 7.1.8 but is broken (capture delivers only all-zero samples) on kernel 7.2.3 with the same BIOS, same sof-firmware, same alsa-ucm-conf and same kernel-firmware packages. Everything else (speakers, headphone jack, HDMI, headset jack state) is unchanged.

The distinguishing failure in the kernel log is that after SWFT not available, no SWF fallback load happens at all — the Loading firmware: sdca/... / loading SWF: 1fa-42450005-1301 lines that normally follow (and that are visible in #5854 on a working system) are completely absent. Every capture attempt then fails with cs42l45 PDE 11 event failed: -110 and the SmartMic power domain never comes up. This suggests a 7.2.x regression in the SDCA SmartMic firmware-loading path (SWFT → file-set fallback).

This is a different failure than #5770 (closed via Lenovo BIOS 1.12): this machine already runs BIOS N4OET51W (1.14), the SDCA functions (SmartMic/UAJ/HID) all bind, and the mic worked on 7.1.8 with this exact BIOS.

System information

Field Value
Machine Lenovo ThinkPad X1 Carbon Gen 14, model 21V7CTO1WW
CPU Intel Core Ultra X7 358H (Panther Lake)
BIOS N4OET51W (1.14), 07/01/2026
Distribution openSUSE Tumbleweed (OSS snapshot 20260908)
Kernel broken 7.2.3-1-default
Kernel working 7.1.8-1-default (same machine, same userspace, just GRUB menu entry)
sof-firmware 2025.12.2-1.2 (latest upstream sof-bin release)
alsa-ucm-conf 1.2.16.1-1.2
kernel-firmware-sound 20260825-1.1 (ships sdca/1fa/17aa/2352/42450005.bin)
SOF FW 2.14.1.1, loads from intel/sof-ipc4/ptl/sof-ptl.ri

Symptoms

  • Card enumerates normally: Speaker, Jack Out, HDMI1-3 playback + Jack In / Microphone capture devices all present (aplay -l / arecord -l fine)
  • Speakers, headphones and HDMI all work; only internal mic capture is affected
  • PipeWire exposes alsa_input.pci-0000_00_1f.3-platform-sof_sdw.HiFi__Mic__sourcehw:1,4
  • Recording from hw:1,4 (bypassing PipeWire) produces a valid WAV of correct size containing only zeros (RMS 0.0, peak 0, verified byte-level)
  • Mixer controls all sane: cs42l45 Microphone Capture Switch = on/on, volume non-zero, UCM "Mic" device applied — toggling anything has no effect
  • A/B test: boot 7.1.8 → mic works; boot 7.2.3 → silence. Repeated twice.

Relevant dmesg (kernel 7.2.3, broken)

[   15.626934] sof-audio-pci-intel-ptl 0000:00:1f.3: SoundWire enabled on CannonLake+ platform, using SOF driver
[   16.021623] sof-audio-pci-intel-ptl 0000:00:1f.3: No SoundWire machine driver found for the ACPI-reported configuration:
[   16.022320] sof-audio-pci-intel-ptl 0000:00:1f.3: link 2 mfg_id 0x01fa part_id 0x3563 version 0x3
[   16.022977] sof-audio-pci-intel-ptl 0000:00:1f.3: link 2 mfg_id 0x01fa part_id 0x3563 version 0x3
[   16.023697] sof-audio-pci-intel-ptl 0000:00:1f.3: link 3 mfg_id 0x01fa part_id 0x4245 version 0x3
[   16.024449] sof-audio-pci-intel-ptl 0000:00:1f.3: Use SoundWire default machine driver with function topologies
[   16.041368] sof-audio-pci-intel-ptl 0000:00:1f.3: Firmware paths/files for ipc type 1:
[   16.042000] sof-audio-pci-intel-ptl 0000:00:1f.3:  Firmware file:     intel/sof-ipc4/ptl/sof-ptl.ri
[   16.042562] sof-audio-pci-intel-ptl 0000:00:1f.3:  Firmware lib path: intel/sof-ipc4-lib/ptl
[   16.043120] sof-audio-pci-intel-ptl 0000:00:1f.3:  Topology file:     function topologies
[   16.044358] sof-audio-pci-intel-ptl 0000:00:1f.3: Loaded firmware library: ADSPFW, version: 2.14.1.1
[   16.183559] sdca_class sdw:0:3:01fa:4245:01: SWFT not available
[   16.282979] sdca_class sdw:0:3:01fa:4245:01: Reached MAX_RETRY on alert read
[   16.356317] sof-audio-pci-intel-ptl 0000:00:1f.3: Booted firmware version: 2.14.1.1
[   16.373046] cs35l56 sdw:0:2:01fa:3563:01:0: Cirrus Logic CS35L63 Rev A1 OTP1 fw:2.3.1 (patched=0)
[   16.507662] sof-audio-pci-intel-ptl 0000:00:1f.3: Using function topologies instead intel/sof-ipc4-tplg/sof-ptl-dummy.tplg
[   16.508001] sof-audio-pci-intel-ptl 0000:00:1f.3: loading topology 0: intel/sof-ipc4-tplg/sof-sdca-1amp-id2.tplg
[   16.509133] sof-audio-pci-intel-ptl 0000:00:1f.3: loading topology 1: intel/sof-ipc4-tplg/sof-sdca-jack-id0.tplg
[   16.510554] sof-audio-pci-intel-ptl 0000:00:1f.3: loading topology 2: intel/sof-ipc4-tplg/sof-sdca-mic-id4.tplg
[   16.512495] sof-audio-pci-intel-ptl 0000:00:1f.3: loading topology 3: intel/sof-ipc4-tplg/sof-hdmi-pcm5-id5.tplg
[   17.593320] input: sof-soundwire Jack as /devices/.../sof_sdw/sound/card1/input36
[   19.713872] soundwire_intel soundwire_intel.link.3: prepare clock stop failed -110
[   19.714458] soundwire_intel soundwire_intel.link.3: intel_stop_bus: cannot stop clock: -110

Note: no Loading firmware: sdca/1fa/17aa/... and no snd_soc_sdca_class_function ... loading SWF: 1fa-42450005-1301 lines exist anywhere in the boot log — in contrast to working systems where they appear right after SWFT not available (see #5854, kernel 7.1.5, Dell XPS 16 DA16260):

[ 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

Then, on every capture attempt on 7.2.3 (first one at ~25s, recurring all day whenever the mic is used):

[   25.626570] snd_soc_sdca_class_function snd_soc_sdca.SmartMic.0: PDE 11: PDE transition 3 -> 0 failed, err=-110
[   25.626606] sof_sdw sof_sdw: ASoC: POST_PMU: cs42l45 PDE 11 event failed: -110
[   31.504852] soundwire_intel soundwire_intel.link.3: prepare clock stop failed -110
[   31.504860] soundwire_intel soundwire_intel.link.3: intel_stop_bus: cannot stop clock: -110

The SDCA function devices bind fine in sysfs:

/sys/devices/.../sdw:0:3:01fa:4245:01/snd_soc_sdca.SmartMic.0
/sys/devices/.../sdw:0:3:01fa:4245:01/snd_soc_sdca.UAJ.1
/sys/devices/.../sdw:0:3:01fa:4245:01/snd_soc_sdca.HID.2

The SWF payload is present on disk:

/lib/firmware/sdca/1fa/17aa/2352/{1,2,3,4,42450005}.bin.xz
/lib/firmware/sdca/1fa/17aa/2353/{1,2,3,4,42450005}.bin.xz

What I've tried / ruled out

  • BIOS: 1.14 is newer than the 1.12 that fixed [BUG] No microphone capture on ThinkPad X1 Carbon Gen 14 (Panther Lake) — cs42l45 PDE 11 event failed: -110, missing sof-ptl-cs42l45 topology #5770 for this model; SmartMic SDCA functions bind (so the file set IDs from ACPI are present)
  • sof-firmware: 2025.12.2 is the latest upstream sof-bin release; there is no newer topology to install (and no sof-ptl-cs42l45-*.tplg exists at all — the function-topology path is the correct one for this machine)
  • alsa-ucm-conf: current (1.2.16.1); UCM verb/device apply correctly; switches are in the expected state
  • kernel-firmware: kernel-firmware-sound 20260825 ships the exact sdca/1fa/17aa/2352/42450005.bin payload used by working systems
  • PipeWire: ruled out — direct ALSA capture from hw:1,4 is also all-zero
  • A/B between kernels: 7.1.8 vs 7.2.3 with otherwise identical system → cleanly reproduces/breaks

Related issues

Suggested direction for debugging

Since the only environmental change is the kernel, the regression window is 7.1.8 → 7.2.3 in the SDCA class-function firmware path: the driver neither uses the ACPI SWFT (BIOS 1.14 doesn't seem to provide one) nor falls back to the _DSD file-set / request_firmware path that 7.1.x used. A git log --oneline 7.1..7.2 -- sound/soc/sdca/ bisect would likely find it quickly.

Additional data (full dmesg for the broken boot, SDCA dynamic-debug output, ACPI dumps) is available on request.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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