[alsa-devel] [PATCH RESEND] 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 --- Sorry previous one had some non upstream cruft
sound/soc/soc-jack.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/sound/soc/soc-jack.c b/sound/soc/soc-jack.c index c9f7953..9fd4ed8 100644 --- a/sound/soc/soc-jack.c +++ b/sound/soc/soc-jack.c @@ -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);
On Mon, Oct 21, 2013 at 07:07:34PM +0530, Vinod Koul wrote:
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
Applied, thanks. It'd be good when doing things like this to say what the advantage is; with DAPM the general thing is that it gets called a lot so it should be cheap enough to just call all the time.
On Tue, Oct 22, 2013 at 09:32:23AM +0100, Mark Brown wrote:
On Mon, Oct 21, 2013 at 07:07:34PM +0530, Vinod Koul wrote:
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
Applied, thanks. It'd be good when doing things like this to say what the advantage is; with DAPM the general thing is that it gets called a lot so it should be cheap enough to just call all the time.
Okay, my thoughts were that it was obvious. We saw an issue when monkey testing with jack, bunch of dapm_sync's got triggered (insertion, reroute from usermode, removal, again reroute from usermode, and so on). The insertion and removal ones were quite not required for cases with no pins
On 10/22/2013 8:36 AM, Vinod Koul wrote:
On Tue, Oct 22, 2013 at 09:32:23AM +0100, Mark Brown wrote:
On Mon, Oct 21, 2013 at 07:07:34PM +0530, Vinod Koul wrote:
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
Applied, thanks. It'd be good when doing things like this to say what the advantage is; with DAPM the general thing is that it gets called a lot so it should be cheap enough to just call all the time.
Okay, my thoughts were that it was obvious. We saw an issue when monkey testing with jack, bunch of dapm_sync's got triggered (insertion, reroute from usermode, removal, again reroute from usermode, and so on). The insertion and removal ones were quite not required for cases with no pins
We observed the same thing on our side and create another report API which does not call snd_soc_dapm_sync() :) Thanks for working out a better solution
Thanks Patrick
Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
On Tue, Oct 22, 2013 at 09:06:54PM +0530, Vinod Koul wrote:
On Tue, Oct 22, 2013 at 09:32:23AM +0100, Mark Brown wrote:
Applied, thanks. It'd be good when doing things like this to say what the advantage is; with DAPM the general thing is that it gets called a lot so it should be cheap enough to just call all the time.
Okay, my thoughts were that it was obvious. We saw an issue when monkey testing with jack, bunch of dapm_sync's got triggered (insertion, reroute from usermode, removal, again reroute from usermode, and so on). The insertion and removal ones were quite not required for cases with no pins
It's obvious what it's saving but what's not obvious is what the benefit of those savings is. That's the bit it'd be good to cover.
participants (3)
-
Mark Brown
-
Patrick Lai
-
Vinod Koul