All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yang Fang <yang.a.fang@intel.com>
To: Dylan Reid <dgreid@chromium.org>
Cc: "alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
	"Sripathi, Srinivas" <srinivas.sripathi@intel.com>,
	yang.a.fang@intel.com, Praveen K Jain <praveen.k.jain@intel.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Denny Iriawan <denny.iriawan@intel.com>,
	Mark Brown <broonie@kernel.org>,
	"Nujella, Sathyanarayana" <sathyanarayana.nujella@intel.com>,
	kevin.strasser@linux.intel.com, mika.westerberg@linux.intel.com
Subject: Re: [PATCH] ASoC: ts3a227e: do not report jack status when there is i2c read err
Date: Wed, 1 Jul 2015 10:34:09 -0700	[thread overview]
Message-ID: <20150701173409.GA111758@mocha> (raw)
In-Reply-To: <CAEUnVG6fLa_+rnmFQ1zWZod25pJomO6xqLbshj8_t8AhhtK9Sg@mail.gmail.com>

On Wed, Jul 01, 2015 at 10:12:37AM -0700, Dylan Reid wrote:
> On Tue, Jun 30, 2015 at 9:18 PM,  <yang.a.fang@intel.com> wrote:
> > From: "Fang, Yang A" <yang.a.fang@intel.com>
> >
> > After suspend -> resume the ts3a227e_interrupt sometimes comes before i2c
> > controller resume is called .regmap_read will return incorrect status
> > and report a wrong jack status.We should return if there is read err,the
> > interrupt will come again since it is level triggered and we are not yet
> > clear the interrupt. In addtion,cht_bsw_max98090_ti machine driver
> > registered additional notifier base on jack event which will program
> > the audio codec.there will be codec timeout err if such event occurs
> > prior to i2c controller is resumed.
> 
> Thanks, I think the error checking is good to have anyway, but should
> the interrupt also be disabled across suspend/resume?  I'd hope this
> device's resume callback wouldn't happen until after the parent i2c
> bus is ready.
I am looping Mika. I was expecting that interrupt would come after i2c
bus is ready. but with current pinctrl-cherryview driver the interrupt
comes in random order after resume.
> 
> >
> > Signed-off-by: Fang, Yang A <yang.a.fang@intel.com>
> > ---
> >  sound/soc/codecs/ts3a227e.c |   18 ++++++++++++++++--
> >  1 file changed, 16 insertions(+), 2 deletions(-)
> >
> > diff --git a/sound/soc/codecs/ts3a227e.c b/sound/soc/codecs/ts3a227e.c
> > index 12232d7..12d0f2a 100644
> > --- a/sound/soc/codecs/ts3a227e.c
> > +++ b/sound/soc/codecs/ts3a227e.c
> > @@ -23,6 +23,7 @@
> >  #include "ts3a227e.h"
> >
> >  struct ts3a227e {
> > +       struct device *dev;
> >         struct regmap *regmap;
> >         struct snd_soc_jack *jack;
> >         bool plugged;
> > @@ -189,16 +190,28 @@ static irqreturn_t ts3a227e_interrupt(int irq, void *data)
> >         struct ts3a227e *ts3a227e = (struct ts3a227e *)data;
> >         struct regmap *regmap = ts3a227e->regmap;
> >         unsigned int int_reg, kp_int_reg, acc_reg, i;
> > +       struct device *dev = ts3a227e->dev;
> > +       int ret;
> >
> >         /* Check for plug/unplug. */
> > -       regmap_read(regmap, TS3A227E_REG_INTERRUPT, &int_reg);
> > +       ret = regmap_read(regmap, TS3A227E_REG_INTERRUPT, &int_reg);
> > +       if (ret) {
> > +               dev_err(dev, "failed to clear interrupt ret=%d\n", ret);
> > +               return IRQ_HANDLED;
> > +       }
> > +
> >         if (int_reg & (DETECTION_COMPLETE_EVENT | INS_REM_EVENT)) {
> >                 regmap_read(regmap, TS3A227E_REG_ACCESSORY_STATUS, &acc_reg);
> >                 ts3a227e_new_jack_state(ts3a227e, acc_reg);
> >         }
> >
> >         /* Report any key events. */
> > -       regmap_read(regmap, TS3A227E_REG_KP_INTERRUPT, &kp_int_reg);
> > +       ret = regmap_read(regmap, TS3A227E_REG_KP_INTERRUPT, &kp_int_reg);
> > +       if (ret) {
> > +               dev_err(dev, "failed to clear key interrupt ret=%d\n", ret);
> > +               return IRQ_HANDLED;
> > +       }
> > +
> >         for (i = 0; i < TS3A227E_NUM_BUTTONS; i++) {
> >                 if (kp_int_reg & PRESS_MASK(i))
> >                         ts3a227e->buttons_held |= (1 << i);
> > @@ -283,6 +296,7 @@ static int ts3a227e_i2c_probe(struct i2c_client *i2c,
> >                 return -ENOMEM;
> >
> >         i2c_set_clientdata(i2c, ts3a227e);
> > +       ts3a227e->dev = dev;
> >
> >         ts3a227e->regmap = devm_regmap_init_i2c(i2c, &ts3a227e_regmap_config);
> >         if (IS_ERR(ts3a227e->regmap))
> > --
> > 1.7.9.5
> >
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel@alsa-project.org
> > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2015-07-01 17:35 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-01  4:18 [PATCH] ASoC: ts3a227e: do not report jack status when there is i2c read err yang.a.fang
2015-07-01 17:12 ` Dylan Reid
2015-07-01 17:34   ` Yang Fang [this message]
2015-07-01 18:05     ` Mark Brown
2015-07-01 18:24       ` Fang, Yang A
2015-07-01 23:20         ` Fang, Yang A
2015-07-01 23:24 ` [PATCH v2] " yang.a.fang
2015-07-07 13:47   ` Mark Brown
2015-07-07 21:21   ` [PATCH v3] " yang.a.fang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150701173409.GA111758@mocha \
    --to=yang.a.fang@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=denny.iriawan@intel.com \
    --cc=dgreid@chromium.org \
    --cc=kevin.strasser@linux.intel.com \
    --cc=lgirdwood@gmail.com \
    --cc=mika.westerberg@linux.intel.com \
    --cc=praveen.k.jain@intel.com \
    --cc=sathyanarayana.nujella@intel.com \
    --cc=srinivas.sripathi@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.