Hi Luke, Could you describe this issue for how to solve?
BR, Kailang > -----Original Message----- > From: Kailang > Sent: Friday, August 29, 2014 4:30 PM > To: 'Takashi Iwai'; Hui Wang > Cc: alsa-de...@alsa-project.org; stable@vger.kernel.org > Subject: RE: [PATCH] ALSA: hda - Add a de-pop quirk for some > HP machines > > > > > -----Original Message----- > > From: Takashi Iwai [mailto:ti...@suse.de] > > Sent: Friday, August 29, 2014 4:03 PM > > To: Hui Wang > > Cc: alsa-de...@alsa-project.org; Kailang; stable@vger.kernel.org > > Subject: Re: [PATCH] ALSA: hda - Add a de-pop quirk for some HP > > machines > > > > At Fri, 29 Aug 2014 15:47:05 +0800, > > Hui Wang wrote: > > > > > > On some HP machines, there will be pop noise when the machine is > > > shutting down, rebooting or booting up from poweroff state. > > > > > > Set EAPD enable only when stream starts can help to fix > > this problem. > > > > > > [The patch was originally written by Kailang, we tested it > > and rebased > > > it on latest kernel.] > > > > > > Signed-off-by: Kailang Yang <kail...@realtek.com> > > > Signed-off-by: Hui Wang <hui.w...@canonical.com> > > > --- > > > sound/pci/hda/patch_realtek.c | 55 > > > ++++++++++++++++++++++++++++++++++++++++--- > > > 1 file changed, 52 insertions(+), 3 deletions(-) > > > > > > diff --git a/sound/pci/hda/patch_realtek.c > > > b/sound/pci/hda/patch_realtek.c index 48d6d10..51811a6 100644 > > > --- a/sound/pci/hda/patch_realtek.c > > > +++ b/sound/pci/hda/patch_realtek.c > > > @@ -4282,6 +4282,47 @@ static void > > alc290_fixup_mono_speakers(struct hda_codec *codec, > > > } > > > } > > > > > > +/* > > > + * ALC290 PCM hooks > > > + */ > > > +static void alc290_playback_pcm_hook(struct > hda_pcm_stream *hinfo, > > > + struct hda_codec *codec, > > > + struct snd_pcm_substream > > *substream, > > > + int action) > > > +{ > > > + int val; > > > + > > > + switch (action) { > > > + case HDA_GEN_PCM_ACT_OPEN: > > > + val = alc_read_coef_idx(codec, 0x4); /* EAPD > > manual high */ > > > + if ((val & 0xc000) != 0xc000) > > > + alc_write_coef_idx(codec, 0x4, val | (1<<14)); > > > + break; > > > + } > > > +} > > > + > > > +static void alc290_fixup_pop_noise(struct hda_codec *codec, > > > + const struct hda_fixup *fix, > > int action) { > > > + struct alc_spec *spec = codec->spec; > > > + int val; > > > + > > > + switch (action) { > > > + case HDA_FIXUP_ACT_PRE_PROBE: > > > + snd_hda_codec_write(codec, 0x17, 0, > > > + > > AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); > > > > Why do you need this... > > This is reauest by HP. They say Keep this to output will > lower pop noise from woofer speaker. > > > > > > + val = alc_read_coef_idx(codec, 0x4); > > > + if ((val & 0xc000) != 0xc000) > > > + alc_write_coef_idx(codec, 0x4, val | > > (3<<14)); /* EAPD low */ > > > + spec->gen.pcm_playback_hook = alc290_playback_pcm_hook; > > > + break; > > > + case HDA_FIXUP_ACT_INIT: > > > + snd_hda_codec_write(codec, 0x17, 0, > > > + > > AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT); > > > > ... and this? There is no explanation about this change. > > > > Also, can't you just set EAPD low in the shutdown callback instead? > > > > In your patch, if the machine goes shutdown/reboot while playing a > > stream (or before runtime PM), it's still EAPD high, so the noise > > should be heard, if I understand correctly. > > > > EAPD keep high, no change state will no pop noise. EC will > control the delay for 30s to do AMP pin to high. > When it enter to S3, EAPD will go low. Resume back, the eapd > will go high. It will show pop noise. > This is not have method to improve for this hardware issue in > this state. > > > > > Takashi > > > > ------Please consider the environment before printing this e-mail. > >