On Wed, Jun 10, 2020 at 10:58:28PM +0530, Vaibhav Agarwal wrote: > @@ -437,11 +433,12 @@ static int gbcodec_mixer_dapm_ctl_put(struct snd_kcontrol *kcontrol, > struct gbaudio_module_info *module; > struct snd_soc_dapm_widget_list *wlist = snd_kcontrol_chip(kcontrol); > struct snd_soc_dapm_widget *widget = wlist->widgets[0]; > - struct snd_soc_codec *codec = widget->codec; > - struct gbaudio_codec_info *gb = snd_soc_codec_get_drvdata(codec); > + struct device *codec_dev = widget->dapm->dev; > + struct gbaudio_codec_info *gb = dev_get_drvdata(codec_dev); > + struct snd_soc_dapm_update *update = NULL; ^^^^^^^^^^^^^ > struct gb_bundle *bundle; > > - dev_dbg(codec->dev, "Entered %s:%s\n", __func__, kcontrol->id.name); > + dev_dbg(codec_dev, "Entered %s:%s\n", __func__, kcontrol->id.name); > module = find_gb_module(gb, kcontrol->id.name); > if (!module) > return -EINVAL; > @@ -458,17 +455,13 @@ static int gbcodec_mixer_dapm_ctl_put(struct snd_kcontrol *kcontrol, > max = le32_to_cpu(info->value.integer.max); > mask = (1 << fls(max)) - 1; > val = ucontrol->value.integer.value[0] & mask; > - connect = !!val; > > /* update ucontrol */ > if (gbvalue.value.integer_value[0] != val) { > for (wi = 0; wi < wlist->num_widgets; wi++) { > widget = wlist->widgets[wi]; > - > - widget->value = val; > - widget->dapm->update = NULL; > - snd_soc_dapm_mixer_update_power(widget, kcontrol, > - connect); > + snd_soc_dapm_mixer_update_power(widget->dapm, kcontrol, > + val, update); ^^^^^^ Always NULL. Just delete the update variable. regards, dan carpenter