11.2. Audio drivers and HAL

The audio-fabric slice of the vendor driver/HAL layer — split out from the general HAL catalogue (Vendor drivers and HALs) because it’s by far the largest single group (29 of the device’s 37 loadable kernel modules) and belongs next to the DSP firmware it drives (ADSP and CDSP firmware).

Everything here is from vendor_a.img (lib/modules/, bin/hw/, lib64/hw/, etc/vintf/manifest.xml) read with 7z, cross-checked against kernel_config.txt. No code was executed.

11.2.1. Loadable kernel modules

/vendor/lib/modules holds 37 .ko files total; 29 of them are the audio fabric, loading first (by modules.load order), in dependency order, as the runtime drivers for the LPASS/Q6 DSP, the bolero on-die codec macros, and the WCD/WSA codecs described in ADSP and CDSP firmware:

Module group (load order)

Role / hardware

audio_apraudio_q6_pdraudio_q6_notifieraudio_adsp_loaderaudio_q6

the Q6/ADSP transport: APR (Asynchronous Packet Router) messaging, PD restart, ADSP image load-notify, and the Q6 core — the userspace/kernel bridge to the audio DSP (ADSP and CDSP firmware)

audio_swr / audio_swr_ctrl / audio_pinctrl_lpi

SoundWire master + LPI (low-power-island) pinctrl for the codec links

audio_bolero_cdc + audio_{rx,tx,wsa,va}_macro

the on-SoC bolero codec and its rx / tx / wsa / va macros (note the va macro module ships even though its DTB node is not wired — ADSP and CDSP firmware)

audio_wcd938x (+ _slave), audio_wcd937x (+ _slave), audio_wcd9xxx, audio_wcd_core, audio_mbhc

the external WCD938x/937x codec(s) and the MBHC (headset button/jack) detection

audio_wsa881x / audio_wsa883x

the WSA smart-speaker-amp drivers (Class-D boosted speaker PAs)

audio_platform / audio_native / audio_machine_lito / audio_snd_event / audio_hdmi / audio_stub / audio_usf

the ASoC platform + machine driver (lito/lagoon sound card), the sound-event router, the (unused) HDMI DAI, a stub DAI, and USF (ultrasound framework)

The other 8 modules cover the rest of the peripheral fabric — not audio; see Vendor drivers and HALs.

11.2.2. HAL service and implementation

HAL

Implementation

Hardware / cross-ref

audio.service + audio@6.0-impl

audio.primary.lito.so (+ bluetooth/usb/r_submix), soundtrigger, audio.effect

LPASS/Q6 + codecs (ADSP and CDSP firmware)

The Bluetooth-audio HIDL client (bluetooth_audio, part of the bluetooth@1.0-service-qti HAL) lives in Wireless drivers and HAL — it’s a Bluetooth HAL entry, not part of the primary audio HAL, even though it carries audio data.

11.2.3. Provenance

Source:

artifacts/super/vendor_a.imglib/modules/{*.ko,modules.load} (module set + boot load order), bin/hw/* and lib64/hw/* (HAL service and implementation libraries), etc/vintf/manifest.xml (HAL declaration); artifacts/boot_a/kernel_config.txt.

Method:

ext4 image listed/extracted read-only with 7z; modules counted from modules.load; HAL from bin/hw / lib64/hw names and the VINTF manifest. No code executed.

Cross-refs:

ADSP and CDSP firmware (the DSP firmware these modules load and drive), Vendor drivers and HALs (the rest of the HAL/module catalogue, including generic platform HALs), Wireless drivers and HAL (Bluetooth audio HIDL client).