diff options
author | Sangbeom Kim <sbkim73@samsung.com> | 2011-07-20 17:07:12 +0900 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-07-20 20:58:07 +0100 |
commit | 61100f405de5c16a0866de7843ed442090436e6a (patch) | |
tree | 16ad020c5973ee5a66fb0c58160b4253339c995d /sound | |
parent | 82d1d521036eb3f5aae48b847f939d99a44c18bb (diff) | |
download | linux-3.10-61100f405de5c16a0866de7843ed442090436e6a.tar.gz linux-3.10-61100f405de5c16a0866de7843ed442090436e6a.tar.bz2 linux-3.10-61100f405de5c16a0866de7843ed442090436e6a.zip |
ASoC: SAMSUNG: Modify I2S driver to support idma
Previously, I2S driver only can support system dma.
In this patch, i2s driver can support internal dma too.
IDMA h/w configuration is initialized on idma.c
Signed-off-by: Sangbeom Kim <sbkim73@samsung.com>
Acked-by: Liam Girdwood <lrg@ti.com>
Acked-by: Jassi Brar <jassisinghbrar@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/samsung/i2s.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index 1568eea31f4..c086b78539e 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -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; } |