ASoC: pxa: move some functions to pxa2xx-lib
authorDaniel Mack <daniel@zonque.org>
Wed, 27 Jun 2018 19:33:55 +0000 (21:33 +0200)
committerMark Brown <broonie@kernel.org>
Fri, 29 Jun 2018 11:05:04 +0000 (12:05 +0100)
To get rid of some intermediate platform layers, move pxa2xx_soc_pcm_new()
and pxa2xx_pcm_ops in pxa2xx-lib.

Signed-off-by: Daniel Mack <daniel@zonque.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/pxa2xx-lib.h
sound/arm/pxa2xx-ac97.c
sound/arm/pxa2xx-pcm-lib.c
sound/soc/pxa/pxa2xx-pcm.c

index b43de38de8b23c4d22292dcb1ecb4dc194e2e2df..6758fc12fa84b4ada446868964ddc26ec77f3110 100644 (file)
@@ -8,6 +8,7 @@
 /* PCM */
 struct snd_pcm_substream;
 struct snd_pcm_hw_params;
+struct snd_soc_pcm_runtime;
 struct snd_pcm;
 
 extern int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
@@ -22,6 +23,8 @@ extern int pxa2xx_pcm_mmap(struct snd_pcm_substream *substream,
        struct vm_area_struct *vma);
 extern int pxa2xx_pcm_preallocate_dma_buffer(struct snd_pcm *pcm, int stream);
 extern void pxa2xx_pcm_free_dma_buffers(struct snd_pcm *pcm);
+extern int pxa2xx_soc_pcm_new(struct snd_soc_pcm_runtime *rtd);
+extern const struct snd_pcm_ops pxa2xx_pcm_ops;
 
 /* AC97 */
 
index 0d624337857b6e5bd3636f5350a4157bf5314c5a..1f72672262d06406d21ea4fc00c400fac24fd94b 100644 (file)
@@ -174,7 +174,7 @@ static int pxa2xx_ac97_resume(struct device *dev)
 static SIMPLE_DEV_PM_OPS(pxa2xx_ac97_pm_ops, pxa2xx_ac97_suspend, pxa2xx_ac97_resume);
 #endif
 
-static const struct snd_pcm_ops pxa2xx_pcm_ops = {
+static const struct snd_pcm_ops pxa2xx_ac97_pcm_ops = {
        .open           = pxa2xx_ac97_pcm_open,
        .close          = pxa2xx_ac97_pcm_close,
        .ioctl          = snd_pcm_lib_ioctl,
@@ -203,13 +203,13 @@ static int pxa2xx_ac97_pcm_new(struct snd_card *card)
                goto out;
 
        stream = SNDRV_PCM_STREAM_PLAYBACK;
-       snd_pcm_set_ops(pcm, stream, &pxa2xx_pcm_ops);
+       snd_pcm_set_ops(pcm, stream, &pxa2xx_ac97_pcm_ops);
        ret = pxa2xx_pcm_preallocate_dma_buffer(pcm, stream);
        if (ret)
                goto out;
 
        stream = SNDRV_PCM_STREAM_CAPTURE;
-       snd_pcm_set_ops(pcm, stream, &pxa2xx_pcm_ops);
+       snd_pcm_set_ops(pcm, stream, &pxa2xx_ac97_pcm_ops);
        ret = pxa2xx_pcm_preallocate_dma_buffer(pcm, stream);
        if (ret)
                goto out;
index dc56dbebf4417323fb5e3201bbb83c83db109a3a..add23d9b4ef66a496fa0b51fe431a7cb35e37537 100644 (file)
@@ -179,6 +179,47 @@ void pxa2xx_pcm_free_dma_buffers(struct snd_pcm *pcm)
 }
 EXPORT_SYMBOL(pxa2xx_pcm_free_dma_buffers);
 
+int pxa2xx_soc_pcm_new(struct snd_soc_pcm_runtime *rtd)
+{
+       struct snd_card *card = rtd->card->snd_card;
+       struct snd_pcm *pcm = rtd->pcm;
+       int ret;
+
+       ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32));
+       if (ret)
+               return ret;
+
+       if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) {
+               ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
+                       SNDRV_PCM_STREAM_PLAYBACK);
+               if (ret)
+                       goto out;
+       }
+
+       if (pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream) {
+               ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
+                       SNDRV_PCM_STREAM_CAPTURE);
+               if (ret)
+                       goto out;
+       }
+ out:
+       return ret;
+}
+EXPORT_SYMBOL(pxa2xx_soc_pcm_new);
+
+const struct snd_pcm_ops pxa2xx_pcm_ops = {
+       .open           = pxa2xx_pcm_open,
+       .close          = pxa2xx_pcm_close,
+       .ioctl          = snd_pcm_lib_ioctl,
+       .hw_params      = pxa2xx_pcm_hw_params,
+       .hw_free        = pxa2xx_pcm_hw_free,
+       .prepare        = pxa2xx_pcm_prepare,
+       .trigger        = pxa2xx_pcm_trigger,
+       .pointer        = pxa2xx_pcm_pointer,
+       .mmap           = pxa2xx_pcm_mmap,
+};
+EXPORT_SYMBOL(pxa2xx_pcm_ops);
+
 MODULE_AUTHOR("Nicolas Pitre");
 MODULE_DESCRIPTION("Intel PXA2xx sound library");
 MODULE_LICENSE("GPL");
index da252d1f732efc3866457194c1721347170cc665..a1df4ec76cbd8e3f76fc280d711228e9215b47a2 100644 (file)
 #include <sound/pxa2xx-lib.h>
 #include <sound/dmaengine_pcm.h>
 
-static int __pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
-                                 struct snd_pcm_hw_params *params)
-{
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_dmaengine_dai_dma_data *dma;
-
-       dma = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
-
-       /* return if this is a bufferless transfer e.g.
-        * codec <--> BT codec or GSM modem -- lg FIXME */
-       if (!dma)
-               return 0;
-
-       return pxa2xx_pcm_hw_params(substream, params);
-}
-
-static const struct snd_pcm_ops pxa2xx_pcm_ops = {
-       .open           = pxa2xx_pcm_open,
-       .close          = pxa2xx_pcm_close,
-       .ioctl          = snd_pcm_lib_ioctl,
-       .hw_params      = __pxa2xx_pcm_hw_params,
-       .hw_free        = pxa2xx_pcm_hw_free,
-       .prepare        = pxa2xx_pcm_prepare,
-       .trigger        = pxa2xx_pcm_trigger,
-       .pointer        = pxa2xx_pcm_pointer,
-       .mmap           = pxa2xx_pcm_mmap,
-};
-
-static int pxa2xx_soc_pcm_new(struct snd_soc_pcm_runtime *rtd)
-{
-       struct snd_card *card = rtd->card->snd_card;
-       struct snd_pcm *pcm = rtd->pcm;
-       int ret;
-
-       ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32));
-       if (ret)
-               return ret;
-
-       if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) {
-               ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
-                       SNDRV_PCM_STREAM_PLAYBACK);
-               if (ret)
-                       goto out;
-       }
-
-       if (pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream) {
-               ret = pxa2xx_pcm_preallocate_dma_buffer(pcm,
-                       SNDRV_PCM_STREAM_CAPTURE);
-               if (ret)
-                       goto out;
-       }
- out:
-       return ret;
-}
-
 static const struct snd_soc_component_driver pxa2xx_soc_platform = {
        .ops            = &pxa2xx_pcm_ops,
        .pcm_new        = pxa2xx_soc_pcm_new,