RE: [PATCH] ALSA: hda - Add a de-pop quirk for some HP machines

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 
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-devel@xxxxxxxxxxxxxxxx; stable@xxxxxxxxxxxxxxx
> Subject: RE: [PATCH] ALSA: hda - Add a de-pop quirk for some 
> HP machines
> 
>  
> 
> > -----Original Message-----
> > From: Takashi Iwai [mailto:tiwai@xxxxxxx]
> > Sent: Friday, August 29, 2014 4:03 PM
> > To: Hui Wang
> > Cc: alsa-devel@xxxxxxxxxxxxxxxx; Kailang; stable@xxxxxxxxxxxxxxx
> > 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 <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...
> 
> 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.
> > ?頨{.n?????%??橆??w?{.n??炸血{孎??雰}?笙??j:+v??茶庫全?2??霅??腄冠嗓??z蹂z嫡?+???▏?w噮f





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]