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:	Thu, 3 Dec 2015 11:15:41 +0000
From:	"Opensource [Adam Thomson]" <Adam.Thomson.Opensource@...semi.com>
To:	Takashi Iwai <tiwai@...e.de>,
	"Opensource [Adam Thomson]" <Adam.Thomson.Opensource@...semi.com>
CC:	Liam Girdwood <lgirdwood@...il.com>,
	Mark Brown <broonie@...nel.org>,
	Jaroslav Kysela <perex@...ex.cz>,
	"alsa-devel@...a-project.org" <alsa-devel@...a-project.org>,
	Support Opensource <Support.Opensource@...semi.com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH] ASoC: da7218: Enable mic level detection reporting to
 user-space

On December 03, 2015 10:56, Takashi Iwai wrote:

> > This patch adds support to the codec driver to handle mic level
> > detect related IRQs, and report these to user-space using a uevent
> > variable.
> 
> Is the uevent the best way for this?
> 
> 
> thanks,
> 
> Takashi

Well originally I was using an input device mechanism to report to user-space,
albeit using KEY_VOICECOMMAND, which Mark mentioned wasn't correct for this
scenario, which was fair enough. He also mentioned that there had been a general
push back on using input devices so that code was dropped. See thread below:

https://lkml.org/lkml/2015/11/10/347

uevent seemed like the simplest solution to report this event, and allow
user-space to act based on it. As mentioned before though, I am open to
suggestions if there's a better way.

> >
> > Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@...semi.com>
> > ---
> >  sound/soc/codecs/da7218.c | 19 ++++++++++++++-----
> >  1 file changed, 14 insertions(+), 5 deletions(-)
> >
> > diff --git a/sound/soc/codecs/da7218.c b/sound/soc/codecs/da7218.c
> > index 4fee7ae..752ed04 100644
> > --- a/sound/soc/codecs/da7218.c
> > +++ b/sound/soc/codecs/da7218.c
> > @@ -2202,6 +2202,16 @@ int da7218_hpldet(struct snd_soc_codec *codec,
> struct snd_soc_jack *jack)
> >  }
> >  EXPORT_SYMBOL_GPL(da7218_hpldet);
> >
> > +static void da7218_micldet_irq(struct snd_soc_codec *codec)
> > +{
> > +	char *envp[] = {
> > +		"EVENT=MIC_LEVEL_DETECT",
> > +		NULL,
> > +	};
> > +
> > +	kobject_uevent_env(&codec->dev->kobj, KOBJ_CHANGE, envp);
> > +}
> > +
> >  static void da7218_hpldet_irq(struct snd_soc_codec *codec)
> >  {
> >  	struct da7218_priv *da7218 = snd_soc_codec_get_drvdata(codec);
> > @@ -2232,6 +2242,10 @@ static irqreturn_t da7218_irq_thread(int irq, void
> *data)
> >  	if (!status)
> >  		return IRQ_NONE;
> >
> > +	/* Mic level detect */
> > +	if (status & DA7218_LVL_DET_EVENT_MASK)
> > +		da7218_micldet_irq(codec);
> > +
> >  	/* HP detect */
> >  	if (status & DA7218_HPLDET_JACK_EVENT_MASK)
> >  		da7218_hpldet_irq(codec);
> > @@ -2936,11 +2950,6 @@ static int da7218_probe(struct snd_soc_codec *codec)
> >  	}
> >
> >  	if (da7218->irq) {
> > -		/* Mask off mic level events, currently not handled */
> > -		snd_soc_update_bits(codec, DA7218_EVENT_MASK,
> > -				    DA7218_LVL_DET_EVENT_MSK_MASK,
> > -				    DA7218_LVL_DET_EVENT_MSK_MASK);
> > -
> >  		ret = devm_request_threaded_irq(codec->dev, da7218->irq, NULL,
> >  						da7218_irq_thread,
> >  						IRQF_TRIGGER_LOW |
> IRQF_ONESHOT,
> > --
> > 1.9.3
> >
> >

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ