ASoC: dont call dapm_sync while reporting jack always

While reporting the jack status snd_soc_jack_report() invokes snd_soc_dapm_sync()
always. This should be required when we have pins associated with jack and
reporting enables or disables these.
So add a check for this case

Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
Vinod Koul 2013-10-21 19:07:34 +05:30 committed by Mark Brown
parent 1dd275b60e
commit 30a765d643

View File

@ -65,6 +65,7 @@ void snd_soc_jack_report(struct snd_soc_jack *jack, int status, int mask)
struct snd_soc_codec *codec; struct snd_soc_codec *codec;
struct snd_soc_dapm_context *dapm; struct snd_soc_dapm_context *dapm;
struct snd_soc_jack_pin *pin; struct snd_soc_jack_pin *pin;
unsigned int sync = 0;
int enable; int enable;
trace_snd_soc_jack_report(jack, mask, status); trace_snd_soc_jack_report(jack, mask, status);
@ -92,12 +93,16 @@ void snd_soc_jack_report(struct snd_soc_jack *jack, int status, int mask)
snd_soc_dapm_enable_pin(dapm, pin->pin); snd_soc_dapm_enable_pin(dapm, pin->pin);
else else
snd_soc_dapm_disable_pin(dapm, pin->pin); snd_soc_dapm_disable_pin(dapm, pin->pin);
/* we need to sync for this case only */
sync = 1;
} }
/* Report before the DAPM sync to help users updating micbias status */ /* Report before the DAPM sync to help users updating micbias status */
blocking_notifier_call_chain(&jack->notifier, jack->status, jack); blocking_notifier_call_chain(&jack->notifier, jack->status, jack);
snd_soc_dapm_sync(dapm); if (sync)
snd_soc_dapm_sync(dapm);
snd_jack_report(jack->jack, jack->status); snd_jack_report(jack->jack, jack->status);