How audioreach/audioreach-kernel works
AudioReach Kernel is an out-of-tree Linux driver set that bridges userspace AudioReach graph services and audio processing on Qualcomm DSPs. The user-facing path is userspace packet I/O into kernel packet transport, with shared audio memory mapped for DSP use; DSP responses return through packet channels. Separate driver branches provide ASoC machine-card and LPASS DAI interfaces, plus proxy-resource clock/core requests. The README documents the bridge’s purpose but not its detailed wiring; uncertain cross-module relationships are therefore omitted or marked unverified.
Main entry points: q6apm_audio_pkt.c APM packet device · audioreach_pkt_rpmsg.c RPMsg packet transport · q6apm_audio_mem.c Audio memory driver · q6prm_audioreach.c Proxy resource manager
Components 18
Packet transport
- APM packet device
audioreach-driver/q6apm_audio_pkt.c - RPMsg packet transport
audioreach-driver/audioreach_pkt_rpmsg.c - Audio packet IPC
ipc/audio-pkt.c - Audio UAPI
include/uapi/linux/msm_audio.h - Kernel compatibility
audioreach-driver/ar_kcompat.h
Shared audio memory
- Audio memory driver
audioreach-driver/q6apm_audio_mem.c - CMA memory backend
audioreach-driver/q6apm_audio_mem_cma.c - DSP memory support
dsp/msm_audio_mem.c - Memory API
include/dsp/msm_audio_mem.h
Audio interfaces
- AudioReach common
audioreach-driver/audioreach_common.c - LPASS dummy DAIs
audioreach-driver/q6apm_lpass_dummy_dais.c - Audio driver interfaces
audioreach-driver/q6apm_audio.h
DSP resources
- SPF core
dsp/spf-core.c - Proxy resource manager
audioreach-driver/q6prm_audioreach.c - PRM definitions
audioreach-driver/q6prm_audioreach.h - LPASS clock provider
audioreach-driver/q6prm_audioreach_clock.c
Other components
- Graph service
- Audio DSP
Connections 14
- Graph service → APM packet device: uses packet device
audioreach-driver/q6apm_audio_pkt.c - APM packet device → Audio memory driver: looks up physical address
- APM packet device → Audio DSP: exchanges DSP packets
- RPMsg packet transport → Audio DSP: transports packets
- Graph service → RPMsg packet transport: uses driver channel
README.md - Graph service → Audio packet IPC: uses packet IPC
- Audio memory driver → Audio DSP: provides shared memory
- CMA memory backend → Audio DSP: provides CMA memory
- DSP memory support → Audio DSP: supports DSP memory
- AudioReach common → Audio driver interfaces: uses audio configuration
- LPASS dummy DAIs → Audio driver interfaces: uses audio configuration
audioreach-driver/q6apm_lpass_dummy_dais.c - LPASS clock provider → Proxy resource manager: registers clock operations
audioreach-driver/q6prm_audioreach_clock.c - Proxy resource manager → Audio DSP: requests resources
audioreach-driver/q6prm_audioreach.c - SPF core → Audio DSP: supports framework runtime