]> git.hungrycats.org Git - linux/commit
ASoC: qcom: qdsp6: add push/pull module support
authorMark Brown <broonie@kernel.org>
Mon, 1 Jun 2026 16:19:17 +0000 (17:19 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 1 Jun 2026 16:19:17 +0000 (17:19 +0100)
commit3ef902c9609966f66d6e0f42917e6beacda3798e
treed000317b2088913d60330188cb97c4b8c2e0d5ca
parent6d2359028c5baf27a96a75f70b46caa5bf82b969
parent4cfbd3a8d5961c30fefaae543ea67fc7b048480a
ASoC: qcom: qdsp6: add push/pull module support

Srinivas Kandagatla <srinivas.kandagatla@oss.qualcomm.com> says:

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

Link: https://patch.msgid.link/20260528185806.6316-1-srinivas.kandagatla@oss.qualcomm.com