OSDN Git Service

ASoC: intel: sst-mfld-platform-pcm: add .delay support
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 16 Nov 2021 07:45:29 +0000 (16:45 +0900)
committerMark Brown <broonie@kernel.org>
Mon, 29 Nov 2021 12:19:44 +0000 (12:19 +0000)
Now ALSA SoC supports .delay for component.
This patch uses it, and not update runtime->delay on .pointer
directly / secretly.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/871r3gy25j.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/atom/sst-mfld-platform-pcm.c

index 5db2f48..a56dd48 100644 (file)
@@ -653,10 +653,21 @@ static snd_pcm_uframes_t sst_soc_pointer(struct snd_soc_component *component,
                dev_err(rtd->dev, "sst: error code = %d\n", ret_val);
                return ret_val;
        }
-       substream->runtime->delay = str_info->pcm_delay;
        return str_info->buffer_ptr;
 }
 
+static snd_pcm_sframes_t sst_soc_delay(struct snd_soc_component *component,
+                                      struct snd_pcm_substream *substream)
+{
+       struct sst_runtime_stream *stream = substream->runtime->private_data;
+       struct pcm_stream_info *str_info = &stream->stream_info;
+
+       if (sst_get_stream_status(stream) == SST_PLATFORM_INIT)
+               return 0;
+
+       return str_info->pcm_delay;
+}
+
 static int sst_soc_pcm_new(struct snd_soc_component *component,
                           struct snd_soc_pcm_runtime *rtd)
 {
@@ -695,6 +706,7 @@ static const struct snd_soc_component_driver sst_soc_platform_drv  = {
        .open           = sst_soc_open,
        .trigger        = sst_soc_trigger,
        .pointer        = sst_soc_pointer,
+       .delay          = sst_soc_delay,
        .compress_ops   = &sst_platform_compress_ops,
        .pcm_construct  = sst_soc_pcm_new,
 };