OSDN Git Service

ASoC: SOF: compress: Move sof_compr_copy functionality
authorLaurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Mon, 22 Aug 2022 10:15:01 +0000 (13:15 +0300)
committerMark Brown <broonie@kernel.org>
Wed, 31 Aug 2022 11:12:58 +0000 (12:12 +0100)
Since we're preparing to add support for compress capture,
we need to move the content of sof_compr_copy into a
separate function which handles the playback direction just
like the initial sof_compr_copy.

Reviewed-by: Paul Olaru <paul.olaru@nxp.com>
Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Laurentiu Mihalcea <laurentiu.mihalcea@nxp.com>
Link: https://lore.kernel.org/r/20220822101502.17644-2-laurentiu.mihalcea@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/compress.c

index c8ae778..2ee8109 100644 (file)
@@ -297,18 +297,13 @@ static int sof_compr_trigger(struct snd_soc_component *component,
                                  &reply, sizeof(reply));
 }
 
-static int sof_compr_copy(struct snd_soc_component *component,
-                         struct snd_compr_stream *cstream,
-                         char __user *buf, size_t count)
+static int sof_compr_copy_playback(struct snd_compr_runtime *rtd,
+                                  char __user *buf, size_t count)
 {
-       struct snd_compr_runtime *rtd = cstream->runtime;
-       unsigned int offset, n;
        void *ptr;
+       unsigned int offset, n;
        int ret;
 
-       if (count > rtd->buffer_size)
-               count = rtd->buffer_size;
-
        div_u64_rem(rtd->total_bytes_available, rtd->buffer_size, &offset);
        ptr = rtd->dma_area + offset;
        n = rtd->buffer_size - offset;
@@ -323,6 +318,18 @@ static int sof_compr_copy(struct snd_soc_component *component,
        return count - ret;
 }
 
+static int sof_compr_copy(struct snd_soc_component *component,
+                         struct snd_compr_stream *cstream,
+                         char __user *buf, size_t count)
+{
+       struct snd_compr_runtime *rtd = cstream->runtime;
+
+       if (count > rtd->buffer_size)
+               count = rtd->buffer_size;
+
+       return sof_compr_copy_playback(rtd, buf, count);
+}
+
 static int sof_compr_pointer(struct snd_soc_component *component,
                             struct snd_compr_stream *cstream,
                             struct snd_compr_tstamp *tstamp)