Commit 4f4c0072 authored by Mark Brown's avatar Mark Brown

ASoC: Suppress early calls to snd_soc_dapm_sync()

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: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent a1ff89ef
...@@ -1498,6 +1498,7 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card) ...@@ -1498,6 +1498,7 @@ static void snd_soc_instantiate_card(struct snd_soc_card *card)
#endif #endif
card->instantiated = 1; card->instantiated = 1;
snd_soc_dapm_sync(&card->dapm);
mutex_unlock(&card->mutex); mutex_unlock(&card->mutex);
return; return;
......
...@@ -1845,6 +1845,13 @@ static int snd_soc_dapm_set_pin(struct snd_soc_dapm_context *dapm, ...@@ -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) 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); return dapm_power_widgets(dapm, SND_SOC_DAPM_STREAM_NOP);
} }
EXPORT_SYMBOL_GPL(snd_soc_dapm_sync); EXPORT_SYMBOL_GPL(snd_soc_dapm_sync);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment