Pass the snd_dapm_soc_update struct as parameter to dapm_widget_update instead of passing it indirectly as a field of the snd_soc_dapm_context struct. This should make it more obvious were the struct is coming from and make the code easier to comprehend.
Signed-off-by: Lars-Peter Clausen lars@metafoo.de --- include/sound/soc-dapm.h | 2 - sound/soc/soc-dapm.c | 47 ++++++++++++++++++++------------------------- 2 files changed, 21 insertions(+), 28 deletions(-)
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h index d5f1b9a..cd52ad0 100644 --- a/include/sound/soc-dapm.h +++ b/include/sound/soc-dapm.h @@ -498,8 +498,6 @@ struct snd_soc_dapm_context { struct delayed_work delayed_work; unsigned int idle_bias_off:1; /* Use BIAS_OFF instead of STANDBY */
- struct snd_soc_dapm_update *update; - void (*seq_notifier)(struct snd_soc_dapm_context *, enum snd_soc_dapm_type, int);
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 3f2e360..b51882e 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -917,9 +917,8 @@ static void dapm_seq_run(struct snd_soc_dapm_context *dapm, } }
-static void dapm_widget_update(struct snd_soc_dapm_context *dapm) +static void dapm_widget_update(struct snd_soc_dapm_update *update) { - struct snd_soc_dapm_update *update = dapm->update; struct snd_soc_dapm_widget *w; int ret;
@@ -1016,7 +1015,8 @@ static void dapm_post_sequence_async(void *data, async_cookie_t cookie) * o Input pin to Output pin (bypass, sidetone) * o DAC to ADC (loopback). */ -static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event) +static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event, + struct snd_soc_dapm_update *update) { struct snd_soc_card *card = dapm->card; struct snd_soc_dapm_widget *w; @@ -1096,7 +1096,7 @@ static int dapm_power_widgets(struct snd_soc_dapm_context *dapm, int event) /* Power down widgets first; try to avoid amplifying pops. */ dapm_seq_run(dapm, &down_list, event, false);
- dapm_widget_update(dapm); + dapm_widget_update(update);
/* Now power up. */ dapm_seq_run(dapm, &up_list, event, true); @@ -1268,8 +1268,10 @@ void snd_soc_dapm_debugfs_init(struct snd_soc_dapm_context *dapm) /* 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 change, - int mux, struct soc_enum *e) + int mux, struct soc_enum *e, + struct snd_soc_dapm_update *update) { + struct snd_soc_dapm_context *dapm = widget->dapm; struct snd_soc_dapm_path *path; int found = 0;
@@ -1282,7 +1284,7 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget, return 0;
/* find dapm widget path assoc with kcontrol */ - list_for_each_entry(path, &widget->dapm->card->paths, list) { + list_for_each_entry(path, &dapm->card->paths, list) { if (path->kcontrol != kcontrol) continue;
@@ -1298,15 +1300,17 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget, }
if (found) - dapm_power_widgets(widget->dapm, SND_SOC_DAPM_STREAM_NOP); + dapm_power_widgets(dapm, SND_SOC_DAPM_STREAM_NOP, update);
return 0; }
/* test and update the power status of a mixer or switch widget */ static int dapm_mixer_update_power(struct snd_soc_dapm_widget *widget, - struct snd_kcontrol *kcontrol, int connect) + struct snd_kcontrol *kcontrol, int connect, + struct snd_soc_dapm_update *update) { + struct snd_soc_dapm_context *dapm = widget->dapm; struct snd_soc_dapm_path *path; int found = 0;
@@ -1316,7 +1320,7 @@ static int dapm_mixer_update_power(struct snd_soc_dapm_widget *widget, return -ENODEV;
/* find dapm widget path assoc with kcontrol */ - list_for_each_entry(path, &widget->dapm->card->paths, list) { + list_for_each_entry(path, &dapm->card->paths, list) { if (path->kcontrol != kcontrol) continue;
@@ -1327,7 +1331,7 @@ static int dapm_mixer_update_power(struct snd_soc_dapm_widget *widget, }
if (found) - dapm_power_widgets(widget->dapm, SND_SOC_DAPM_STREAM_NOP); + dapm_power_widgets(dapm, SND_SOC_DAPM_STREAM_NOP, update);
return 0; } @@ -1485,7 +1489,7 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm, */ int snd_soc_dapm_sync(struct snd_soc_dapm_context *dapm) { - return dapm_power_widgets(dapm, SND_SOC_DAPM_STREAM_NOP); + return dapm_power_widgets(dapm, SND_SOC_DAPM_STREAM_NOP, NULL); } EXPORT_SYMBOL_GPL(snd_soc_dapm_sync);
@@ -1737,7 +1741,7 @@ int snd_soc_dapm_new_widgets(struct snd_soc_dapm_context *dapm) w->new = 1; }
- dapm_power_widgets(dapm, SND_SOC_DAPM_STREAM_NOP); + dapm_power_widgets(dapm, SND_SOC_DAPM_STREAM_NOP, NULL); return 0; } EXPORT_SYMBOL_GPL(snd_soc_dapm_new_widgets); @@ -1829,11 +1833,8 @@ int snd_soc_dapm_put_volsw(struct snd_kcontrol *kcontrol, update.reg = reg; update.mask = mask; update.val = val; - widget->dapm->update = &update;
- dapm_mixer_update_power(widget, kcontrol, connect); - - widget->dapm->update = NULL; + dapm_mixer_update_power(widget, kcontrol, connect, &update); }
mutex_unlock(&widget->codec->mutex); @@ -1910,11 +1911,8 @@ int snd_soc_dapm_put_enum_double(struct snd_kcontrol *kcontrol, update.reg = e->reg; update.mask = mask; update.val = val; - widget->dapm->update = &update; - - dapm_mux_update_power(widget, kcontrol, change, mux, e);
- widget->dapm->update = NULL; + dapm_mux_update_power(widget, kcontrol, change, mux, e, &update);
mutex_unlock(&widget->codec->mutex); return change; @@ -1962,7 +1960,7 @@ int snd_soc_dapm_put_enum_virt(struct snd_kcontrol *kcontrol,
change = widget->value != ucontrol->value.enumerated.item[0]; widget->value = ucontrol->value.enumerated.item[0]; - dapm_mux_update_power(widget, kcontrol, change, widget->value, e); + dapm_mux_update_power(widget, kcontrol, change, widget->value, e, NULL);
mutex_unlock(&widget->codec->mutex); return ret; @@ -2052,11 +2050,8 @@ int snd_soc_dapm_put_value_enum_double(struct snd_kcontrol *kcontrol, update.reg = e->reg; update.mask = mask; update.val = val; - widget->dapm->update = &update; - - dapm_mux_update_power(widget, kcontrol, change, mux, e);
- widget->dapm->update = NULL; + dapm_mux_update_power(widget, kcontrol, change, mux, e, &update);
mutex_unlock(&widget->codec->mutex); return change; @@ -2237,7 +2232,7 @@ static void soc_dapm_stream_event(struct snd_soc_dapm_context *dapm, } }
- dapm_power_widgets(dapm, event); + dapm_power_widgets(dapm, event, NULL); }
/**