Skip to content

Laptop sound past HD Audio and MIPI cameras: what each needs, and why 1.0 ships without them - #532

Merged
DevomB merged 3 commits into
mainfrom
laptop-audio-note
Oct 16, 2026
Merged

DevomB merged 3 commits into
mainfrom
laptop-audio-note

Conversation

@DevomB

@DevomB DevomB commented Oct 15, 2026

Copy link
Copy Markdown
Owner

What was wrong

docs/design/laptop.md and ADR-021 name Intel's Sound Open Firmware, AMD's audio coprocessor and the smart amplifiers as gaps, and camera.md names MIPI cameras. None of them says what closing a gap takes, what it costs against ADR-013 and ADR-012, or what each kind of laptop does in the meantime. The user guide's known limitations do not mention laptop sound at all. The physical laptops in October will need that to judge what they find.

What changed

  • docs/design/laptop-audio.md (new):
    • What 1.0 does on each kind of laptop. snd-intel-dspcfg has rows for a platform only when that platform's SOF driver is built. With none built, snd-hda-intel takes every controller. So Intel laptops with an HD Audio codec keep their speakers, jack and HDMI, and lose only the built-in microphones. SoundWire laptops have no built-in sound. AMD laptops lose their built-in microphones. Laptops with smart amplifiers lose their speakers.
    • Kernel, firmware and mixer for each fix:
      • The amplifiers need the ASoC core and the HDA side-codec drivers, with tuning files already in linux-firmware.
      • AMD's microphones need the ACP drivers and no firmware. The mixer would have to prefer the microphone card.
      • SOF needs:
        • the platform options, older ones off;
        • sof-bin as a second, unsigned firmware source;
        • the softdep extended to SOF's PCI drivers, because SOF binds codecs through request_module too;
        • UCM, because kryptik-sound opens device 0 and SoundWire splits the speakers onto other devices.
    • The handover risk. Once built, SOF takes Intel laptops with digital microphones away from snd-hda-intel. Speakers that work today then depend on SOF's firmware and topology.
    • The kernel image. Everything is a module except the SPI core, which SoundWire's machine driver and the SPI amplifiers need. The other built-in part on the way, ACPI_NHLT, is already in the image through SND_INTEL_DSP_CONFIG.
    • Recommendation. A named gap in 1.0, then, in order: amplifiers, AMD microphones, SOF for HD Audio laptops with digital microphones, SoundWire. Each comes only after a physical machine with that hardware has run it.
  • docs/design/camera.md gains a MIPI cameras section covering:
    • the IPU6 kernel half and its firmware sizes;
    • the media-controller graph versus ADR-026's one-node grant;
    • the two places libcamera could run, neither of which fits 1.0.
  • docs/design/laptop.md now points to the note.
  • docs/user-guide.md: its known limitations name what laptops lose and say that USB audio works on all of them.

How checked

Every fact was read from its source; nothing was built.

  • Kconfig at v6.18:
    • sound/soc/amd, sound/soc/sof, sound/soc/sof/intel, sound/soc/intel/boards, sound/hda/codecs/side-codecs, sound/hda/core, sound/hda/controllers, drivers/soundwire, drivers/spi, drivers/acpi, drivers/media/pci/intel and drivers/staging/media/ipu7;
    • SND_HDA_INTEL → SND_INTEL_DSP_CONFIG → ACPI_NHLT (bool);
    • SPI is a bool, and no fragment or the x86_64 defconfig sets it;
    • the platform options default to SND_SOC_SOF_PCI.
  • Kernel source at v6.18:
    • intel-dsp-config.c: rows exist only under IS_ENABLED(CONFIG_SND_SOC_SOF_*), and with no row it returns ANY;
    • controllers/intel.c probes on ANY or LEGACY;
    • sof/intel/hda-codec.c calls request_module;
    • amd/yc/acp6x-mach.c: AcpDmicConnected, then _WOV, then 88 DMI entries;
    • amd/ps/pci-ps.c: acp-audio-device-type or _WOV.
  • linux-firmware 20260916:
    • WHENCE has no intel/sof* or amd/sof* row;
    • sizes from git.kernel.org's tree at that tag: cirrus/ 755 files and 6.0 MB at the top level, ti/audio/tas2781 93 files and 3.9 MB, IPU6 five files and 2.3 MB, IPU7 two files and 0.5 MB, intel/vsc 29 files and 11.5 MB;
    • model counts come from the subsystem IDs in the Cirrus file names.
  • sof-bin v2026.09.2:
    • tarball sha256 5f7bc30b2b5c1e6b0da55a33fc44e2b7f56ae9b06952edcde614f51ef6b943e1, 17,550,180 bytes, listed but not installed;
    • Tiger Lake onward: 20 Intel-signed firmware files (13,991,160 bytes) and 347 topologies (18,715,384 bytes), 6,883,728 bytes with each file xz -9'd;
    • the GitHub API shows the tag as lightweight, on an unsigned commit.
  • Kryptik:
    • kryptik-sound.c's pick_card and levels;
    • alsa-lib.sh (--disable-ucm);
    • 04-base-system.sh builds kmod with --sysconfdir=/etc, so root could write options snd_intel_dspcfg dsp_driver=1 there;
    • size-budget and firmware.list.
  • Docs: every new line is within 76 columns. There are no numbered labels. The hardware sentence is the standard one.

… 1.0 ships without them

laptop.md and ADR-021 named Intel's SOF, AMD's coprocessor and the smart amplifiers as gaps, and
camera.md named MIPI cameras, without saying what closing them takes or what each kind of laptop does
meanwhile; the guide's known limitations did not mention laptop sound at all.

docs/design/laptop-audio.md says what each needs from boot.fragment, firmware.list and the mixer,
against Linux 6.18's Kconfig and linux-firmware 20260916: the amplifiers and AMD's microphones need
the ASoC core and modules, with firmware already in linux-firmware or none; SOF needs sof-bin as a
second firmware source, a softdep, and UCM in the mixer, and once built it takes Intel laptops with
digital microphones from snd-hda-intel. Everything is a module but the SPI core, which SoundWire and
the amplifiers on SPI need. It recommends a named gap in 1.0, and an order after it. camera.md gains
the same for MIPI cameras, and the guide's known limitations name what laptops lose.
@DevomB
DevomB marked this pull request as ready for review October 15, 2026 16:52
…DMI or DisplayPort

The note said HDMI and DisplayPort work wherever the HD Audio driver takes the codec, and should
still play on SoundWire laptops. The driver takes those codecs, but kryptik-sound plays only to a
card's device 0, the codec's own (pick_card, plughw:N,0), so a monitor's speakers stay silent, and
a SoundWire laptop's card, which has only HDMI devices, gets nothing at all. The note's three
bullets say so, and the guide's limitation line adds the monitor's speakers.
@DevomB
DevomB merged commit 6a20415 into main Oct 16, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant