[alsa-devel] [PATCH] ASoC: Suppress early calls to snd_soc_dapm_sync()
Péter Ujfalusi
peter.ujfalusi at ti.com
Fri Oct 7 16:18:19 CEST 2011
On Friday 07 October 2011 14:34:02 Mark Brown wrote:
> Ensure we only have one sync during the initial startup of the card by
> making snd_soc_dapm_sync() a noop on non-instantiated cards. This avoids
> any bounces due to things like jacks reporting their initial state on
> partially initialised cards. The callers that don't also get called at
> runtime should just be removed.
>
> Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
> ---
> sound/soc/soc-core.c | 1 +
> sound/soc/soc-dapm.c | 7 +++++++
> 2 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index 2a25076..b65e3d4 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -1498,6 +1498,7 @@ static void snd_soc_instantiate_card(struct
> snd_soc_card *card) #endif
>
> card->instantiated = 1;
> + snd_soc_dapm_sync(&card->dapm);
Without prior snd_soc_dapm_new_widgets() call we just moved the kernel crash
here.
> mutex_unlock(&card->mutex);
> return;
>
> diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
> index 8711aab..e49c56d 100644
> --- a/sound/soc/soc-dapm.c
> +++ b/sound/soc/soc-dapm.c
> @@ -1845,6 +1845,13 @@ static int snd_soc_dapm_set_pin(struct
> snd_soc_dapm_context *dapm, */
> int snd_soc_dapm_sync(struct snd_soc_dapm_context *dapm)
> {
> + /*
> + * Suppress early reports (eg, jacks syncing their state) to avoid
> + * silly DAPM runs during card startup.
> + */
> + if (!dapm->card || !dapm->card->instantiated)
> + return 0;
> +
> return dapm_power_widgets(dapm, SND_SOC_DAPM_STREAM_NOP);
> }
> EXPORT_SYMBOL_GPL(snd_soc_dapm_sync);
--
Péter
More information about the Alsa-devel
mailing list