summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2014-05-08 17:43:26 -0700
committerStephane Desneux <stephane.desneux@open.eurogiciel.org>2015-02-04 11:15:19 +0100
commit8a6648f193fe17d655b6b547106cc5b15231f2ef (patch)
tree0bd6905be5ca68196aa823b222219f4e9757daeb /sound
parent753c8575b370eba1a179cc1ddc94dfc25ee6ecc8 (diff)
downloadlinux-stable-8a6648f193fe17d655b6b547106cc5b15231f2ef.tar.gz
linux-stable-8a6648f193fe17d655b6b547106cc5b15231f2ef.tar.bz2
linux-stable-8a6648f193fe17d655b6b547106cc5b15231f2ef.zip
ASoC: rsnd: add rsnd_path_parse() macro
Current R-Car sound supports only SRC/SSI, but, other module will be supported. This patch adds rsnd_path_parse() macro to share code Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@linaro.org> (cherry picked from commit 739f9502fdd7c7202123ded842415a0392b7dc40) Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/sh/rcar/core.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
index 74a0d20c5ca5..367f906caa43 100644
--- a/sound/soc/sh/rcar/core.c
+++ b/sound/soc/sh/rcar/core.c
@@ -575,14 +575,27 @@ static const struct snd_soc_dai_ops rsnd_soc_dai_ops = {
.set_fmt = rsnd_soc_dai_set_fmt,
};
+#define rsnd_path_parse(priv, io, type) \
+({ \
+ struct rsnd_mod *mod; \
+ int ret = 0; \
+ int id = -1; \
+ \
+ if (rsnd_is_enable_path(io, type)) { \
+ id = rsnd_info_id(priv, io, type); \
+ if (id >= 0) { \
+ mod = rsnd_##type##_mod_get(priv, id); \
+ ret = rsnd_dai_connect(mod, io); \
+ } \
+ } \
+ ret; \
+})
+
static int rsnd_path_init(struct rsnd_priv *priv,
struct rsnd_dai *rdai,
struct rsnd_dai_stream *io)
{
- struct rsnd_mod *mod;
int ret;
- int ssi_id = -1;
- int src_id = -1;
/*
* Gen1 is created by SRU/SSI, and this SRU is base module of
@@ -594,28 +607,16 @@ static int rsnd_path_init(struct rsnd_priv *priv,
* Gen2 SCU path is very flexible, but, Gen1 SRU (SCU parts) is
* using fixed path.
*/
- if (rsnd_is_enable_path(io, ssi))
- ssi_id = rsnd_info_id(priv, io, ssi);
- if (rsnd_is_enable_path(io, src))
- src_id = rsnd_info_id(priv, io, src);
-
- ret = 0;
/* SRC */
- if (src_id >= 0) {
- mod = rsnd_src_mod_get(priv, src_id);
- ret = rsnd_dai_connect(mod, io);
- if (ret < 0)
- return ret;
- }
+ ret = rsnd_path_parse(priv, io, src);
+ if (ret < 0)
+ return ret;
/* SSI */
- if (ssi_id >= 0) {
- mod = rsnd_ssi_mod_get(priv, ssi_id);
- ret = rsnd_dai_connect(mod, io);
- if (ret < 0)
- return ret;
- }
+ ret = rsnd_path_parse(priv, io, ssi);
+ if (ret < 0)
+ return ret;
return ret;
}