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)
committerMark Brown <broonie@linaro.org>
Tue, 4 Mar 2014 04:13:49 +0000 (12:13 +0800)
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>
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