| From f32480afc71fc72773a263b05ecb21ef29de7a07 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 3 Sep 2018 07:07:07 +0000 |
| Subject: ASoC: rsnd: ssi: Fix issue in dma data address assignment |
| |
| From: Jiada Wang <jiada_wang@mentor.com> |
| |
| [ Upstream commit 0e289012b47a2de1f029a6b61c75998e2f159dd9 ] |
| |
| Same SSI device may be used in different dai links, |
| by only having one dma struct in rsnd_ssi, after the first |
| instance's dma config be initilized, the following instances |
| can no longer configure dma, this causes issue, when their |
| dma data address are different from the first instance. |
| |
| Signed-off-by: Jiada Wang <jiada_wang@mentor.com> |
| Signed-off-by: Timo Wischer <twischer@de.adit-jv.com> |
| [Kuninori: tidyup for upstream] |
| Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> |
| Tested-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/soc/sh/rcar/rsnd.h | 1 + |
| sound/soc/sh/rcar/ssi.c | 4 +--- |
| 2 files changed, 2 insertions(+), 3 deletions(-) |
| |
| diff --git a/sound/soc/sh/rcar/rsnd.h b/sound/soc/sh/rcar/rsnd.h |
| index 8f7a0abfa751e..f64c7058b258b 100644 |
| --- a/sound/soc/sh/rcar/rsnd.h |
| +++ b/sound/soc/sh/rcar/rsnd.h |
| @@ -438,6 +438,7 @@ struct rsnd_dai_stream { |
| char name[RSND_DAI_NAME_SIZE]; |
| struct snd_pcm_substream *substream; |
| struct rsnd_mod *mod[RSND_MOD_MAX]; |
| + struct rsnd_mod *dma; |
| struct rsnd_dai *rdai; |
| struct device *dmac_dev; /* for IPMMU */ |
| u32 parent_ssi_status; |
| diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c |
| index 9410e0a9b14b7..33dc8d6ad35b2 100644 |
| --- a/sound/soc/sh/rcar/ssi.c |
| +++ b/sound/soc/sh/rcar/ssi.c |
| @@ -72,7 +72,6 @@ |
| |
| struct rsnd_ssi { |
| struct rsnd_mod mod; |
| - struct rsnd_mod *dma; |
| |
| u32 flags; |
| u32 cr_own; |
| @@ -873,7 +872,6 @@ static int rsnd_ssi_dma_probe(struct rsnd_mod *mod, |
| struct rsnd_dai_stream *io, |
| struct rsnd_priv *priv) |
| { |
| - struct rsnd_ssi *ssi = rsnd_mod_to_ssi(mod); |
| int ret; |
| |
| /* |
| @@ -888,7 +886,7 @@ static int rsnd_ssi_dma_probe(struct rsnd_mod *mod, |
| return ret; |
| |
| /* SSI probe might be called many times in MUX multi path */ |
| - ret = rsnd_dma_attach(io, mod, &ssi->dma); |
| + ret = rsnd_dma_attach(io, mod, &io->dma); |
| |
| return ret; |
| } |
| -- |
| 2.20.1 |
| |