ASoC: dapm: Break out of widget search when source and sink are located
authorCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Thu, 7 May 2015 10:33:58 +0000 (11:33 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 11 May 2015 14:12:42 +0000 (15:12 +0100)
Currently snd_soc_dapm_add_route will continue to search the widget list
even after both the source and sink for the route have been located.
This patch breaks out of the search when both are located giving a
small improvement in probe time for drivers.

Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-dapm.c

index 7654161..6374852 100644 (file)
@@ -2617,14 +2617,20 @@ static int snd_soc_dapm_add_route(struct snd_soc_dapm_context *dapm,
        list_for_each_entry(w, &dapm->card->widgets, list) {
                if (!wsink && !(strcmp(w->name, sink))) {
                        wtsink = w;
-                       if (w->dapm == dapm)
+                       if (w->dapm == dapm) {
                                wsink = w;
+                               if (wsource)
+                                       break;
+                       }
                        continue;
                }
                if (!wsource && !(strcmp(w->name, source))) {
                        wtsource = w;
-                       if (w->dapm == dapm)
+                       if (w->dapm == dapm) {
                                wsource = w;
+                               if (wsink)
+                                       break;
+                       }
                }
        }
        /* use widget from another DAPM context if not found from this */