linux/sound/soc/sof
Kai Vehmanen e051ab688e ASoC: SOF: ipc4-pcm: fix start offset calculation for chain DMA
commit bace10b596 upstream.

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: a1d203d390 ("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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2025-10-19 16:34:07 +02:00
..
amd ASoC: SOF: amd: acp-loader: Use GFP_KERNEL for DMA allocations in resume context 2025-08-28 16:30:59 +02:00
imx ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
intel ASoC: SOF: Intel: Read the LLP via the associated Link DMA channel 2025-10-19 16:33:39 +02:00
mediatek ASoC: Switch back to struct platform_driver::remove() 2024-09-09 18:26:49 +01:00
xtensa ASoC: SOF: reorder MODULE_ definitions 2024-05-27 21:19:26 +01:00
compress.c ASoC: SOF: Use no_reply calls for TX 2023-04-20 12:51:45 +01:00
control.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
core.c ASoC: SOF: reorder MODULE_ definitions 2024-05-27 21:19:26 +01:00
debug.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
fw-file-profile.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
iomem-utils.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
ipc.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc3-control.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc3-dtrace.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc3-loader.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc3-pcm.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc3-priv.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc3-topology.c ASoC: SOF: ipc3-topology: Fix multi-core and static pipelines tear down 2025-10-15 12:00:21 +02:00
ipc3.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc4-control.c ASoC: SOF: ipc4-control: Use SOF_CTRL_CMD_BINARY as numid for bytes_ext 2025-05-29 11:03:19 +02:00
ipc4-fw-reg.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc4-loader.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc4-mtrace.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc4-pcm.c ASoC: SOF: ipc4-pcm: fix start offset calculation for chain DMA 2025-10-19 16:34:07 +02:00
ipc4-priv.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc4-telemetry.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc4-telemetry.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc4-topology.c ASoC: SOF: ipc4-pcm: fix start offset calculation for chain DMA 2025-10-19 16:34:07 +02:00
ipc4-topology.h ASoC: SOF: ipc4-pcm: fix start offset calculation for chain DMA 2025-10-19 16:34:07 +02:00
ipc4.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
Kconfig ASoC: SOF: core: Implement IPC version fallback if firmware files are missing 2023-11-29 13:25:15 +00:00
loader.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
Makefile ASoC: SOF: Use *-y instead of *-objs in Makefile 2024-05-08 11:39:30 +09:00
nocodec.c ASoC: SOF: reorder MODULE_ definitions 2024-05-27 21:19:26 +01:00
ops.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ops.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
pcm.c ASoC: SOF: pcm: Clear the susbstream pointer to NULL on close 2025-02-27 04:30:23 -08:00
pm.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
sof-acpi-dev.c ASoC: SOF: add missing MODULE_DESCRIPTION() 2024-05-27 21:19:27 +01:00
sof-acpi-dev.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
sof-audio.c ASoC: Merge up fixes 2024-06-21 13:17:21 +01:00
sof-audio.h ASoC: SOF: sof-audio: Avoid -Wflex-array-member-not-at-end warnings 2024-08-08 09:17:16 +01:00
sof-client-ipc-flood-test.c ASoC: SOF: reorder MODULE_ definitions 2024-05-27 21:19:26 +01:00
sof-client-ipc-kernel-injector.c ASoC: SOF: reorder MODULE_ definitions 2024-05-27 21:19:26 +01:00
sof-client-ipc-msg-injector.c ASoC: SOF: reorder MODULE_ definitions 2024-05-27 21:19:26 +01:00
sof-client-probes-ipc3.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
sof-client-probes-ipc4.c ASoC: SOF: sof-client-probes-ipc4: Set param_size extension bits 2024-11-07 15:35:52 +00:00
sof-client-probes.c ASoC: SOF: reorder MODULE_ definitions 2024-05-27 21:19:26 +01:00
sof-client-probes.h ASoC: SOF: IPC4: probes: Implement IPC4 ops for probes client device 2022-10-31 13:20:22 +00:00
sof-client.c auxbus: make to_auxiliary_drv accept and return a constant pointer 2024-06-13 16:43:26 +02:00
sof-client.h ASoC: SOF: Add IPC3 Kernel Injector 2023-06-09 10:44:40 +01:00
sof-of-dev.c ASoC: SOF: add missing MODULE_DESCRIPTION() 2024-05-27 21:19:27 +01:00
sof-of-dev.h ASoC: SOF: Move sof_of_machine_select() to core.c from sof-of-dev.c 2023-12-04 17:02:15 +00:00
sof-pci-dev.c ASoC: SOF: add missing MODULE_DESCRIPTION() 2024-05-27 21:19:27 +01:00
sof-pci-dev.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
sof-priv.h ASoC: SOF: sof-priv.h: optimize snd_sof_ipc_msg 2024-08-02 14:05:15 +01:00
sof-utils.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
sof-utils.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
stream-ipc.c ASoC: SOF: stream-ipc: Check for cstream nullity in sof_ipc_msg_data() 2025-02-27 04:30:22 -08:00
topology.c ASoC: SOF: topology: Parse the dapm_widget_tokens in case of DSPless mode 2025-08-20 18:30:26 +02:00
trace.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00