static void dapm_widget_update(struct snd_soc_dapm_context *dapm)
 {
-       struct snd_soc_dapm_update *update = dapm->update;
+       struct snd_soc_dapm_update *update = dapm->card->update;
        struct snd_soc_dapm_widget_list *wlist;
        struct snd_soc_dapm_widget *w = NULL;
        unsigned int wi;
        int ret;
 
        mutex_lock_nested(&card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME);
-       dapm->update = update;
+       card->update = update;
        ret = soc_dapm_mux_update_power(dapm, kcontrol, mux, e);
-       dapm->update = NULL;
+       card->update = NULL;
        mutex_unlock(&card->dapm_mutex);
        if (ret > 0)
                soc_dpcm_runtime_update(card);
        int ret;
 
        mutex_lock_nested(&card->dapm_mutex, SND_SOC_DAPM_CLASS_RUNTIME);
-       dapm->update = update;
+       card->update = update;
        ret = soc_dapm_mixer_update_power(dapm, kcontrol, connect);
-       dapm->update = NULL;
+       card->update = NULL;
        mutex_unlock(&card->dapm_mutex);
        if (ret > 0)
                soc_dpcm_runtime_update(card);
                update.mask = mask;
                update.val = val;
 
-               widget->dapm->update = &update;
+               card->update = &update;
 
                soc_dapm_mixer_update_power(widget->dapm, kcontrol, connect);
 
-               widget->dapm->update = NULL;
+               card->update = NULL;
        }
 
        mutex_unlock(&card->dapm_mutex);
                update.reg = e->reg;
                update.mask = mask;
                update.val = val;
-               widget->dapm->update = &update;
+               card->update = &update;
 
                soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e);
 
-               widget->dapm->update = NULL;
+               card->update = NULL;
        }
 
        mutex_unlock(&card->dapm_mutex);
                update.reg = e->reg;
                update.mask = mask;
                update.val = val;
-               widget->dapm->update = &update;
+               card->update = &update;
 
                soc_dapm_mux_update_power(widget->dapm, kcontrol, mux, e);
 
-               widget->dapm->update = NULL;
+               card->update = NULL;
        }
 
        mutex_unlock(&card->dapm_mutex);