[alsa-devel] [PATCH v3] ASoC: rt286: fix headphone click/crack noise on Dell XPS 9343 I2S mode

Bard Liao bardliao at realtek.com
Tue Mar 21 09:59:27 CET 2017


> -----Original Message-----
> From: Kai-Heng Feng [mailto:kai.heng.feng at canonical.com]
> Sent: Tuesday, March 21, 2017 1:39 PM
> To: Bard Liao
> Cc: broonie at kernel.org; lgirdwood at gmail.com; Oder Chiou;
> alsa-devel at alsa-project.org; linux-kernel at vger.kernel.org
> Subject: Re: [PATCH v3] ASoC: rt286: fix headphone click/crack noise on Dell
> XPS 9343 I2S mode
> >>
> >> +     switch (event) {
> >> +     case SND_SOC_DAPM_PRE_PMD:
> >> +     case SND_SOC_DAPM_POST_PMD:
> >> +     case SND_SOC_DAPM_POST_PMU:
> >> +             snd_soc_write(codec, RT286_SET_AMP_GAIN_HPO,
> >> AMP_OUT_MUTE);
> >> +             break;
> >> +     case SND_SOC_DAPM_PRE_PMU:
> >> +             snd_soc_write(codec, RT286_SET_AMP_GAIN_HPO,
> >> AMP_OUT_UNMUTE);
> >> +             break;
> >
> > Besides Mark's comment, I have question here. It seems you want to mute
> > HPO before "HP Power" is powered up and after "HP Power" is powered
> down.
> > But "HPO L" and "HPO R" are autodisable. And "HP Power" is only connect to
> 
> What I really want to do is something rt5670's rt5670_hp_event(),
> maybe autodisable is not enough sometimes?

It is different. rt5670_hp_event() is doing depop sequence for
headphone. And there is no other mute/unmute controls on other
dapm widgets. For me, what you do here is not different from
"HPO L" and "HPO R" do.

> 
> > "HPO L" and "HPO R". From my understanding, HPO will mute if "HP Power"
> > is powered down. Any specific reason for muting HPO again before "HP
> Power"
> > is powered up?
> 
> You are right. Either one of them should be sufficient.

My point is that you seem to do things that driver is already done.
But why and how it can reduce the click noise?

> 
> > Will HPO be unmuted before "HP Power" is powered up on your system?
> 
> Yes.
> I am no audio expert here - but from what I read from HDA, there's
> actually no AMP unmute counterpart to AMP mute.

I didn't get it. How did you check if HPO is muted?

> 
> > Or should the event be associated with "LDO1"?  Which power will
> > cause the click noise?
> 
> I found that the effect is most noticeable if the mute callback is
> associated with "LDO2" and "HP Power".
> But again, this is just what I observed.

Could you try only associated with "LDO2"?
It makes sense that will reduce the noise if a jack is plugged in/out
when HPO is already powered up.

I have question about the code below
+		/* Fix headphone click noise */
+		if (dmi_check_system(dmi_dell_dino))
+			regmap_write(rt286->regmap,
+					RT286_MIC1_DET_CTRL, 0x0020);
+

What does this for? How did you get the value 0x0020?
I just checked with Kailang, but he have no idea about that.

> 
> >
> >
> 
> ------Please consider the environment before printing this e-mail.


More information about the Alsa-devel mailing list