ASoC: rsnd: select each SRC correctly for CMD data path
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Thu, 21 Jan 2016 01:57:37 +0000 (01:57 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 22 Jan 2016 17:12:25 +0000 (17:12 +0000)
To select CMD data patch, it should use correct SRC from each stream
in MUX case. But current code is selecting SRC from fixed stream.
This patch solves this issue.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rcar/cmd.c

index e77e4935b4ea8c165d1a5879e1a3cad2026c2440..4b2d50d9a68617dfe796f006a80d6e8a06b56af8 100644 (file)
@@ -29,7 +29,6 @@ static int rsnd_cmd_init(struct rsnd_mod *mod,
 {
        struct rsnd_mod *dvc = rsnd_io_to_mod_dvc(io);
        struct rsnd_mod *mix = rsnd_io_to_mod_mix(io);
-       struct rsnd_mod *src = rsnd_io_to_mod_src(io);
        struct device *dev = rsnd_priv_to_dev(priv);
        u32 data;
 
@@ -38,6 +37,7 @@ static int rsnd_cmd_init(struct rsnd_mod *mod,
 
        if (mix) {
                struct rsnd_dai *rdai;
+               struct rsnd_mod *src;
                struct rsnd_dai_stream *tio;
                int i;
                u32 path[] = {
@@ -57,15 +57,19 @@ static int rsnd_cmd_init(struct rsnd_mod *mod,
                data = 0;
                for_each_rsnd_dai(rdai, priv, i) {
                        tio = &rdai->playback;
+                       src = rsnd_io_to_mod_src(tio);
                        if (mix == rsnd_io_to_mod_mix(tio))
                                data |= path[rsnd_mod_id(src)];
 
                        tio = &rdai->capture;
+                       src = rsnd_io_to_mod_src(tio);
                        if (mix == rsnd_io_to_mod_mix(tio))
                                data |= path[rsnd_mod_id(src)];
                }
 
        } else {
+               struct rsnd_mod *src = rsnd_io_to_mod_src(io);
+
                u32 path[] = {
                        [0] = 0x30000,
                        [1] = 0x30001,