[alsa-devel] [PATCH V2 1/4] ASoC: SAMSUNG: Modify I2S driver to support idma
Jassi Brar
jassisinghbrar at gmail.com
Sat Jun 18 10:46:15 CEST 2011
On Wed, Jun 15, 2011 at 2:13 PM, Sangbeom Kim <sbkim73 at samsung.com> wrote:
> +#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
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.
More information about the Alsa-devel
mailing list