lkml.org 
[lkml]   [2020]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 12/50] ASoC: rsnd: Fix parent SSI start/stop in multi-SSI mode
    Date
    From: Matthias Blankertz <matthias.blankertz@cetitec.com>

    [ Upstream commit a09fb3f28a60ba3e928a1fa94b0456780800299d ]

    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 commit 203cdf51f288 ("ASoC: rsnd: SSI parent cares
    SWSP bit") and commit 597b046f0d99 ("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>
    ---
    sound/soc/sh/rcar/ssi.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/sound/soc/sh/rcar/ssi.c b/sound/soc/sh/rcar/ssi.c
    index fc5d089868dfc..d51fb3a394486 100644
    --- a/sound/soc/sh/rcar/ssi.c
    +++ b/sound/soc/sh/rcar/ssi.c
    @@ -407,7 +407,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))
    @@ -559,7 +559,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;
    @@ -582,7 +582,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 |
    @@ -620,7 +620,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))
    --
    2.20.1


    \
     
     \ /
      Last update: 2020-05-08 15:00    [W:2.889 / U:0.356 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site