ASoC: SAMSUNG: Modify I2S driver to support idma
[deliverable/linux.git] / sound / soc / samsung / i2s.c
index 1568eea31f41f17c062fdb7671f570a80c56db4c..c086b78539ee5075f14b76d99089e4abb7f0abf1 100644 (file)
@@ -21,6 +21,7 @@
 #include <plat/audio.h>
 
 #include "dma.h"
+#include "idma.h"
 #include "i2s.h"
 #include "i2s-regs.h"
 
@@ -60,6 +61,7 @@ struct i2s_dai {
        /* DMA parameters */
        struct s3c_dma_params dma_playback;
        struct s3c_dma_params dma_capture;
+       struct s3c_dma_params idma_playback;
        u32     quirks;
        u32     suspend_i2smod;
        u32     suspend_i2scon;
@@ -877,6 +879,10 @@ static int samsung_i2s_dai_probe(struct snd_soc_dai *dai)
        if (i2s->quirks & QUIRK_NEED_RSTCLR)
                writel(CON_RSTCLR, i2s->addr + I2SCON);
 
+       if (i2s->quirks & QUIRK_SEC_DAI)
+               idma_reg_addr_init((void *)i2s->addr,
+                                       i2s->sec_dai->idma_playback.dma_addr);
+
 probe_exit:
        /* Reset any constraint on RFS and BFS */
        i2s->rfs = 0;
@@ -1077,6 +1083,7 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev)
                sec_dai->dma_playback.dma_size = 4;
                sec_dai->base = regs_base;
                sec_dai->quirks = quirks;
+               sec_dai->idma_playback.dma_addr = i2s_cfg->idma_addr;
                sec_dai->pri_dai = pri_dai;
                pri_dai->sec_dai = sec_dai;
        }
This page took 0.026246 seconds and 5 git commands to generate.