ASoC: SOF: ipc4-pcm: Invalidate the stream_start_offset in PAUSED state
BugLink: https://bugs.launchpad.net/bugs/2065400 commit 3ce3bc36d91510389955b47e36ea4c4e94fcbdd3 upstream. When the final state is SOF_IPC4_PIPE_PAUSED, it is possible that the stream will be restarted (resume or start) in which case we need to update the offset from the firmware. Cc: stable@vger.kernel.org # 6.8 Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://msgid.link/r/20240321130814.4412-14-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com> Signed-off-by: Roxana Nicolescu <roxana.nicolescu@canonical.com>
This commit is contained in:
committed by
Stefan Bader
parent
2f3c0209e0
commit
6fefc69d70
@@ -420,8 +420,19 @@ static int sof_ipc4_trigger_pipelines(struct snd_soc_component *component,
|
||||
}
|
||||
|
||||
/* return if this is the final state */
|
||||
if (state == SOF_IPC4_PIPE_PAUSED)
|
||||
if (state == SOF_IPC4_PIPE_PAUSED) {
|
||||
struct sof_ipc4_timestamp_info *time_info;
|
||||
|
||||
/*
|
||||
* Invalidate the stream_start_offset to make sure that it is
|
||||
* going to be updated if the stream resumes
|
||||
*/
|
||||
time_info = spcm->stream[substream->stream].private;
|
||||
if (time_info)
|
||||
time_info->stream_start_offset = SOF_IPC4_INVALID_STREAM_POSITION;
|
||||
|
||||
goto free;
|
||||
}
|
||||
skip_pause_transition:
|
||||
/* else set the RUNNING/RESET state in the DSP */
|
||||
ret = sof_ipc4_set_multi_pipeline_state(sdev, state, trigger_list);
|
||||
|
||||
Reference in New Issue
Block a user