Linux 7.1 introduces bus keeper infrastructure for Apple Silicon audio, enabling proper management of complex codec topologies and preventing data corruption during multi-codec audio transmission.
The Linux 7.1 kernel brings significant audio subsystem improvements, with particular focus on enhancing Apple Silicon support through new bus keeper infrastructure. This development addresses a critical challenge in managing complex audio codec topologies found in modern Apple laptops.
Bus Keeper Infrastructure for Apple Silicon
The most technically significant addition is support for bus keepers in the ASoC (Advanced Linux Sound Architecture) subsystem. This infrastructure allows platform drivers to specify what a DAI (Digital Audio Interface) should do when inactive on the bus, primarily for configuring bus keepers integrated into various codecs.
Open-source developer James Calligero provided detailed context for this functionality, explaining the unique bus topology in Apple Silicon laptops. These systems typically feature six codecs arranged in groups of three, driving dual opposed woofers and tweeters for stereo sound. The codecs report voltage and current across voice coils back to the SoC via SDOUT pins, represented as PCM data sent through configurable TDM slots.
This data, combined with each speaker's Thiele/Small Parameters, prevents permanent speaker damage by ensuring speakers aren't driven beyond safe levels. While macOS handles this through CoreAudio, Linux relies on speakersafetyd for similar protection.
The critical challenge involves the receiver port on the SoC's I2S peripheral, which has an OR gate summing two physical data lines (left and right codec groups). When one codec transmits data while the opposite line floats high, data corruption occurs. The solution requires guaranteeing the idle line stays idle during transmission.
In the downstream Asahi Linux kernel, this is achieved by configuring one codec in each group to zero-fill or pull down its line while the opposite codec transmits. The new Linux 7.1 infrastructure generalizes this approach, making it configurable and applicable to other hardware beyond the specific Apple Silicon use case.
Additional Hardware Support
Beyond the bus keeper infrastructure, Linux 7.1 adds support for several new audio devices:
- AMD Raphael DMIC (Digital Microphone Interface)
- Cirrus Logic CS42L43 and CS47L47 codecs
- NVIDIA machines with CPCAP and WM8962 codecs
USB Audio Quirks
The kernel includes numerous USB audio quirks benefiting specific devices:
- Huawei Headset
- Focusrite Novation
- MV-Silicon
- Studio 1824
- Arturia AF16Rig
- Hotone Audio
- Feaulle Rainbow
- PreSonus AudioBox
- Moondrop Ju Jiu
- Scarlett 18i20
System-Specific Fixes
Various system manufacturers receive HD audio quirks to address specific issues:
- Lenovo systems
- HP systems
- Acer systems
- ASUS systems
Legacy Support Updates
In a nod to backward compatibility, Linux 7.1 also adds suspend/resume support for legacy ISA drivers, including the AMD InterWave. This demonstrates the kernel's commitment to supporting both cutting-edge hardware like Apple Silicon and decades-old audio hardware in the same release cycle.
Technical Implementation
The bus keeper functionality is exposed through a more configurable and generic mechanism than previous implementations. The approach has been integrated into downstream platform drivers and select DeviceTrees as examples of intended usage patterns.
This infrastructure represents a significant step forward in Linux's ability to handle complex multi-codec audio configurations, particularly those found in Apple Silicon hardware. By providing a generic mechanism rather than hardware-specific solutions, the kernel enables broader application of these techniques across different audio hardware configurations.
Development Context
The changes were merged through the standard kernel development process, with the full list of sound changes available in the merged pull request. This follows the typical Linux kernel development workflow, where subsystem maintainers submit pull requests for inclusion in upcoming kernel versions.
Impact on Linux Audio Ecosystem
These improvements collectively enhance Linux's audio capabilities across multiple dimensions: better support for modern hardware like Apple Silicon, improved compatibility with popular USB audio devices, system-specific fixes for common issues, and continued support for legacy hardware. The bus keeper infrastructure, in particular, addresses a fundamental challenge in multi-codec audio systems that will benefit not only Apple Silicon users but potentially other hardware configurations that adopt similar approaches.
The Linux 7.1 sound subsystem changes demonstrate the kernel's ongoing evolution to meet the demands of modern audio hardware while maintaining support for older systems. This balanced approach ensures Linux remains viable across a wide range of computing platforms, from cutting-edge Apple Silicon laptops to legacy systems still in active use.
Comments
Please log in or register to join the discussion