ASoC: dapm: Do not add un-muxed paths to MUX control
authorLars-Peter Clausen <lars@metafoo.de>
Sat, 25 Oct 2014 15:41:57 +0000 (17:41 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 28 Oct 2014 00:19:59 +0000 (00:19 +0000)
Paths that are directly connected to a MUX widget are not affected by
changes to the MUX's control. Rather than checking if a path is directly
connected each time the MUX is updated do it only once when MUX is created.

We can also remove the check for e->texts[mux] != NULL, since if that
condition was true the code would have had already crashed much earlier (And
generally speaking if a enum's 'texts' entry is NULL it's a bug in the
driver).

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-dapm.c

index 116d4436c57597161aef5b844f9c6ee02f2e1fc0..1fed2207b024359aa6d3b51bba25f38d6bf3ca57 100644 (file)
@@ -738,8 +738,10 @@ static int dapm_new_mux(struct snd_soc_dapm_widget *w)
        if (ret < 0)
                return ret;
 
-       list_for_each_entry(path, &w->sources, list_sink)
-               dapm_kcontrol_add_path(w->kcontrols[0], path);
+       list_for_each_entry(path, &w->sources, list_sink) {
+               if (path->name)
+                       dapm_kcontrol_add_path(w->kcontrols[0], path);
+       }
 
        return 0;
 }
@@ -1955,9 +1957,6 @@ static int soc_dapm_mux_update_power(struct snd_soc_card *card,
 
        /* find dapm widget path assoc with kcontrol */
        dapm_kcontrol_for_each_path(path, kcontrol) {
-               if (!path->name || !e->texts[mux])
-                       continue;
-
                found = 1;
                /* we now need to match the string in the enum to the path */
                if (!(strcmp(path->name, e->texts[mux])))