linux/sound/soc/sof
Kai Vehmanen 999d00a7ae 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-15 12:04:16 +02:00
..
amd ASoC: SOF: amd: Add sof audio support for acp7.2 platform 2025-08-01 14:36:04 +01:00
imx ASoC: SOF: imx: Fix devm_ioremap_resource check 2025-09-02 12:51:32 +01:00
intel ASoC: Intel: hda-sdw-bpt: set persistent_buffer false 2025-10-15 12:03:58 +02:00
mediatek ASoC: Use of_reserved_mem_region_to_resource() for "memory-region" 2025-07-04 13:09:47 +01:00
xtensa module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
compress.c ASoC: SOF: Use no_reply calls for TX 2023-04-20 12:51:45 +01:00
control.c ASoC: SOF: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 19:28:22 +01:00
core.c ASoC: SOF: set disable_function_topology if override_tplg_filename is set 2025-05-06 22:48:04 +09:00
debug.c ASoC: SOF: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 19:28:22 +01: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: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 19:28:22 +01:00
ipc3-loader.c ASoC: SOF: ipc3-loader: 'Handle' PROBE_INFO ext_manifest type when parsing 2024-11-07 13:03:23 +00:00
ipc3-pcm.c ASoC: SOF: pcm: Add snd_sof_pcm specific wrappers for dev_dbg() and dev_err() 2025-02-06 11:25:43 +00: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:04:16 +02:00
ipc3.c ASoC: SOF: ipc3: Use str_enabled_disabled() helper function 2025-02-17 12:09:40 +00:00
ipc4-control.c ASoC: SOF: ipc4-control: Use SOF_CTRL_CMD_BINARY as numid for bytes_ext 2025-05-09 18:20:13 +09:00
ipc4-fw-reg.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ipc4-loader.c treewide: Remove redundant 2025-07-04 22:42:36 +01: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-15 12:04:16 +02:00
ipc4-priv.h ASoC: SOF: ipc4-pcm: Harmonize set pipeline state dbg 2025-06-20 11:33:05 +01: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-15 12:04:16 +02:00
ipc4-topology.h ASoC: SOF: ipc4-pcm: fix start offset calculation for chain DMA 2025-10-15 12:04:16 +02:00
ipc4.c ASoC: SOF: ipc4-pcm: Harmonize set pipeline state dbg 2025-06-20 11:33:05 +01:00
Kconfig ASoC: sof: Standardize ASoC menu 2025-06-24 01:01:18 +01: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: remove dpcm_xxx flags 2024-10-23 13:01:56 +01:00
ops.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
ops.h iopoll/regmap/phy/snd: Fix comment referencing outdated timer documentation 2024-10-16 00:36:47 +02:00
pcm.c treewide: Remove redundant 2025-07-04 22:42:36 +01:00
pm.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
sof-acpi-dev.c ASoC: SOF: acpi: Convert to EXPORT_NS_DEV_PM_OPS() 2025-03-17 10:14:55 +00:00
sof-acpi-dev.h ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00
sof-audio.c ASoC: SOF: Relocate and rework functionality for PCM stream freeing 2025-02-06 11:25:41 +00:00
sof-audio.h ASoC: SOF: pcm: Add snd_sof_pcm specific wrappers for dev_dbg() and dev_err() 2025-02-06 11:25:43 +00:00
sof-client-ipc-flood-test.c ASoC: SOF: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 19:28:22 +01:00
sof-client-ipc-kernel-injector.c ASoC: SOF: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 19:28:22 +01:00
sof-client-ipc-msg-injector.c ASoC: SOF: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 19:28:22 +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: Remove redundant pm_runtime_mark_last_busy() calls 2025-07-04 19:28:22 +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 module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
sof-client.h ASoC: SOF: Add IPC3 Kernel Injector 2023-06-09 10:44:40 +01:00
sof-of-dev.c ASoC: SOF: of: Convert to EXPORT_DEV_PM_OPS() 2025-03-17 10:14:57 +00: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: Use pure devres PCI 2025-05-05 19:32:11 +09: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: Remove unused SOF_DAI_STREAM() and SOF_FORMATS 2024-12-13 13:25:52 +00: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-05 14:06:26 +00:00
topology.c ASoC: SOF: topology: Parse the dapm_widget_tokens in case of DSPless mode 2025-06-20 00:21:15 +01:00
trace.c ASoC: SOF: Intel: clarify Copyright information 2024-05-06 23:59:35 +09:00