ASoC: OMAP: mcbsp, mcpdm, dmic: Let omap-pcm to pick the dma_type
[firefly-linux-kernel-4.4.55.git] / sound / soc / omap / omap-mcpdm.c
index f7babb374a3726085086173e18c5182c60a7abf3..84743d47e687437de4971bcd7a1b7b1ce35c875d 100644 (file)
@@ -40,7 +40,6 @@
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
 
-#include <plat/dma.h>
 #include <plat/omap_hwmod.h>
 #include "omap-mcpdm.h"
 #include "omap-pcm.h"
@@ -71,17 +70,9 @@ struct omap_mcpdm {
 static struct omap_pcm_dma_data omap_mcpdm_dai_dma_params[] = {
        {
                .name = "Audio playback",
-               .dma_req = OMAP44XX_DMA_MCPDM_DL,
-               .data_type = OMAP_DMA_DATA_TYPE_S32,
-               .sync_mode = OMAP_DMA_SYNC_PACKET,
-               .port_addr = OMAP44XX_MCPDM_L3_BASE + MCPDM_REG_DN_DATA,
        },
        {
                .name = "Audio capture",
-               .dma_req = OMAP44XX_DMA_MCPDM_UP,
-               .data_type = OMAP_DMA_DATA_TYPE_S32,
-               .sync_mode = OMAP_DMA_SYNC_PACKET,
-               .port_addr = OMAP44XX_MCPDM_L3_BASE + MCPDM_REG_UP_DATA,
        },
 };
 
@@ -454,10 +445,33 @@ static __devinit int asoc_mcpdm_probe(struct platform_device *pdev)
 
        mutex_init(&mcpdm->mutex);
 
+       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dma");
+       if (res == NULL)
+               return -ENOMEM;
+
+       omap_mcpdm_dai_dma_params[0].port_addr = res->start + MCPDM_REG_DN_DATA;
+       omap_mcpdm_dai_dma_params[1].port_addr = res->start + MCPDM_REG_UP_DATA;
+
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (res == NULL)
                return -ENOMEM;
 
+       res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "dn_link");
+       if (!res)
+               return -ENODEV;
+
+       omap_mcpdm_dai_dma_params[0].dma_req = res->start;
+
+       res = platform_get_resource_byname(pdev, IORESOURCE_DMA, "up_link");
+       if (!res)
+               return -ENODEV;
+
+       omap_mcpdm_dai_dma_params[1].dma_req = res->start;
+
+       res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "mpu");
+       if (res == NULL)
+               return -ENOMEM;
+
        if (!devm_request_mem_region(&pdev->dev, res->start,
                                     resource_size(res), "McPDM"))
                return -EBUSY;