ASoC: SOF: Intel: hda-dai: Do not perform DMA cleanup during stop
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Wed, 22 Mar 2023 09:43:44 +0000 (11:43 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 22 Mar 2023 13:17:30 +0000 (13:17 +0000)
In the case of repeated start/stop without involving hw_free, the stream
tag needs to be preserved for the subsequent starts. So, skip performing
the DMA clean up during stop and handle it only during suspend or
hw_free.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20230322094346.6019-2-peter.ujfalusi@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/hda-dai.c

index 9637f0f44b01cbc0bf809b779abb08ea8f3d211f..46a17afdd1ea1af363d8908ee969c0ec5c10cb69 100644 (file)
@@ -305,7 +305,6 @@ static int hda_dai_trigger(struct snd_pcm_substream *substream, int cmd, struct
 
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_SUSPEND:
-       case SNDRV_PCM_TRIGGER_STOP:
                ret = hda_link_dma_cleanup(substream, hext_stream, dai, codec_dai);
                if (ret < 0) {
                        dev_err(sdev->dev, "%s: failed to clean up link DMA\n", __func__);