]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: Intel: avs: Unprepare a stream when XRUN occurs
authorCezary Rojewski <cezary.rojewski@intel.com>
Thu, 23 Oct 2025 09:23:46 +0000 (11:23 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 23 Oct 2025 12:42:25 +0000 (13:42 +0100)
The pcm->prepare() function may be called multiple times in a row by the
userspace, as mentioned in the documentation. The driver shall take that
into account and prevent redundancy. However, the exact same function is
called during XRUNs and in such case, the particular stream shall be
reset and setup anew.

Fixes: 9114700b496c ("ASoC: Intel: avs: Generic PCM FE operations")
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://patch.msgid.link/20251023092348.3119313-2-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/avs/pcm.c

index d31058e2de5b80550e452f8bf184b1c1ff471d70..501466bd1f7f69b782e3f7bc9f11a66716809696 100644 (file)
@@ -754,6 +754,8 @@ static int avs_dai_fe_prepare(struct snd_pcm_substream *substream, struct snd_so
        data = snd_soc_dai_get_dma_data(dai, substream);
        host_stream = data->host_stream;
 
+       if (runtime->state == SNDRV_PCM_STATE_XRUN)
+               hdac_stream(host_stream)->prepared = false;
        if (hdac_stream(host_stream)->prepared)
                return 0;