mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
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:
parent
1dd275b60e
commit
30a765d643
@ -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);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user