Commit 54cb6221 authored by Matthias Blankertz's avatar Matthias Blankertz Committed by Mark Brown

ASoC: rsnd: Fix "status check failed" spam for multi-SSI

Fix the rsnd_ssi_stop function to skip disabling the individual SSIs of
a multi-SSI setup, as the actual stop is performed by rsnd_ssiu_stop_gen2
- the same logic as in rsnd_ssi_start. The attempt to disable these SSIs
was harmless, but caused a "status check failed" message to be printed
for every SSI in the multi-SSI setup.
The disabling of interrupts is still performed, as they are enabled for
all SSIs in rsnd_ssi_init, but care is taken to not accidentally set the
EN bit for an SSI where it was not set by rsnd_ssi_start.
Signed-off-by: default avatarMatthias Blankertz <matthias.blankertz@cetitec.com>
Acked-by: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/20200417153017.1744454-3-matthias.blankertz@cetitec.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 0c258657
...@@ -594,10 +594,16 @@ static int rsnd_ssi_stop(struct rsnd_mod *mod, ...@@ -594,10 +594,16 @@ static int rsnd_ssi_stop(struct rsnd_mod *mod,
* Capture: It might not receave data. Do nothing * Capture: It might not receave data. Do nothing
*/ */
if (rsnd_io_is_play(io)) { if (rsnd_io_is_play(io)) {
rsnd_mod_write(mod, SSICR, cr | EN); rsnd_mod_write(mod, SSICR, cr | ssi->cr_en);
rsnd_ssi_status_check(mod, DIRQ); rsnd_ssi_status_check(mod, DIRQ);
} }
/* In multi-SSI mode, stop is performed by setting ssi0129 in
* SSI_CONTROL to 0 (in rsnd_ssio_stop_gen2). Do nothing here.
*/
if (rsnd_ssi_multi_slaves_runtime(io))
return 0;
/* /*
* disable SSI, * disable SSI,
* and, wait idle state * and, wait idle state
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment