ALSA Compress API - system suspend/resume

Vinod Koul vkoul at kernel.org
Tue Oct 4 15:30:57 CEST 2022


On 04-10-22, 13:58, Takashi Iwai wrote:
> On Tue, 04 Oct 2022 13:18:15 +0200,
> Daniel Baluta wrote:
> > 
> > On Tue, Oct 4, 2022 at 12:46 PM Pierre-Louis Bossart
> > <pierre-louis.bossart at linux.intel.com> wrote:
> > >
> > > On 10/4/22 11:07 AM, Daniel Baluta wrote:
> > > > Hello all,
> > > >
> > > > It looks like system suspend is not implemented for Compress streams.
> > > >
> > > > Any story behind this? Were there any attempts on implementing this?
> > >
> > > It depends on the definition of 'system suspend'.
> > >
> > > What we had in mind back in the early 2010s was to allow for 'active
> > > suspend' aka S0ix or low-power playback. That was the main reason for
> > > introducing the API.
> > >
> > > For suspend to S3/D3, the plan was to just completely stop any
> > > playback/capture and restart on resume. I am not sure if this was ever
> > > implemented, that may be a miss.
> > 
> > I see. Yes, we are looking at S3/D3 suspend and this doesn't look to
> > be implemented.
> > 
> > >
> > > There is a corner case we may have overlooked. I am not sure what
> > > happens if the S3/D3 suspend while playing. This is supported with e.g.
> > > aplay but for the compressed case it's a bit more complicated. Not all
> > > formats support rendering for a random position.
> > 
> > True. We want to implement the same behavior as for aplay. Stop
> > any playback/capture and restart on resume.

There has been discussion in the past for this and as Pierre commented
above it is really hard to resume a compressed stream. There is a big
DSP dependency here..

> For PCM, basically the ALSA core doesn't fully "resume" unless the
> driver explicitly implements it.  It merely stops (drops) the stream,
> sets the stream state to SNDRV_PCM_STATE_SUSPENDED, and lest the
> user-space re-prepare and restart.  Each driver is supposed to call
> snd_pcm_suspend*() in the suspend callback, and basically that's all.
> 
> I guess the same mechanism should be implemented for the compress
> stream, too.

Agree, based on DSP support a driver can opt in. Userspace should send
the data as expected after resume. I dont think we can ever continue but
it should be possible to restore at next frame or previous frame ...

-- 
~Vinod


More information about the Alsa-devel mailing list