[PATCH v2 0/6] ASoC: qcom: qdsp6: add push/pull module support

Srinivas Kandagatla posted 6 patches 1 week, 3 days ago
sound/soc/qcom/qdsp6/audioreach.c |  79 ++++++++++-
sound/soc/qcom/qdsp6/audioreach.h |  96 +++++++++++++
sound/soc/qcom/qdsp6/q6apm-dai.c  | 144 +++++++++++++++----
sound/soc/qcom/qdsp6/q6apm.c      | 222 ++++++++++++++++++++++--------
sound/soc/qcom/qdsp6/q6apm.h      |  13 +-
5 files changed, 465 insertions(+), 89 deletions(-)
[PATCH v2 0/6] ASoC: qcom: qdsp6: add push/pull module support
Posted by Srinivas Kandagatla 1 week, 3 days ago
This patchset adds support for Push/Pull mode modules.
Push-pull mode uses dedicated shared-memory modules that allow the DSP
to access the PCM circular buffer directly. In addition to reducing
fragment queueing and ACK handling in the host driver, 
This mode exposes a DSP-maintained position buffer that provides
fine-grained hardware pointer updates. Unlike the Read/Write Shared
Memory endpoitn modules, which are period based, where the reported
pointer advances only at period boundaries, where as push-pull mode
allows .pointer() to reflect sub-period progress, improving pointer
accuracy.
Also the driver now can queue buffers which are less than period size,
which makes tests like alsa_conformance_test happy.

Now the pointer update visibility is around 1ms, compared to min of
10ms with read/write shared memory endpoints.

Along with the circular buffer support, this patchset also adds
watermark event support to provide a period level event from dsp to
notify about period progress.

Tested this on T14s, Arduino VENTUNO-Q platforms.

Tplg related changes are available at: 
https://github.com/Srinivas-Kandagatla/audioreach-topology/tree/push/pull

thanks,
Srini

Changes since v1:
	- move position buffer defines to PATCH 4/6 to fix dependencies

Srinivas Kandagatla (6):
  ASoC: qcom: audioreach: use cached shared memory module IID
  ASoC: qcom: q6apm: return error code to consumers on failures
  ASoC: qcom: q6apm: remove shared memory IID helpers
  ASoC: qcom: audioreach: Add support for shared memory push/pull
    modules
  ASoC: qcom: q6apm: add watermark event support
  ASoC: qcom: q6apm-dai: add push-pull and watermark event support

 sound/soc/qcom/qdsp6/audioreach.c |  79 ++++++++++-
 sound/soc/qcom/qdsp6/audioreach.h |  96 +++++++++++++
 sound/soc/qcom/qdsp6/q6apm-dai.c  | 144 +++++++++++++++----
 sound/soc/qcom/qdsp6/q6apm.c      | 222 ++++++++++++++++++++++--------
 sound/soc/qcom/qdsp6/q6apm.h      |  13 +-
 5 files changed, 465 insertions(+), 89 deletions(-)

-- 
2.53.0
Re: [PATCH v2 0/6] ASoC: qcom: qdsp6: add push/pull module support
Posted by Mark Brown 6 days, 21 hours ago
On Thu, 28 May 2026 19:57:59 +0100, Srinivas Kandagatla wrote:
> ASoC: qcom: qdsp6: add push/pull module support
> 
> This patchset adds support for Push/Pull mode modules.
> Push-pull mode uses dedicated shared-memory modules that allow the DSP
> to access the PCM circular buffer directly. In addition to reducing
> fragment queueing and ACK handling in the host driver,
> This mode exposes a DSP-maintained position buffer that provides
> fine-grained hardware pointer updates. Unlike the Read/Write Shared
> Memory endpoitn modules, which are period based, where the reported
> pointer advances only at period boundaries, where as push-pull mode
> allows .pointer() to reflect sub-period progress, improving pointer
> accuracy.
> Also the driver now can queue buffers which are less than period size,
> which makes tests like alsa_conformance_test happy.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-7.2

Thanks!

[1/6] ASoC: qcom: audioreach: use cached shared memory module IID
      https://git.kernel.org/broonie/sound/c/525fa5f30c83
[2/6] ASoC: qcom: q6apm: return error code to consumers on failures
      https://git.kernel.org/broonie/sound/c/3075ae5abbc3
[3/6] ASoC: qcom: q6apm: remove shared memory IID helpers
      https://git.kernel.org/broonie/sound/c/240286ecf1a2
[4/6] ASoC: qcom: audioreach: Add support for shared memory push/pull modules
      https://git.kernel.org/broonie/sound/c/7c1ac23b178a
[5/6] ASoC: qcom: q6apm: add watermark event support
      https://git.kernel.org/broonie/sound/c/ed56ac9e5e96
[6/6] ASoC: qcom: q6apm-dai: add push-pull and watermark event support
      https://git.kernel.org/broonie/sound/c/4cfbd3a8d596

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark