+#define AHB_INTENLVL0 (1 << 24) +#define AHB_LVL0INT (1 << 20) +#define AHB_CLRLVL0INT (1 << 16) +#define AHB_DMARLD (1 << 5) +#define AHB_INTMASK (1 << 3) +#define AHB_DMAEN (1 << 0) +#define AHB_LVLINTMASK (0xf << 20) + +#define I2SSIZE_TRNMSK (0xffff) +#define I2SSIZE_SHIFT (16) Not serious but .... a) Let us please get over our infatuation with such parentheses :) b) Ideally these _new_ definitions should have been added separate to
On Wed, Jun 15, 2011 at 2:13 PM, Sangbeom Kim <sbkim73@samsung.com> wrote: this moving.
diff --git a/sound/soc/samsung/i2s.c b/sound/soc/samsung/i2s.c index 992a732..2fc2428 100644 --- a/sound/soc/samsung/i2s.c +++ b/sound/soc/samsung/i2s.c @@ -9,7 +9,7 @@ * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ - +#define DEBUG Usually we don't do it by default.
+#define ST_RUNNING (1<<0) +#define ST_OPENED (1<<1) why do we need these two defines ?
@@ -646,6 +548,7 @@ static int i2s_hw_params(struct snd_pcm_substream *substream,
{ struct i2s_dai *i2s = to_info(dai); u32 mod = readl(i2s->addr + I2SMOD); + u32 ahb = readl(i2s->addr + I2SAHB); Please realize that this function is common for even s3c24xx, for which this is invalid AHB read and all other subsequent ops.
@@ -702,6 +605,13 @@ static int i2s_hw_params(struct snd_pcm_substream *substream, params_format(params)); return -EINVAL; } + + if (is_secondary(i2s)) { + ahb |= (AHB_DMARLD | AHB_INTMASK); + mod |= MOD_TXS_IDMA; + } + + writel(ahb, i2s->addr + I2SAHB); ... this too.