/* test and update the power status of a mux widget */
 static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget,
                                 struct snd_kcontrol *kcontrol, int mask,
-                                int val, struct soc_enum* e)
+                                int mux, int val, struct soc_enum *e)
 {
        struct snd_soc_dapm_path *path;
        int found = 0;
                if (path->kcontrol != kcontrol)
                        continue;
 
-               if (!path->name || ! e->texts[val])
+               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[val])))
+               if (!(strcmp(path->name, e->texts[mux])))
                        path->connect = 1; /* new connection */
                else
                        path->connect = 0; /* old connection must be powered down */
 
        mutex_lock(&widget->codec->mutex);
        widget->value = val;
-       dapm_mux_update_power(widget, kcontrol, mask, mux, e);
+       dapm_mux_update_power(widget, kcontrol, mask, mux, val, e);
        if (widget->event) {
                if (widget->event_flags & SND_SOC_DAPM_PRE_REG) {
                        ret = widget->event(widget,