Message ID | 20170731104734.5776-1-cychiang@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Jul 31, 2017 at 06:47:34PM +0800, Cheng-Yi Chiang wrote: > From: "U. Artie Eoff" <ullysses.a.eoff@intel.com> > > Reset the hw_ptr before queuing the restore_stream_context > work to eradicate a nasty white audio noise on resume. Liam, Jie? This on legacy BYT driver.. > > Tested-by: Cheng-Yi Chiang <cychiang@chromium.org> > Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com> > Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org> > --- > sound/soc/intel/baytrail/sst-baytrail-pcm.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/sound/soc/intel/baytrail/sst-baytrail-pcm.c b/sound/soc/intel/baytrail/sst-baytrail-pcm.c > index 4765ad474544..e0db7070cd42 100644 > --- a/sound/soc/intel/baytrail/sst-baytrail-pcm.c > +++ b/sound/soc/intel/baytrail/sst-baytrail-pcm.c > @@ -187,8 +187,10 @@ static int sst_byt_pcm_trigger(struct snd_pcm_substream *substream, int cmd) > sst_byt_stream_start(byt, pcm_data->stream, 0); > break; > case SNDRV_PCM_TRIGGER_RESUME: > - if (pdata->restore_stream == true) > + if (pdata->restore_stream == true) { > + pcm_data->hw_ptr = 0; > schedule_work(&pcm_data->work); > + } > else > sst_byt_stream_resume(byt, pcm_data->stream); > break; > -- > 2.12.2 >
This patch was originally submitted in the context of the ChromiumOS kernel 3.10 for BYT (https://groups.google.com/a/chromium.org/forum/#!topic/chromium-os-reviews/AsoBhfHzQg8). > -----Original Message----- > From: Koul, Vinod > Sent: Monday, July 31, 2017 8:30 PM > To: Cheng-Yi Chiang <cychiang@chromium.org>; Jie, Yang <yang.jie@intel.com> > Cc: linux-kernel@vger.kernel.org; Liam Girdwood <lgirdwood@gmail.com>; Mark Brown <broonie@kernel.org>; Jaroslav Kysela > <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Eoff, Ullysses A <ullysses.a.eoff@intel.com>; alsa-devel@alsa-project.org > Subject: Re: [PATCH v2] ASoC: Intel: Reset hw_ptr on resume trigger > > On Mon, Jul 31, 2017 at 06:47:34PM +0800, Cheng-Yi Chiang wrote: > > From: "U. Artie Eoff" <ullysses.a.eoff@intel.com> > > > > Reset the hw_ptr before queuing the restore_stream_context > > work to eradicate a nasty white audio noise on resume. > > Liam, Jie? This on legacy BYT driver.. > > > > > Tested-by: Cheng-Yi Chiang <cychiang@chromium.org> > > Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com> > > Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org> > > --- > > sound/soc/intel/baytrail/sst-baytrail-pcm.c | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/sound/soc/intel/baytrail/sst-baytrail-pcm.c b/sound/soc/intel/baytrail/sst-baytrail-pcm.c > > index 4765ad474544..e0db7070cd42 100644 > > --- a/sound/soc/intel/baytrail/sst-baytrail-pcm.c > > +++ b/sound/soc/intel/baytrail/sst-baytrail-pcm.c > > @@ -187,8 +187,10 @@ static int sst_byt_pcm_trigger(struct snd_pcm_substream *substream, int cmd) > > sst_byt_stream_start(byt, pcm_data->stream, 0); > > break; > > case SNDRV_PCM_TRIGGER_RESUME: > > - if (pdata->restore_stream == true) > > + if (pdata->restore_stream == true) { > > + pcm_data->hw_ptr = 0; > > schedule_work(&pcm_data->work); > > + } > > else > > sst_byt_stream_resume(byt, pcm_data->stream); > > break; > > -- > > 2.12.2 > > > > -- > ~Vinod
Hi Eoff, thank you for the patch and providing the context. ChromiumOS now uses kernel 4.4 for BYT and I found that kernel 4.4 does not have this patch. We thought this should be useful in upstream. Thanks! On Tue, Aug 1, 2017 at 12:32 PM, Eoff, Ullysses A <ullysses.a.eoff@intel.com > wrote: > This patch was originally submitted in the context of the ChromiumOS > kernel 3.10 for BYT (https://groups.google.com/a/ > chromium.org/forum/#!topic/chromium-os-reviews/AsoBhfHzQg8). > > > > -----Original Message----- > > From: Koul, Vinod > > Sent: Monday, July 31, 2017 8:30 PM > > To: Cheng-Yi Chiang <cychiang@chromium.org>; Jie, Yang < > yang.jie@intel.com> > > Cc: linux-kernel@vger.kernel.org; Liam Girdwood <lgirdwood@gmail.com>; > Mark Brown <broonie@kernel.org>; Jaroslav Kysela > > <perex@perex.cz>; Takashi Iwai <tiwai@suse.com>; Eoff, Ullysses A < > ullysses.a.eoff@intel.com>; alsa-devel@alsa-project.org > > Subject: Re: [PATCH v2] ASoC: Intel: Reset hw_ptr on resume trigger > > > > On Mon, Jul 31, 2017 at 06:47:34PM +0800, Cheng-Yi Chiang wrote: > > > From: "U. Artie Eoff" <ullysses.a.eoff@intel.com> > > > > > > Reset the hw_ptr before queuing the restore_stream_context > > > work to eradicate a nasty white audio noise on resume. > > > > Liam, Jie? This on legacy BYT driver.. > > > > > > > > Tested-by: Cheng-Yi Chiang <cychiang@chromium.org> > > > Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com> > > > Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org> > > > --- > > > sound/soc/intel/baytrail/sst-baytrail-pcm.c | 4 +++- > > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > > > diff --git a/sound/soc/intel/baytrail/sst-baytrail-pcm.c > b/sound/soc/intel/baytrail/sst-baytrail-pcm.c > > > index 4765ad474544..e0db7070cd42 100644 > > > --- a/sound/soc/intel/baytrail/sst-baytrail-pcm.c > > > +++ b/sound/soc/intel/baytrail/sst-baytrail-pcm.c > > > @@ -187,8 +187,10 @@ static int sst_byt_pcm_trigger(struct > snd_pcm_substream *substream, int cmd) > > > sst_byt_stream_start(byt, pcm_data->stream, 0); > > > break; > > > case SNDRV_PCM_TRIGGER_RESUME: > > > - if (pdata->restore_stream == true) > > > + if (pdata->restore_stream == true) { > > > + pcm_data->hw_ptr = 0; > > > schedule_work(&pcm_data->work); > > > + } > > > else > > > sst_byt_stream_resume(byt, pcm_data->stream); > > > break; > > > -- > > > 2.12.2 > > > > > > > -- > > ~Vinod >
On 2017年08月01日 11:30, Vinod Koul wrote: > On Mon, Jul 31, 2017 at 06:47:34PM +0800, Cheng-Yi Chiang wrote: >> From: "U. Artie Eoff" <ullysses.a.eoff@intel.com> >> >> Reset the hw_ptr before queuing the restore_stream_context >> work to eradicate a nasty white audio noise on resume. > > Liam, Jie? This on legacy BYT driver.. > >> >> Tested-by: Cheng-Yi Chiang <cychiang@chromium.org> >> Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com> >> Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org> >> --- >> sound/soc/intel/baytrail/sst-baytrail-pcm.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/sound/soc/intel/baytrail/sst-baytrail-pcm.c b/sound/soc/intel/baytrail/sst-baytrail-pcm.c >> index 4765ad474544..e0db7070cd42 100644 >> --- a/sound/soc/intel/baytrail/sst-baytrail-pcm.c >> +++ b/sound/soc/intel/baytrail/sst-baytrail-pcm.c >> @@ -187,8 +187,10 @@ static int sst_byt_pcm_trigger(struct snd_pcm_substream *substream, int cmd) >> sst_byt_stream_start(byt, pcm_data->stream, 0); >> break; >> case SNDRV_PCM_TRIGGER_RESUME: >> - if (pdata->restore_stream == true) >> + if (pdata->restore_stream == true) { >> + pcm_data->hw_ptr = 0; Won't this break the hw_ptr and make the resuming won't play from the pausing point of the last suspending? Thanks, ~Keyon >> schedule_work(&pcm_data->work); >> + } >> else >> sst_byt_stream_resume(byt, pcm_data->stream); >> break; >> -- >> 2.12.2 >> >
+Jarkko Nikula Hi Keyon, Sorry for the late reply. I spent some time trying to figure out previous suspend resume patch in BYT. From the patch for restore_stream flag: https://patchwork.kernel.org/patch/4706611/, the restore_stream flag means that ADSP was in power off state during system suspend/resume cycle. You are right that the resuming won't play from the pausing point of the last suspending. I am not sure whether it is intended in ADSP coming back from power off case. Jarkko and Ullysses might have better idea on this. In my testing I have found that this patch sometimes causes playback failure upon resume. I have put the logs in https://bugs.chromium.org/p/chromium/issues/detail?id=752107. I think we should not merge this until it is resolved. I have cc'ed Intel folks on the issue. Thanks! On Tue, Aug 1, 2017 at 1:04 PM, Keyon Jie <yang.jie@linux.intel.com> wrote: > > On 2017年08月01日 11:30, Vinod Koul wrote: >> >> On Mon, Jul 31, 2017 at 06:47:34PM +0800, Cheng-Yi Chiang wrote: >>> >>> From: "U. Artie Eoff" <ullysses.a.eoff@intel.com> >>> >>> Reset the hw_ptr before queuing the restore_stream_context >>> work to eradicate a nasty white audio noise on resume. >> >> >> Liam, Jie? This on legacy BYT driver.. >> >>> >>> Tested-by: Cheng-Yi Chiang <cychiang@chromium.org> >>> Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com> >>> Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org> >>> --- >>> sound/soc/intel/baytrail/sst-baytrail-pcm.c | 4 +++- >>> 1 file changed, 3 insertions(+), 1 deletion(-) >>> >>> diff --git a/sound/soc/intel/baytrail/sst-baytrail-pcm.c >>> b/sound/soc/intel/baytrail/sst-baytrail-pcm.c >>> index 4765ad474544..e0db7070cd42 100644 >>> --- a/sound/soc/intel/baytrail/sst-baytrail-pcm.c >>> +++ b/sound/soc/intel/baytrail/sst-baytrail-pcm.c >>> @@ -187,8 +187,10 @@ static int sst_byt_pcm_trigger(struct >>> snd_pcm_substream *substream, int cmd) >>> sst_byt_stream_start(byt, pcm_data->stream, 0); >>> break; >>> case SNDRV_PCM_TRIGGER_RESUME: >>> - if (pdata->restore_stream == true) >>> + if (pdata->restore_stream == true) { >>> + pcm_data->hw_ptr = 0; > > > Won't this break the hw_ptr and make the resuming won't play from the > pausing point of the last suspending? > > Thanks, > ~Keyon > > >>> schedule_work(&pcm_data->work); >>> + } >>> else >>> sst_byt_stream_resume(byt, pcm_data->stream); >>> break; >>> -- >>> 2.12.2 >>> >> >
On 2017年08月03日 21:47, Cheng-yi Chiang wrote: > +Jarkko Nikula > > Hi Keyon, > Sorry for the late reply. I spent some time trying to figure out > previous suspend resume patch in BYT. > > From the patch for restore_stream flag: > https://patchwork.kernel.org/patch/4706611/, the restore_stream flag > means that ADSP was in power off state during system suspend/resume > cycle. You are right that the resuming won't play from the pausing > point of the last suspending. I am not sure whether it is intended in > ADSP coming back from power off case. Jarkko and Ullysses might have > better idea on this. > > In my testing I have found that this patch sometimes causes playback > failure upon resume. I have put the logs in > https://bugs.chromium.org/p/chromium/issues/detail?id=752107. I think > we should not merge this until it is resolved. I have cc'ed Intel > folks on the issue. Thanks for investigation on it, so looks it's better to root cause and fix this noise issue, other than workaround to reset pcm_data->hw_ptr which may introduce new issues. Thanks, ~Keyon > > Thanks! > > On Tue, Aug 1, 2017 at 1:04 PM, Keyon Jie <yang.jie@linux.intel.com> wrote: >> >> On 2017年08月01日 11:30, Vinod Koul wrote: >>> >>> On Mon, Jul 31, 2017 at 06:47:34PM +0800, Cheng-Yi Chiang wrote: >>>> >>>> From: "U. Artie Eoff" <ullysses.a.eoff@intel.com> >>>> >>>> Reset the hw_ptr before queuing the restore_stream_context >>>> work to eradicate a nasty white audio noise on resume. >>> >>> >>> Liam, Jie? This on legacy BYT driver.. >>> >>>> >>>> Tested-by: Cheng-Yi Chiang <cychiang@chromium.org> >>>> Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com> >>>> Signed-off-by: Cheng-Yi Chiang <cychiang@chromium.org> >>>> --- >>>> sound/soc/intel/baytrail/sst-baytrail-pcm.c | 4 +++- >>>> 1 file changed, 3 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/sound/soc/intel/baytrail/sst-baytrail-pcm.c >>>> b/sound/soc/intel/baytrail/sst-baytrail-pcm.c >>>> index 4765ad474544..e0db7070cd42 100644 >>>> --- a/sound/soc/intel/baytrail/sst-baytrail-pcm.c >>>> +++ b/sound/soc/intel/baytrail/sst-baytrail-pcm.c >>>> @@ -187,8 +187,10 @@ static int sst_byt_pcm_trigger(struct >>>> snd_pcm_substream *substream, int cmd) >>>> sst_byt_stream_start(byt, pcm_data->stream, 0); >>>> break; >>>> case SNDRV_PCM_TRIGGER_RESUME: >>>> - if (pdata->restore_stream == true) >>>> + if (pdata->restore_stream == true) { >>>> + pcm_data->hw_ptr = 0; >> >> >> Won't this break the hw_ptr and make the resuming won't play from the >> pausing point of the last suspending? >> >> Thanks, >> ~Keyon >> >> >>>> schedule_work(&pcm_data->work); >>>> + } >>>> else >>>> sst_byt_stream_resume(byt, pcm_data->stream); >>>> break; >>>> -- >>>> 2.12.2 >>>> >>> >> > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@alsa-project.org > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel >
diff --git a/sound/soc/intel/baytrail/sst-baytrail-pcm.c b/sound/soc/intel/baytrail/sst-baytrail-pcm.c index 4765ad474544..e0db7070cd42 100644 --- a/sound/soc/intel/baytrail/sst-baytrail-pcm.c +++ b/sound/soc/intel/baytrail/sst-baytrail-pcm.c @@ -187,8 +187,10 @@ static int sst_byt_pcm_trigger(struct snd_pcm_substream *substream, int cmd) sst_byt_stream_start(byt, pcm_data->stream, 0); break; case SNDRV_PCM_TRIGGER_RESUME: - if (pdata->restore_stream == true) + if (pdata->restore_stream == true) { + pcm_data->hw_ptr = 0; schedule_work(&pcm_data->work); + } else sst_byt_stream_resume(byt, pcm_data->stream); break;