This set of patches achieves few goals in order to enable data probing feature for audio DSP.
First, provide new and alter existing interfaces (page allocation, runtime flow adjustments) to make them compress friendly.
For HDA part, work has been done to account for compress streams when servicing IRQs, setting up BDLs and assigning DMAs.
Finally, the end goal which are the probe APIs and usage itself. Probes can be treated as endpoints which allow for data extraction from or injection to target module - a great ally when debugging problematic audio issues such as distortions, glitches or gaps. Compress streams are a weapon of choice here to provide a lightweight implementation.
While all available IPCs have been defined, current implementation covers extraction only, with injection scheduled for a later date.
Initial review and development of probes can be found under: https://github.com/thesofproject/linux/pull/1276
with the hda-compress-enable set of patches being separated and reviewed on: https://github.com/thesofproject/linux/pull/1571
Tested on CML-U with rt5682 i2s board.
Changes in v3: - Addressed sparse and all doc related warnings as reported by Pierre - Moved _DEBUG_PROBES config outside of _DEVELOPER_SUPPORT block - Renamed 'extractor' field to 'extractor_stream_tag' as requested - Relocated 'extractor_stream_tag' declaration from patch 07 to 08
Changes in v2: - No changes to ALSA core and hda patches
- Removed "ASoC: Intel: sof_rt5682: Add compress probe DAI links" from the patchset list as requested by Pierre - updated copyright header for newly added files (dates) - probes over HDA no longer require SND_SOC_SOF_HDA_LINK enabled - renamed debugfs probe functions as requested by Pierre
- probe IPC API has been updated to align with newest SOF FW & probe debug app (struct_size macro has been enlisted to make the size calculations transparent). This targets only "ASoC: SOF: Implement Probe IPC API" patch
Cezary Rojewski (11): ALSA: hda: Allow for compress stream to hdac_ext_stream assignment ALSA: hda: Prepare for compress stream support ALSA: hda: Interrupt servicing and BDL setup for compress streams ALSA: core: Expand DMA buffer information ALSA: core: Implement compress page allocation and free routines ASoC: SOF: Intel: Account for compress streams when servicing IRQs ASoC: SOF: Implement Probe IPC API ASoC: SOF: Generic probe compress operations ASoC: SOF: Intel: Probe compress operations ASoC: SOF: Provide probe debugfs support ASoC: SOF: Intel: Add Probe compress CPU DAIs
include/sound/compress_driver.h | 40 +++- include/sound/hdaudio.h | 2 + include/sound/hdaudio_ext.h | 2 + include/sound/sof/header.h | 11 ++ sound/core/compress_offload.c | 42 +++++ sound/hda/ext/hdac_ext_stream.c | 49 ++++- sound/hda/hdac_controller.c | 4 +- sound/hda/hdac_stream.c | 52 ++++-- sound/soc/sof/Kconfig | 9 + sound/soc/sof/Makefile | 3 +- sound/soc/sof/compress.c | 140 ++++++++++++++ sound/soc/sof/compress.h | 29 +++ sound/soc/sof/debug.c | 208 +++++++++++++++++++++ sound/soc/sof/intel/Kconfig | 9 + sound/soc/sof/intel/Makefile | 1 + sound/soc/sof/intel/apl.c | 9 + sound/soc/sof/intel/cnl.c | 9 + sound/soc/sof/intel/hda-compress.c | 132 +++++++++++++ sound/soc/sof/intel/hda-dai.c | 28 +++ sound/soc/sof/intel/hda-ipc.c | 4 +- sound/soc/sof/intel/hda-stream.c | 26 ++- sound/soc/sof/intel/hda.h | 30 +++ sound/soc/sof/ops.h | 43 +++++ sound/soc/sof/pcm.c | 11 +- sound/soc/sof/probe.c | 286 +++++++++++++++++++++++++++++ sound/soc/sof/probe.h | 85 +++++++++ sound/soc/sof/sof-priv.h | 24 +++ 27 files changed, 1247 insertions(+), 41 deletions(-) create mode 100644 sound/soc/sof/compress.c create mode 100644 sound/soc/sof/compress.h create mode 100644 sound/soc/sof/intel/hda-compress.c create mode 100644 sound/soc/sof/probe.c create mode 100644 sound/soc/sof/probe.h