ASoC: rsnd: tidyup ssi->usrcnt counter check in hw_params
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Wed, 7 Dec 2016 02:05:22 +0000 (02:05 +0000)
committerMark Brown <broonie@kernel.org>
Wed, 7 Dec 2016 15:47:44 +0000 (15:47 +0000)
ssi->usrcnt will be updated on snd_soc_dai_ops::trigger,
but snd_pcm_ops::hw_params will be called *before* it.
Thus, ssi->usrcnt is still 0 when 1st call.
rsnd_ssi_hw_params() needs to check its called count, this means
trigger should be if (ssi->usrcnt) instead of if (ssi->usrcnt > 1).

Reported-by: Nguyen Viet Dung <nv-dung@jinso.co.jp>
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rcar/ssi.c

index e23e07b54d8c505a95373462d81ca3823d3ad7aa..411bda2387adbcdab2dc510706986f5ac92b3cc1 100644 (file)
@@ -417,11 +417,14 @@ static int rsnd_ssi_hw_params(struct rsnd_mod *mod,
        int chan = params_channels(params);
 
        /*
-        * Already working.
-        * It will happen if SSI has parent/child connection.
+        * snd_pcm_ops::hw_params will be called *before*
+        * snd_soc_dai_ops::trigger. Thus, ssi->usrcnt is 0
+        * in 1st call.
         */
-       if (ssi->usrcnt > 1) {
+       if (ssi->usrcnt) {
                /*
+                * Already working.
+                * It will happen if SSI has parent/child connection.
                 * it is error if child <-> parent SSI uses
                 * different channels.
                 */