[alsa-devel] [PATCH] ASoC: rsnd: fixup rsnd_gen_dma_addr() for Gen1
Simon Horman
simon at horms.net
Wed Jun 18 07:36:01 CEST 2014
On Tue, Jun 17, 2014 at 06:38:01PM -0700, Kuninori Morimoto wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
>
> ad32d0c7b0e993433df152ae747652647eb65a27
> (ASoC: rsnd: add rsnd_gen_dma_addr() for DMAC addr)
> added rsnd_gen_dma_addr() to calculate DMA addr,
> but, it is necessary only for Gen2.
> This patch ignores Gen1 case.
> Kernel will be panic without this patch.
> Special thanks to Simon
>
> Reported-by: Simon Horman <horms at verge.net.au>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
Hi Morimoto-san,
thanks for the quick fix.
I have verified that the bockw board no longer panics.
Tested-by: Simon Horman <horms+renesas at verge.net.au>
> ---
> sound/soc/sh/rcar/gen.c | 33 +++++++++++++++++++++------------
> 1 file changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/sound/soc/sh/rcar/gen.c b/sound/soc/sh/rcar/gen.c
> index 1dd2b7d..0280a11 100644
> --- a/sound/soc/sh/rcar/gen.c
> +++ b/sound/soc/sh/rcar/gen.c
> @@ -184,7 +184,7 @@ static int rsnd_gen_regmap_init(struct rsnd_priv *priv,
> #define RDMA_CMD_O_N(addr, i) (addr ##_reg - 0x004f8000 + (0x400 * i))
> #define RDMA_CMD_O_P(addr, i) (addr ##_reg - 0x001f8000 + (0x400 * i))
>
> -void rsnd_gen_dma_addr(struct rsnd_priv *priv,
> +static void rsnd_gen2_dma_addr(struct rsnd_priv *priv,
> struct rsnd_dma *dma,
> struct dma_slave_config *cfg,
> int is_play, int slave_id)
> @@ -226,17 +226,6 @@ void rsnd_gen_dma_addr(struct rsnd_priv *priv,
> }
> };
>
> - cfg->slave_id = slave_id;
> - cfg->src_addr = 0;
> - cfg->dst_addr = 0;
> - cfg->direction = is_play ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM;
> -
> - /*
> - * gen1 uses default DMA addr
> - */
> - if (rsnd_is_gen1(priv))
> - return;
> -
> /* it shouldn't happen */
> if (use_dvc & !use_src) {
> dev_err(dev, "DVC is selected without SRC\n");
> @@ -250,6 +239,26 @@ void rsnd_gen_dma_addr(struct rsnd_priv *priv,
> id, cfg->src_addr, cfg->dst_addr);
> }
>
> +void rsnd_gen_dma_addr(struct rsnd_priv *priv,
> + struct rsnd_dma *dma,
> + struct dma_slave_config *cfg,
> + int is_play, int slave_id)
> +{
> + cfg->slave_id = slave_id;
> + cfg->src_addr = 0;
> + cfg->dst_addr = 0;
> + cfg->direction = is_play ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM;
> +
> + /*
> + * gen1 uses default DMA addr
> + */
> + if (rsnd_is_gen1(priv))
> + return;
> +
> + rsnd_gen2_dma_addr(priv, dma, cfg, is_play, slave_id);
> +}
> +
> +
> /*
> * Gen2
> */
> --
> 1.7.9.5
>
--
Simon Horman/ホーマン サイモン simon at horms.net
Horms Solutions 株式会社 www.horms.net
〒651-0084 兵庫県神戸市中央区磯辺通4-1-8 ITCビル901号
Tel: 03 6365 5977 Fax: 03 6673 4268
Skype: horms7
More information about the Alsa-devel
mailing list