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 <kailang@xxxxxxxxxxx> > Signed-off-by: Hui Wang <hui.wang@xxxxxxxxxxxxx> > --- > 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... > + 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. Takashi -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html