mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
ASoC: rsnd: Fix parent SSI start/stop in multi-SSI mode
[ Upstream commita09fb3f28a] The parent SSI of a multi-SSI setup must be fully setup, started and stopped since it is also part of the playback/capture setup. So only skip the SSI (as per commit203cdf51f2("ASoC: rsnd: SSI parent cares SWSP bit") and commit597b046f0d("ASoC: rsnd: control SSICR::EN correctly")) if the SSI is parent outside of a multi-SSI setup. Signed-off-by: Matthias Blankertz <matthias.blankertz@cetitec.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/20200415141017.384017-2-matthias.blankertz@cetitec.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
d1e3253055
commit
c1bc2cbad5
@@ -375,7 +375,7 @@ static void rsnd_ssi_config_init(struct rsnd_mod *mod,
|
||||
* We shouldn't exchange SWSP after running.
|
||||
* This means, parent needs to care it.
|
||||
*/
|
||||
if (rsnd_ssi_is_parent(mod, io))
|
||||
if (rsnd_ssi_is_parent(mod, io) && !rsnd_ssi_multi_slaves(io))
|
||||
goto init_end;
|
||||
|
||||
if (rsnd_io_is_play(io))
|
||||
@@ -531,7 +531,7 @@ static int rsnd_ssi_start(struct rsnd_mod *mod,
|
||||
* EN is for data output.
|
||||
* SSI parent EN is not needed.
|
||||
*/
|
||||
if (rsnd_ssi_is_parent(mod, io))
|
||||
if (rsnd_ssi_is_parent(mod, io) && !rsnd_ssi_multi_slaves(io))
|
||||
return 0;
|
||||
|
||||
ssi->cr_en = EN;
|
||||
@@ -554,7 +554,7 @@ static int rsnd_ssi_stop(struct rsnd_mod *mod,
|
||||
if (!rsnd_ssi_is_run_mods(mod, io))
|
||||
return 0;
|
||||
|
||||
if (rsnd_ssi_is_parent(mod, io))
|
||||
if (rsnd_ssi_is_parent(mod, io) && !rsnd_ssi_multi_slaves(io))
|
||||
return 0;
|
||||
|
||||
cr = ssi->cr_own |
|
||||
@@ -592,7 +592,7 @@ static int rsnd_ssi_irq(struct rsnd_mod *mod,
|
||||
if (rsnd_is_gen1(priv))
|
||||
return 0;
|
||||
|
||||
if (rsnd_ssi_is_parent(mod, io))
|
||||
if (rsnd_ssi_is_parent(mod, io) && !rsnd_ssi_multi_slaves(io))
|
||||
return 0;
|
||||
|
||||
if (!rsnd_ssi_is_run_mods(mod, io))
|
||||
|
||||
Reference in New Issue
Block a user