Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758734AbdCVFhW (ORCPT ); Wed, 22 Mar 2017 01:37:22 -0400 Received: from mail-yw0-f174.google.com ([209.85.161.174]:33238 "EHLO mail-yw0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758657AbdCVFhQ (ORCPT ); Wed, 22 Mar 2017 01:37:16 -0400 MIME-Version: 1.0 In-Reply-To: References: <20170320035831.10762-1-kai.heng.feng@canonical.com> From: Kai-Heng Feng Date: Wed, 22 Mar 2017 13:37:14 +0800 Message-ID: Subject: Re: [PATCH v3] ASoC: rt286: fix headphone click/crack noise on Dell XPS 9343 I2S mode To: Bard Liao Cc: "broonie@kernel.org" , "lgirdwood@gmail.com" , Oder Chiou , "alsa-devel@alsa-project.org" , "linux-kernel@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3325 Lines: 98 On Tue, Mar 21, 2017 at 4:59 PM, Bard Liao wrote: >> -----Original Message----- >> From: Kai-Heng Feng [mailto:kai.heng.feng@canonical.com] >> Sent: Tuesday, March 21, 2017 1:39 PM >> To: Bard Liao >> Cc: broonie@kernel.org; lgirdwood@gmail.com; Oder Chiou; >> alsa-devel@alsa-project.org; linux-kernel@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. There are two issues - background click noise and the cracking pop noise. Depop is exactly what I want to do here. > >> >> > "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? This is for the crack (pop) noise not click noise - see below. > >> >> > 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? I didn't. Now sure why do we need to check that? > >> >> > 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. Does it also help to reduce noise at other power events? > > 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. It's PIN_VREFHIZ. It's from commit 3e1b0c4a9d56. > >> >> > >> > >> >> ------Please consider the environment before printing this e-mail.