lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 20 Oct 2017 02:10:09 +0000
From:   Bard Liao <bardliao@...ltek.com>
To:     Carlo Caione <carlo@...lessm.com>,
        Pierre-Louis Bossart <pierre-louis.bossart@...ux.intel.com>
CC:     Carlo Caione <carlo@...one.org>,
        Linux Upstreaming Team <linux@...lessm.com>,
        Oder Chiou <oder_chiou@...ltek.com>,
        Mark Brown <broonie@...nel.org>,
        "alsa-devel@...a-project.org" <alsa-devel@...a-project.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "tiwai@...e.com" <tiwai@...e.com>,
        "Albert Chen" <albertchen@...ltek.com>,
        Edgar Shen <edgar_shen@...ltek.com>
Subject: RE: [alsa-devel] [PATCH 1/2] ASoC: rt5651: Enable jack detection on JD1_1

> -----Original Message-----
> From: Carlo Caione [mailto:carlo@...lessm.com]
> Sent: Thursday, October 19, 2017 11:55 PM
> To: Pierre-Louis Bossart
> Cc: Carlo Caione; Linux Upstreaming Team; Bard Liao; Oder Chiou; Mark
> Brown; alsa-devel@...a-project.org; linux-kernel@...r.kernel.org;
> tiwai@...e.com; Albert Chen; Edgar Shen
> Subject: Re: [alsa-devel] [PATCH 1/2] ASoC: rt5651: Enable jack detection on
> JD1_1
> 
> On Thu, Oct 19, 2017 at 4:47 PM, Pierre-Louis Bossart
> <pierre-louis.bossart@...ux.intel.com> wrote:
> > On 10/19/17 6:03 AM, Carlo Caione wrote:
> >>
> >> From: Carlo Caione <carlo@...lessm.com>
> >>
> >> Enable jack detection or the RT5651 codec on the JD1_1 pin.
> >
> > Nice, but the codec supports a second jack detection on JD1 and has a
> second
> > JD2 pin. I will bet that some devices will have a different routing and I
> > wonder if we could just add support for all options.
> 
> I can write support for that but I have no hardware to actually test
> it, that's why I left those cases out.
> 
> >> The codec has no means to detect the type of the jack connected so we
> >> assume that the jack is always an headset jack.
> >
> > that's odd, was this confirmed by Realtek?
> 
> The Realtek people are in CC :)
> Probably there is way but in the datasheet there is nothing about that
> (or did I miss it?)

Yes, rt5651 has the capability of jack type detection.
Please see the following code for reference.
+static int rt5651_jack_detect(struct snd_soc_codec *codec, int jack_insert)
+{
+	struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
+	int jack_type;
+
+	if (jack_insert) {
+		snd_soc_dapm_force_enable_pin(dapm, "LDO");
+		snd_soc_dapm_sync(dapm);
+
+		snd_soc_update_bits(codec, RT5651_MICBIAS,
+			RT5651_MIC1_OVCD_MASK | RT5651_MIC1_OVTH_MASK |
+			RT5651_PWR_CLK12M_MASK | RT5651_PWR_MB_MASK,
+			RT5651_MIC1_OVCD_EN | RT5651_MIC1_OVTH_600UA |
+			RT5651_PWR_MB_PU | RT5651_PWR_CLK12M_PU);
+		msleep(100);
+		if (snd_soc_read(codec, RT5651_IRQ_CTRL2) & RT5651_MB1_OC_CLR)
+			jack_type = SND_JACK_HEADPHONE;
+		else
+			jack_type = SND_JACK_HEADSET;
+		snd_soc_update_bits(codec, RT5651_IRQ_CTRL2,
+			RT5651_MB1_OC_CLR, 0);
+	} else { /* jack out */
+		jack_type = 0;
+
+		snd_soc_update_bits(codec, RT5651_MICBIAS,
+			RT5651_MIC1_OVCD_MASK, RT5651_MIC1_OVCD_DIS);
+	}
+
+	return jack_type;
+}

> 
> >> Signed-off-by: Carlo Caione <carlo@...lessm.com>
> >> ---
> >>   include/sound/rt5651.h    |  7 ++++
> >>   sound/soc/codecs/rt5651.c | 91
> >> +++++++++++++++++++++++++++++++++++++++++++++--
> >>   sound/soc/codecs/rt5651.h |  3 ++
> >>   3 files changed, 99 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/include/sound/rt5651.h b/include/sound/rt5651.h
> >> index d35de758dfb5..c563383149c4 100644
> >> --- a/include/sound/rt5651.h
> >> +++ b/include/sound/rt5651.h
> >> @@ -11,11 +11,18 @@
> >>   #ifndef __LINUX_SND_RT5651_H
> >>   #define __LINUX_SND_RT5651_H
> >>   +enum rt5651_jd_src {
> >> +       RT5651_JD_NULL,
> >> +       RT5651_JD1_1,
> >> +};
> >> +
> >>   struct rt5651_platform_data {
> >>         /* IN2 can optionally be differential */
> >>         bool in2_diff;
> >>         bool dmic_en;
> >> +
> >> +       enum rt5651_jd_src jd_src;
> >
> >
> > I don't see code that sets this platform data, is there a quirk or
> > of_property missing in this patchset?
> 
> Yes, it is supposed to be enabled by a quirk. In general (personal
> taste) I prefer to post the quirk enabling code after the base code
> has been ACKed. If you feel like it I can post also the quirk code
> together with the next respin of this patchset.
> 
> Thank you,
> 
> --
> Carlo Caione  |  +39.340.80.30.096  |  Endless
> 
> ------Please consider the environment before printing this e-mail.

Powered by blists - more mailing lists