mbox series

[00/17] ASoC: SOF: ipc4/Intel: Fix delay reporting (for 6.9 / 6.8)

Message ID 20240321130814.4412-1-peter.ujfalusi@linux.intel.com (mailing list archive)
Headers show
Series ASoC: SOF: ipc4/Intel: Fix delay reporting (for 6.9 / 6.8) | expand

Message

Peter Ujfalusi March 21, 2024, 1:07 p.m. UTC
Hi,

The current version of delay reporting code can report incorrect
values when paired with a firmware which enables this feature.

Unfortunately there are several smaller issues that needed to be addressed
to correct the behavior:

Wrong information was used for the host side of counter
For MTL/LNL used incorrect (in a sense that it was verified only on MTL)
link side counter function.
The link side counter needs compensation logic if pause/resume is used.
The offset values were not refreshed from firmware.
Finally, not strictly connected, but the ALSA buffer size needs to be
constrained to avoid constant xrun from media players (like mpv)

The series applies cleanly for 6.9 and 6.8.y stable, but older stable
would need manual backport, but it is questionable if it is needed as
MTL/LNL is missing features.

Mark, can you pick these patches for the 6.9 cycle as fixes?

Regards,
Peter
---
Peter Ujfalusi (17):
  ASoC: SOF: Add dsp_max_burst_size_in_ms member to snd_sof_pcm_stream
  ASoC: SOF: ipc4-topology: Save the DMA maximum burst size for PCMs
  ASoC: SOF: Intel: hda-pcm: Use dsp_max_burst_size_in_ms to place
    constraint
  ASoC: SOF: Intel: hda: Implement get_stream_position (Linear Link
    Position)
  ASoC: SOF: Intel: mtl/lnl: Use the generic get_stream_position
    callback
  ASoC: SOF: Introduce a new callback pair to be used for PCM delay
    reporting
  ASoC: SOF: Intel: Set the dai/host get frame/byte counter callbacks
  ASoC: SOF: ipc4-pcm: Use the snd_sof_pcm_get_dai_frame_counter() for
    pcm_delay
  ASoC: SOF: Intel: hda-common-ops: Do not set the get_stream_position
    callback
  ASoC: SOF: Remove the get_stream_position callback
  ASoC: SOF: ipc4-pcm: Move struct sof_ipc4_timestamp_info definition
    locally
  ASoC: SOF: ipc4-pcm: Combine the SOF_IPC4_PIPE_PAUSED cases in
    pcm_trigger
  ASoC: SOF: ipc4-pcm: Invalidate the stream_start_offset in PAUSED
    state
  ASoC: SOF: sof-pcm: Add pointer callback to sof_ipc_pcm_ops
  ASoC: SOF: ipc4-pcm: Correct the delay calculation
  ALSA: hda: Add pplcllpl/u members to hdac_ext_stream
  ASoC: SOF: Intel: hda: Compensate LLP in case it is not reset

 include/sound/hdaudio_ext.h          |   3 +
 sound/soc/sof/intel/hda-common-ops.c |   3 +
 sound/soc/sof/intel/hda-dai-ops.c    |  11 ++
 sound/soc/sof/intel/hda-pcm.c        |  29 ++++
 sound/soc/sof/intel/hda-stream.c     |  70 ++++++++++
 sound/soc/sof/intel/hda.h            |   6 +
 sound/soc/sof/intel/lnl.c            |   2 -
 sound/soc/sof/intel/mtl.c            |  14 --
 sound/soc/sof/intel/mtl.h            |  10 --
 sound/soc/sof/ipc4-pcm.c             | 191 ++++++++++++++++++++++-----
 sound/soc/sof/ipc4-priv.h            |  14 --
 sound/soc/sof/ipc4-topology.c        |  22 ++-
 sound/soc/sof/ops.h                  |  24 +++-
 sound/soc/sof/pcm.c                  |   8 ++
 sound/soc/sof/sof-audio.h            |   9 +-
 sound/soc/sof/sof-priv.h             |  24 +++-
 16 files changed, 351 insertions(+), 89 deletions(-)

Comments

Mark Brown March 26, 2024, 1:48 p.m. UTC | #1
On Thu, 21 Mar 2024 15:07:57 +0200, Peter Ujfalusi wrote:
> The current version of delay reporting code can report incorrect
> values when paired with a firmware which enables this feature.
> 
> Unfortunately there are several smaller issues that needed to be addressed
> to correct the behavior:
> 
> Wrong information was used for the host side of counter
> For MTL/LNL used incorrect (in a sense that it was verified only on MTL)
> link side counter function.
> The link side counter needs compensation logic if pause/resume is used.
> The offset values were not refreshed from firmware.
> Finally, not strictly connected, but the ALSA buffer size needs to be
> constrained to avoid constant xrun from media players (like mpv)
> 
> [...]

Applied to

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

Thanks!

[01/17] ASoC: SOF: Add dsp_max_burst_size_in_ms member to snd_sof_pcm_stream
        commit: fb9f8125ed9d9b8e11f309a7dbfbe7b40de48fba
[02/17] ASoC: SOF: ipc4-topology: Save the DMA maximum burst size for PCMs
        commit: 842bb8b62cc6f3546d61eb63115b32ebc6dd4a87
[03/17] ASoC: SOF: Intel: hda-pcm: Use dsp_max_burst_size_in_ms to place constraint
        commit: fe76d2e75a6da97edd2b4ec5cfb9efd541be087a
[04/17] ASoC: SOF: Intel: hda: Implement get_stream_position (Linear Link Position)
        commit: 67b182bea08a8d1092b91b57aefdfe420fce1634
[05/17] ASoC: SOF: Intel: mtl/lnl: Use the generic get_stream_position callback
        commit: 4374f698d7d9f849b66f3fa8f7a64f0bc1a53d7f
[06/17] ASoC: SOF: Introduce a new callback pair to be used for PCM delay reporting
        commit: ce2faa9a180c1984225689b6b1cb26045f8b7470
[07/17] ASoC: SOF: Intel: Set the dai/host get frame/byte counter callbacks
        commit: fd6f6a0632bc891673490bf4a92304172251825c
[08/17] ASoC: SOF: ipc4-pcm: Use the snd_sof_pcm_get_dai_frame_counter() for pcm_delay
        commit: 37679a1bd372c8308a3faccf3438c9df642565b3
[09/17] ASoC: SOF: Intel: hda-common-ops: Do not set the get_stream_position callback
        commit: 4ab6c38c664442c1fc9911eb3c5c6953d3dbcca5
[10/17] ASoC: SOF: Remove the get_stream_position callback
        commit: 07007b8ac42cffc23043d00e56b0f67a75dc4b22
[11/17] ASoC: SOF: ipc4-pcm: Move struct sof_ipc4_timestamp_info definition locally
        commit: 31d2874d083ba6cc2a4f4b26dab73c3be1c92658
[12/17] ASoC: SOF: ipc4-pcm: Combine the SOF_IPC4_PIPE_PAUSED cases in pcm_trigger
        commit: 55ca6ca227bfc5a8d0a0c2c5d6e239777226a604
[13/17] ASoC: SOF: ipc4-pcm: Invalidate the stream_start_offset in PAUSED state
        commit: 3ce3bc36d91510389955b47e36ea4c4e94fcbdd3
[14/17] ASoC: SOF: sof-pcm: Add pointer callback to sof_ipc_pcm_ops
        commit: 77165bd955d55114028b06787a530b8f9220e4b0
[15/17] ASoC: SOF: ipc4-pcm: Correct the delay calculation
        commit: 0ea06680dfcb4464ac6c05968433d060efb44345
[16/17] ALSA: hda: Add pplcllpl/u members to hdac_ext_stream
        commit: f9eeb6bb13fb5d7af1ea5b74a10b1f8ead962540
[17/17] ASoC: SOF: Intel: hda: Compensate LLP in case it is not reset
        commit: 1abc2642588e06f6180b3fbb21968cf5d0ba9e5f

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