aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc
diff options
context:
space:
mode:
authorSangbeom Kim <sbkim73@samsung.com>2011-07-20 04:07:12 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-07-20 15:58:07 -0400
commit61100f405de5c16a0866de7843ed442090436e6a (patch)
tree16ad020c5973ee5a66fb0c58160b4253339c995d /sound/soc
parent82d1d521036eb3f5aae48b847f939d99a44c18bb (diff)
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/soc')
-rw-r--r--sound/soc/samsung/i2s.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c
index 1568eea31f41..c086b78539ee 100644
--- a/sound/soc/samsung/i2s.c
+++ b/sound/soc/samsung/i2s.c
@@ -21,6 +21,7 @@
21#include <plat/audio.h> 21#include <plat/audio.h>
22 22
23#include "dma.h" 23#include "dma.h"
24#include "idma.h"
24#include "i2s.h" 25#include "i2s.h"
25#include "i2s-regs.h" 26#include "i2s-regs.h"
26 27
@@ -60,6 +61,7 @@ struct i2s_dai {
60 /* DMA parameters */ 61 /* DMA parameters */
61 struct s3c_dma_params dma_playback; 62 struct s3c_dma_params dma_playback;
62 struct s3c_dma_params dma_capture; 63 struct s3c_dma_params dma_capture;
64 struct s3c_dma_params idma_playback;
63 u32 quirks; 65 u32 quirks;
64 u32 suspend_i2smod; 66 u32 suspend_i2smod;
65 u32 suspend_i2scon; 67 u32 suspend_i2scon;
@@ -877,6 +879,10 @@ static int samsung_i2s_dai_probe(struct snd_soc_dai *dai)
877 if (i2s->quirks & QUIRK_NEED_RSTCLR) 879 if (i2s->quirks & QUIRK_NEED_RSTCLR)
878 writel(CON_RSTCLR, i2s->addr + I2SCON); 880 writel(CON_RSTCLR, i2s->addr + I2SCON);
879 881
882 if (i2s->quirks & QUIRK_SEC_DAI)
883 idma_reg_addr_init((void *)i2s->addr,
884 i2s->sec_dai->idma_playback.dma_addr);
885
880probe_exit: 886probe_exit:
881 /* Reset any constraint on RFS and BFS */ 887 /* Reset any constraint on RFS and BFS */
882 i2s->rfs = 0; 888 i2s->rfs = 0;
@@ -1077,6 +1083,7 @@ static __devinit int samsung_i2s_probe(struct platform_device *pdev)
1077 sec_dai->dma_playback.dma_size = 4; 1083 sec_dai->dma_playback.dma_size = 4;
1078 sec_dai->base = regs_base; 1084 sec_dai->base = regs_base;
1079 sec_dai->quirks = quirks; 1085 sec_dai->quirks = quirks;
1086 sec_dai->idma_playback.dma_addr = i2s_cfg->idma_addr;
1080 sec_dai->pri_dai = pri_dai; 1087 sec_dai->pri_dai = pri_dai;
1081 pri_dai->sec_dai = sec_dai; 1088 pri_dai->sec_dai = sec_dai;
1082 } 1089 }