Pass the EDMA CC instance through Audio resource structure. Also,
modify the edma_alloc_slot API in audio driver to take EDMA CC
instance as argument.

This patch has been tested on DM644x. While testing this patch,
I found out that audio is playing fast on DM644x (even without
this patch). Need to debug this further.

Signed-off-by: Sudhakar Rajashekhara <sudhakar....@ti.com>
---
 sound/soc/davinci/davinci-evm.c |    8 ++++----
 sound/soc/davinci/davinci-pcm.c |    6 +++---
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
index 45912b4..d769ad2 100644
--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -175,8 +175,8 @@ static struct resource evm_snd_resources[] = {
 };
 
 static struct evm_snd_platform_data evm_snd_data = {
-       .tx_dma_ch      = DAVINCI_DMA_ASP0_TX,
-       .rx_dma_ch      = DAVINCI_DMA_ASP0_RX,
+       .tx_dma_ch      = EDMA_CTLR_CHAN(0, DAVINCI_DMA_ASP0_TX),
+       .rx_dma_ch      = EDMA_CTLR_CHAN(0, DAVINCI_DMA_ASP0_RX),
 };
 
 /* DM335 EVM uses ASP1; line-out is a stereo mini-jack */
@@ -189,8 +189,8 @@ static struct resource dm335evm_snd_resources[] = {
 };
 
 static struct evm_snd_platform_data dm335evm_snd_data = {
-       .tx_dma_ch      = DAVINCI_DMA_ASP1_TX,
-       .rx_dma_ch      = DAVINCI_DMA_ASP1_RX,
+       .tx_dma_ch      = EDMA_CTLR_CHAN(0, DAVINCI_DMA_ASP1_TX),
+       .rx_dma_ch      = EDMA_CTLR_CHAN(0, DAVINCI_DMA_ASP1_RX),
 };
 
 static struct platform_device *evm_snd_device;
diff --git a/sound/soc/davinci/davinci-pcm.c b/sound/soc/davinci/davinci-pcm.c
index 48bd9e2..4590301 100644
--- a/sound/soc/davinci/davinci-pcm.c
+++ b/sound/soc/davinci/davinci-pcm.c
@@ -150,7 +150,7 @@ static int davinci_pcm_dma_request(struct snd_pcm_substream 
*substream)
        prtd->master_lch = ret;
 
        /* Request parameter RAM reload slot */
-       ret = edma_alloc_slot(EDMA_SLOT_ANY);
+       ret = edma_alloc_slot(EDMA_CTLR(prtd->master_lch), EDMA_SLOT_ANY);
        if (ret < 0) {
                edma_free_channel(prtd->master_lch);
                return ret;
@@ -167,8 +167,8 @@ static int davinci_pcm_dma_request(struct snd_pcm_substream 
*substream)
         * so davinci_pcm_enqueue_dma() takes less time in IRQ.
         */
        edma_read_slot(prtd->slave_lch, &p_ram);
-       p_ram.opt |= TCINTEN | EDMA_TCC(prtd->master_lch);
-       p_ram.link_bcntrld = prtd->slave_lch << 5;
+       p_ram.opt |= TCINTEN | EDMA_TCC(EDMA_CHAN(prtd->master_lch));
+       p_ram.link_bcntrld = EDMA_CHAN(prtd->slave_lch) << 5;
        edma_write_slot(prtd->slave_lch, &p_ram);
 
        return 0;
-- 
1.5.6

_______________________________________________
Davinci-linux-open-source mailing list
Davinci-linux-open-source@linux.davincidsp.com
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to