ASoC: dapm: Move snd_soc_dapm_update from dapm context to card
The update field of a DAPM context is only assigned while the card's dapm_mutex
is locked, the field is also cleared again while the mutex is stil locked. So
there will only ever be one DAPM context at a time with a non-NULL update field.
So it is safe to move the update field from the DAPM context struct to the card
struct. Doing so will allow further cleanups in this area.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@linaro.org>
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 366daef..7449e27 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -1425,7 +1425,7 @@
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;
@@ -1959,9 +1959,9 @@
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);
@@ -2002,9 +2002,9 @@
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);
@@ -2693,11 +2693,11 @@
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);
@@ -2775,11 +2775,11 @@
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);
@@ -2928,11 +2928,11 @@
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);