Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1282967

Re: [PATCH] ASoC: da7218: Enable mic level detection reporting to user-space

From Takashi Iwai <tiwai@suse.de>
Newsgroups linux.kernel
Subject Re: [PATCH] ASoC: da7218: Enable mic level detection reporting to user-space
Date 2015-12-03 12:40 +0100
Message-ID <qBAoW-4kA-5@gated-at.bofh.it> (permalink)
References <qBzCx-3N9-1@gated-at.bofh.it> <qBzMe-3RU-7@gated-at.bofh.it> <qBA5A-4dT-1@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Thu, 03 Dec 2015 12:15:41 +0100,
Opensource [Adam Thomson] wrote:
> 
> 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.

I'm not strongly opposing to uevent as long as it's well considered.
But then please describe how it's notified properly and why it was
chosen.  The patch changelog has enough free room to write more
details, fortunately.  Tell more your story for Christmas :)

In general, you can use an ALSA control notification for this kind of
event.  But it also depends on the user-space side.  With alsa-lib,
it's pretty easy to use, while with tinyalsa that lacks of the notifier
handling, you'd need to implement more code there.

For a plug/unplug type event, we have a generic jack layer, but this
doesn't seem fitting perfectly, either.


Takashi

> 
> > >
> > > Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.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
> > >
> > >
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH] ASoC: da7218: Enable mic level detection reporting to  user-space Adam Thomson <Adam.Thomson.Opensource@diasemi.com> - 2015-12-03 11:50 +0100
  Re: [PATCH] ASoC: da7218: Enable mic level detection reporting to user-space Takashi Iwai <tiwai@suse.de> - 2015-12-03 12:00 +0100
    RE: [PATCH] ASoC: da7218: Enable mic level detection reporting to  user-space "Opensource [Adam Thomson]" <Adam.Thomson.Opensource@diasemi.com> - 2015-12-03 12:20 +0100
      Re: [PATCH] ASoC: da7218: Enable mic level detection reporting to user-space Takashi Iwai <tiwai@suse.de> - 2015-12-03 12:40 +0100
        RE: [PATCH] ASoC: da7218: Enable mic level detection reporting to  user-space "Opensource [Adam Thomson]" <Adam.Thomson.Opensource@diasemi.com> - 2015-12-03 15:50 +0100

csiph-web