ASoC: rsnd: use function pointer for each probe
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Mon, 3 Mar 2014 07:43:18 +0000 (23:43 -0800)
committerSimon Horman <horms@verge.net.au>
Fri, 5 Dec 2014 00:21:17 +0000 (09:21 +0900)
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>
Signed-off-by: Mark Brown <broonie@linaro.org>
(cherry picked from commit d1ac970f5de94bef9e094b46f016899d04e8178b)
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
sound/soc/sh/rcar/core.c

index 416b078..ea74761 100644 (file)
@@ -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