[alsa-devel] [PATCH V2] ASoC: soc-pcm: BE dai needs prepare when pause release after resume

Ranjani Sridharan ranjani.sridharan at linux.intel.com
Fri May 10 04:02:38 CEST 2019


> > > 
> > > So in the current scenario what we see is that after resuming
> > > from S3,
> > > a pause-release action from the user results in a FE prepare()
> > > followed by the START trigger (and not a PAUSE-RELEASE trigger).
> > > 
> > > Libin's patch proposes to do a prepare() for the BE even in the
> > > case
> > > of a regular pause-release. But this might not be ideal since
> > > other
> > > drivers might have logic in the prepare() ioctl that might end up
> > > with
> > > errors.
> > 
> > Right.
> > 
> > > So I am thinking maybe we can have some internal logic in the SOF
> > > prepare() callback that will also call the BE prepare() when the
> > > be->dpcm[stream].state is SND_SOC_DPCM_STATE_PAUSED? Would that
> > 
> > make
> > > sense?
> > 
> > Yes, that would work, I guess.  Eventually this might be needed to
> > be
> > addressed in ALSA core side, too, but it's good to have some fix
> > beforehand in
> > DPCM.
> 
> Ranjani, with "regular pause-release", do you mean pause-release
> without S3? The prepare() is called from alsa core (pcm_native.c) in
> S3 case.
> Prepare() being called in pause-release after S3 is because of S3,
> not because
> of pause-release. Actually, if you pause-release without S3 (not sure
> in
> pm-runtime case), ASoC's prepare() will not be called. So 
> dpcm_be_dai_prepare() will not be called. So you assumption of
> "regular pause-release" calling prepare() is wrong.
Oh yes. That's right. Thanks for pointing it out.
In this case, the patch sounds like a good fix. Basically, you're
saying that if the FE prepare() gets called (which happens in the case
of pause-release without INFO_RESUME) it should also call the BE
prepare(), right?

Takashi, what do you think? 

> 
> Please let me describe the flow below:
> 1. Pause-release after S3 without RESUME_INFO
> Prepare() -> trigger start
> 2. pause-release without S3 without/with RESUME_INFO
> Trigger pause-release

> 3. Pause-release after S3 with RESUME_INFO
> Trigger resume
Are you sure about this? A paused stream will not be suspended. So it
would still be trigger PAUSE-RELEASE in this case?

Thanks,
Ranjani




More information about the Alsa-devel mailing list