Message ID | s5hy4jr8ltm.wl-tiwai@suse.de (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Takashi Iwai |
Headers | show |
On Wed, 10 Jun 2015 20:23:01 +0200 Takashi Iwai wrote: > From: Takashi Iwai <tiwai@suse.de> > Subject: [PATCH] ALSA: hda - Reduce click noise at power up > > Some machines suffer from click noises at power up with the recent > kernels, and this seems triggered at the power transition and the > immediate verb executions. As a workaround, put a short delay (10ms) > right after the D0 transition. > > There are a few places that have the same kind of delays, especially > in the resume path. I guess they can be removed (or reduced) after > this patch. But, since the delay is relatively small, let's do it > later as a cleanup. > > Reported-by: Mihai Don?u <mihai.dontu@gmail.com> > Signed-off-by: Takashi Iwai <tiwai@suse.de> > --- > sound/pci/hda/hda_codec.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c > index b7782212dd64..38f5509ee52f 100644 > --- a/sound/pci/hda/hda_codec.c > +++ b/sound/pci/hda/hda_codec.c > @@ -3077,6 +3077,9 @@ static unsigned int hda_set_power_state(struct hda_codec *codec, > break; > } > > + if (power_state == AC_PWRST_D0) > + msleep(10); > + > return state; > } > I take back my previous observations. I was at work and did not have access to headphones (one of those days). Now I'm at home, it's 1 AM, very quiet, and I notice the following: * on speakers: the click reproduces but with _very_ low amplitude; msleep(100) is unnoticeable, but msleep(10) is, barely; * on headphones: the moment I plug them I hear a loud static sound (like an old, untuned AM radio). If I play something, the static disappears. If I pause, the static returns after ~15s.
At Thu, 11 Jun 2015 01:12:36 +0300, Mihai Don?u wrote: > > On Wed, 10 Jun 2015 20:23:01 +0200 Takashi Iwai wrote: > > From: Takashi Iwai <tiwai@suse.de> > > Subject: [PATCH] ALSA: hda - Reduce click noise at power up > > > > Some machines suffer from click noises at power up with the recent > > kernels, and this seems triggered at the power transition and the > > immediate verb executions. As a workaround, put a short delay (10ms) > > right after the D0 transition. > > > > There are a few places that have the same kind of delays, especially > > in the resume path. I guess they can be removed (or reduced) after > > this patch. But, since the delay is relatively small, let's do it > > later as a cleanup. > > > > Reported-by: Mihai Don?u <mihai.dontu@gmail.com> > > Signed-off-by: Takashi Iwai <tiwai@suse.de> > > --- > > sound/pci/hda/hda_codec.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c > > index b7782212dd64..38f5509ee52f 100644 > > --- a/sound/pci/hda/hda_codec.c > > +++ b/sound/pci/hda/hda_codec.c > > @@ -3077,6 +3077,9 @@ static unsigned int hda_set_power_state(struct hda_codec *codec, > > break; > > } > > > > + if (power_state == AC_PWRST_D0) > > + msleep(10); > > + > > return state; > > } > > > > I take back my previous observations. I was at work and did not have > access to headphones (one of those days). Now I'm at home, it's 1 AM, > very quiet, and I notice the following: > > * on speakers: the click reproduces but with _very_ low amplitude; > msleep(100) is unnoticeable, but msleep(10) is, barely; > * on headphones: the moment I plug them I hear a loud static sound > (like an old, untuned AM radio). If I play something, the static > disappears. If I pause, the static returns after ~15s. OK, then the patch is no-go. We need a bit deeper analysis. About the headphone problem: don't you get the same issue with 4.0.x? Please take alsa-info.sh outputs on both 4.0.x and 4.1 before and after plugging the headphone, and attach the outputs. (Run the script with --no-upload option.) thanks, Takashi
On Thu, 11 Jun 2015 07:01:13 +0200 Takashi Iwai wrote: > At Thu, 11 Jun 2015 01:12:36 +0300, Mihai Don?u wrote: > > On Wed, 10 Jun 2015 20:23:01 +0200 Takashi Iwai wrote: > > > From: Takashi Iwai <tiwai@suse.de> > > > Subject: [PATCH] ALSA: hda - Reduce click noise at power up > > > > > > Some machines suffer from click noises at power up with the recent > > > kernels, and this seems triggered at the power transition and the > > > immediate verb executions. As a workaround, put a short delay (10ms) > > > right after the D0 transition. > > > > > > There are a few places that have the same kind of delays, especially > > > in the resume path. I guess they can be removed (or reduced) after > > > this patch. But, since the delay is relatively small, let's do it > > > later as a cleanup. > > > > > > Reported-by: Mihai Don?u <mihai.dontu@gmail.com> > > > Signed-off-by: Takashi Iwai <tiwai@suse.de> > > > --- > > > sound/pci/hda/hda_codec.c | 3 +++ > > > 1 file changed, 3 insertions(+) > > > > > > diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c > > > index b7782212dd64..38f5509ee52f 100644 > > > --- a/sound/pci/hda/hda_codec.c > > > +++ b/sound/pci/hda/hda_codec.c > > > @@ -3077,6 +3077,9 @@ static unsigned int hda_set_power_state(struct hda_codec *codec, > > > break; > > > } > > > > > > + if (power_state == AC_PWRST_D0) > > > + msleep(10); > > > + > > > return state; > > > } > > > > > > > I take back my previous observations. I was at work and did not have > > access to headphones (one of those days). Now I'm at home, it's 1 AM, > > very quiet, and I notice the following: > > > > * on speakers: the click reproduces but with _very_ low amplitude; > > msleep(100) is unnoticeable, but msleep(10) is, barely; > > * on headphones: the moment I plug them I hear a loud static sound > > (like an old, untuned AM radio). If I play something, the static > > disappears. If I pause, the static returns after ~15s. > > OK, then the patch is no-go. We need a bit deeper analysis. > > About the headphone problem: don't you get the same issue with 4.0.x? > Please take alsa-info.sh outputs on both 4.0.x and 4.1 before and > after plugging the headphone, and attach the outputs. > (Run the script with --no-upload option.) No, 4.0.5 and all previous kernels (>= 3.12) are OK. I have attached a small tarball with the two files produced by alsa-info.sh. Thanks,
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index b7782212dd64..38f5509ee52f 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c @@ -3077,6 +3077,9 @@ static unsigned int hda_set_power_state(struct hda_codec *codec, break; } + if (power_state == AC_PWRST_D0) + msleep(10); + return state; }