Message ID | 87k38fyp3a.wl%kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 64eae986fc1e3a281b00f04b7c9c00b145ec8a57 |
Headers | show |
On Tue, Jun 17, 2014 at 06:38:01PM -0700, Kuninori Morimoto wrote: > From: Kuninori Morimoto <kuninori.morimoto.gx@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@verge.net.au> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@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@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 >
Hi Mark I re-post these patches. Please ignore these patches > From: Kuninori Morimoto <kuninori.morimoto.gx@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@verge.net.au> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > --- > 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 >
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 */