[alsa-devel] [PATCH 6/6] ASoC: soc-core: add snd_soc_stream_stop()
Kuninori Morimoto
kuninori.morimoto.gx at renesas.com
Tue Dec 17 05:41:09 CET 2019
Hi
> > > +void snd_soc_stream_stop(struct snd_soc_pcm_runtime *rtd, int stream)
> > > +{
> > > + if (stream == SNDRV_PCM_STREAM_PLAYBACK) {
> > > + if (snd_soc_runtime_ignore_pmdown_time(rtd)) {
> > > + /* powered down playback stream now */
> > > + snd_soc_dapm_stream_event(rtd,
> > > + SNDRV_PCM_STREAM_PLAYBACK,
> > > + SND_SOC_DAPM_STREAM_STOP);
> > > + } else {
> > > + /* start delayed pop wq here for playback streams */
> > > + rtd->pop_wait = 1;
> > > + queue_delayed_work(system_power_efficient_wq,
> > > + &rtd->delayed_work,
> > > + msecs_to_jiffies(rtd->pmdown_time));
> > > + }
> > > + } else {
> > > + /* capture streams can be powered down now */
> > > + snd_soc_dapm_stream_event(rtd, SNDRV_PCM_STREAM_CAPTURE,
> > > + SND_SOC_DAPM_STREAM_STOP);
> > > + }
> > > +}
> > > +EXPORT_SYMBOL_GPL(snd_soc_stream_stop);
Hmm...
I noticed that soc_compr_free_fe(), dpcm_fe_dai_shutdown() are directly
calling SND_SOC_DAPM_STREAM_STOP without caring pmdown time / delayed work.
Can we use snd_soc_dapm_stream_stop() for these, too ?
static int dpcm_fe_dai_shutdown(struct snd_pcm_substream *substream)
{
...
/* run the stream event for each BE */
=> dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_STOP);
...
}
static int soc_compr_free_fe(struct snd_compr_stream *cstream)
{
...
=> dpcm_dapm_stream_event(fe, stream, SND_SOC_DAPM_STREAM_STOP);
...
}
Thank you for your help !!
Best regards
---
Kuninori Morimoto
More information about the Alsa-devel
mailing list