These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / sound / soc / pxa / pxa2xx-pcm.c
index a51c9da..9f39039 100644 (file)
@@ -15,8 +15,6 @@
 #include <linux/dmaengine.h>
 #include <linux/of.h>
 
-#include <mach/dma.h>
-
 #include <sound/core.h>
 #include <sound/soc.h>
 #include <sound/pxa2xx-lib.h>
 static int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
        struct snd_pcm_hw_params *params)
 {
-       struct snd_pcm_runtime *runtime = substream->runtime;
-       struct pxa2xx_runtime_data *prtd = runtime->private_data;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_dmaengine_dai_dma_data *dma;
-       int ret;
 
        dma = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
@@ -40,40 +35,13 @@ static int pxa2xx_pcm_hw_params(struct snd_pcm_substream *substream,
        if (!dma)
                return 0;
 
-       /* this may get called several times by oss emulation
-        * with different params */
-       if (prtd->params == NULL) {
-               prtd->params = dma;
-               ret = pxa_request_dma("name", DMA_PRIO_LOW,
-                             pxa2xx_pcm_dma_irq, substream);
-               if (ret < 0)
-                       return ret;
-               prtd->dma_ch = ret;
-       } else if (prtd->params != dma) {
-               pxa_free_dma(prtd->dma_ch);
-               prtd->params = dma;
-               ret = pxa_request_dma("name", DMA_PRIO_LOW,
-                             pxa2xx_pcm_dma_irq, substream);
-               if (ret < 0)
-                       return ret;
-               prtd->dma_ch = ret;
-       }
-
        return __pxa2xx_pcm_hw_params(substream, params);
 }
 
 static int pxa2xx_pcm_hw_free(struct snd_pcm_substream *substream)
 {
-       struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
-
        __pxa2xx_pcm_hw_free(substream);
 
-       if (prtd->dma_ch >= 0) {
-               pxa_free_dma(prtd->dma_ch);
-               prtd->dma_ch = -1;
-               prtd->params = NULL;
-       }
-
        return 0;
 }
 
@@ -124,13 +92,7 @@ static struct snd_soc_platform_driver pxa2xx_soc_platform = {
 
 static int pxa2xx_soc_platform_probe(struct platform_device *pdev)
 {
-       return snd_soc_register_platform(&pdev->dev, &pxa2xx_soc_platform);
-}
-
-static int pxa2xx_soc_platform_remove(struct platform_device *pdev)
-{
-       snd_soc_unregister_platform(&pdev->dev);
-       return 0;
+       return devm_snd_soc_register_platform(&pdev->dev, &pxa2xx_soc_platform);
 }
 
 #ifdef CONFIG_OF
@@ -138,6 +100,7 @@ static const struct of_device_id snd_soc_pxa_audio_match[] = {
        { .compatible   = "mrvl,pxa-pcm-audio" },
        { }
 };
+MODULE_DEVICE_TABLE(of, snd_soc_pxa_audio_match);
 #endif
 
 static struct platform_driver pxa_pcm_driver = {
@@ -147,7 +110,6 @@ static struct platform_driver pxa_pcm_driver = {
        },
 
        .probe = pxa2xx_soc_platform_probe,
-       .remove = pxa2xx_soc_platform_remove,
 };
 
 module_platform_driver(pxa_pcm_driver);