diff mbox

[12/19] ASoC: rsnd: use function pointer for each probe

Message ID 87vbw37m53.wl%kuninori.morimoto.gx@gmail.com (mailing list archive)
State Accepted
Commit d1ac970f5de94bef9e094b46f016899d04e8178b
Headers show

Commit Message

Kuninori Morimoto Feb. 25, 2014, 6:16 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@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@renesas.com>
---
 sound/soc/sh/rcar/core.c |   34 ++++++++++++++--------------------
 1 file changed, 14 insertions(+), 20 deletions(-)
diff mbox

Patch

diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c
index 50047b3..3933ec4 100644
--- a/sound/soc/sh/rcar/core.c
+++ b/sound/soc/sh/rcar/core.c
@@ -831,7 +831,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) {
@@ -855,25 +863,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