|
@@ -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_dapm_context *dapm;
|
|
|
struct snd_soc_jack_pin *pin;
|
|
|
+ unsigned int sync = 0;
|
|
|
int enable;
|
|
|
|
|
|
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);
|
|
|
else
|
|
|
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 */
|
|
|
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);
|
|
|
|