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

Open

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__source → hw: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

  1. charleskeepax commented on Sep 10, 2026

    @charleskeepax

    If you were comfortable building a kernel could you try the following patch from Linus's tree:

    commit ee1811e
    soundwire: bus_type: Create IRQ mapping before calling driver probe()

    I think you maybe have hit a bug exposed by the shuffling of the IRQ handling.

  2. kdejaeger commented on Sep 10, 2026

    @kdejaeger
    Author

    No, looks like we'll have to wait till end of oktober for v7.3 to come out.

  3. charleskeepax commented on Sep 11, 2026

    @charleskeepax

    7.2 should still be in active support. I will see if I can get the patch copied to stable was probably missed as it doesn't have a fixes tag. Would have been better to be sure it's the fix you need, but I am like 85% sure.

  4. kdejaeger commented on Sep 11, 2026

    @kdejaeger
    Author

    Thanks, it it get's backported to 7.2, let me know which version it will be and I will check it out soon then.

  5. kdejaeger commented on Sep 11, 2026

    @kdejaeger
    Author

    Boot-to-boot variability confirms the IRQ-mapping race hypothesis

    Collected 5 consecutive boots on this machine (7.2.3 and 7.2.4, openSUSE Tumbleweed, identical userspace/BIOS). The discriminator between the three observed states is whether the CS42L45 SmartMic SDCA function (snd_soc_sdca.SmartMic.0) attaches and loads its SWF:

    Boot Kernel SmartMic SDCA function SWF load Sound card Mic
    21:09 7.2.3 bound ✗ ✓ silent — PDE 11 event failed: -110
    21:22 7.2.4 missing ✗ ✗ none —
    21:24 7.2.4 bound ✓ (1fa-2-1, 1fa-42450005-1309, 1fa-3-1) ✓ works
    21:25 7.2.4 bound ✗ ✓ silent — PDE 11 event failed: -110
    21:27 7.2.4 missing ✗ ✗ none —

    Details per state:

    State A — no card (boots 21:22, 21:27). The CS42L45 slave enumerates on link 3 (sdw:0:3:01fa:4245:01) and the HID/UAJ SDCA functions bind, but snd_soc_sdca.SmartMic.0 never appears. The sof_sdw machine driver still binds, but no ALSA card is registered (/proc/asound/cards empty). This matches a SmartMic function probe failure (consistent with bus_type not having created the IRQ mapping before the driver's probe()).

    State B — card present, capture silent (boots 21:09, 21:25). All three SDCA functions bind, but the SWF file-set fallback never fires (no Loading firmware: sdca/... / loading SWF: lines after SWFT not available). Every capture attempt then fails with:

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

    which fits PDE transitions (and the SWF transfer itself) depending on interrupt-driven completion with the alert IRQ missing/racy.

    State C — works (boot 21:24). SWF loads (loading SWF: 1fa-2-1, loading SWF: 1fa-42450005-1309, loading SWF: 1fa-3-1) and no PDE/clock-stop errors occur.

    This is consistent with ee1811eacdbba15a374957c2bcc6ba7102e2b781 ("soundwire: bus_type: Create IRQ mapping before calling driver probe()") being the right fix — the same three symptom depths would all collapse to "IRQ mapping not yet created when the CS42L45 functions attach". On 7.1.8 (pre-refactor ordering) every boot worked on this machine.

    I checked linux-7.2.y: the patch is not on that branch yet — I'll retest as soon as it lands in a stable point release and report back. Boot logs available if useful.

  6. charleskeepax commented on Sep 17, 2026

    @charleskeepax

    Alas not having much luck with the stable kernel folks. I will try resending the patch on Monday see if it gets any traction second time around, but we might need to wait for 7.3 here.

    https://lore.kernel.org/stable/20260911123332.4035153-1-ckeepax@opensource.cirrus.com/

  7. charleskeepax commented on Sep 28, 2026

    @charleskeepax

    Still not having much luck with the stable resend, pretty sure we are just going to have to wait for 7.3. I will leave the ticket open until 7.2 stable support closes, just in case.

  8. hlavki commented on Oct 1, 2026

    @hlavki

    Same bug on a Dell XPS 14 DA14260 (Panther Lake, CS42L45 on link 0, 4x CS35L57 on links 2/3, BIOS 1.11.0), openSUSE Tumbleweed, kernel 7.2.8-1-default, sof-firmware 2025.12.2, kernel-firmware-sound 20260825. The internal mic recorded only zeros, with every mixer control on:

    sdca_class sdw:0:0:01fa:4245:01: SWFT not available
    snd_soc_sdca_class_function snd_soc_sdca.SmartMic.0: PDE 11: PDE transition 3 -> 0 failed, err=-110
    sof_sdw sof_sdw: ASoC: POST_PMU: cs42l45 PDE 11 event failed: -110
    soundwire_intel soundwire_intel.link.0: prepare clock stop failed -110
    

    There were no loading SWF lines after SWFT not available, and the PDE 11 error repeated every time the mic was opened.

    I rebuilt only soundwire-bus.ko from the 7.2.8 sources with ee1811e applied. In 7.2.8, drivers/soundwire/bus_type.c differs from v7.3-rc5 only by this commit, so it applies cleanly without the rest of the series. After a reboot the mic records real signal: every sample is non-zero, with room noise around -50 dBFS RMS where it was digital silence before. That's one boot so far, and I'll report back if it comes back on later boots.

    So this machine is affected too. I'm happy to give a Tested-by if it helps the stable resend for 7.2.

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