diff options
author | Kai Vehmanen <kai.vehmanen@linux.intel.com> | 2025-10-02 10:47:16 +0300 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2025-10-02 13:31:44 +0100 |
commit | bace10b59624e6bd8d68bc9304357f292f1b3dcf (patch) | |
tree | baac2dcaa679925389b91d7cf59da6fd3eabdd7a /rust/kernel/debugfs/file_ops.rs | |
parent | bcd1383516bb5a6f72b2d1e7f7ad42c4a14837d1 (diff) |
ASoC: SOF: ipc4-pcm: fix start offset calculation for chain DMA
Assumption that chain DMA module starts the link DMA when 1ms of
data is available from host is not correct. Instead the firmware
chain DMA module fills the link DMA with initial buffer of zeroes
and the host and link DMAs are started at the same time.
This results in a small error in delay calculation. This can become a
more severe problem if host DMA has delays that exceed 1ms. This results
in negative delay to be calculated and bogus values reported to
applications. This can confuse some applications like
alsa_conformance_test.
Fix the issue by correctly calculating the firmware chain DMA
preamble size and initializing the start offset to this value.
Cc: stable@vger.kernel.org
Fixes: a1d203d390e0 ("ASoC: SOF: ipc4-pcm: Enable delay reporting for ChainDMA streams")
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://patch.msgid.link/20251002074719.2084-3-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'rust/kernel/debugfs/file_ops.rs')
0 files changed, 0 insertions, 0 deletions