[alsa-devel] [PATCH 5/8] ASoC: rsnd: use function pointer for each probe
Kuninori Morimoto
kuninori.morimoto.gx at gmail.com
Mon Mar 3 08:43:18 CET 2014
From: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
R-Car sound consists of many devices.
It will have more device support in the future.
Thus, for each probe become now function pointer array.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx at renesas.com>
---
sound/soc/sh/rcar/core.c | 34 ++++++++++++++--------------------
1 file changed, 14 insertions(+), 20 deletions(-)
diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
index 416b078..ea747614 100644
--- a/sound/soc/sh/rcar/core.c
+++ b/sound/soc/sh/rcar/core.c
@@ -814,7 +814,15 @@ static int rsnd_probe(struct platform_device *pdev)
struct rcar_snd_info *info;
struct rsnd_priv *priv;
struct device *dev = &pdev->dev;
- int ret;
+ int (*probe_func[])(struct platform_device *pdev,
+ struct rsnd_priv *priv) = {
+ rsnd_gen_probe,
+ rsnd_ssi_probe,
+ rsnd_scu_probe,
+ rsnd_adg_probe,
+ rsnd_dai_probe,
+ };
+ int ret, i;
info = pdev->dev.platform_data;
if (!info) {
@@ -838,25 +846,11 @@ static int rsnd_probe(struct platform_device *pdev)
/*
* init each module
*/
- ret = rsnd_gen_probe(pdev, priv);
- if (ret)
- return ret;
-
- ret = rsnd_ssi_probe(pdev, priv);
- if (ret)
- return ret;
-
- ret = rsnd_scu_probe(pdev, priv);
- if (ret)
- return ret;
-
- ret = rsnd_adg_probe(pdev, priv);
- if (ret)
- return ret;
-
- ret = rsnd_dai_probe(pdev, priv);
- if (ret)
- return ret;
+ for (i = 0; i < ARRAY_SIZE(probe_func); i++) {
+ ret = probe_func[i](pdev, priv);
+ if (ret)
+ return ret;
+ }
/*
* asoc register
--
1.7.9.5
More information about the Alsa-devel
mailing list