From: Grant Likely <grant.likely@secretlab.ca>
To: "Du, Alek" <alek.du@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
LKML <linux-kernel@vger.kernel.org>,
"Tang, Feng" <feng.tang@intel.com>,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: [patch 5/5] [RFC] gpio: langwell: Clear edge bit before handling
Date: Thu, 17 Mar 2011 23:06:35 -0600 [thread overview]
Message-ID: <20110318050635.GD18545@angua.secretlab.ca> (raw)
In-Reply-To: <1865303E0DED764181A9D882DEF65FB688211171FD@shsmsx502.ccr.corp.intel.com>
On Fri, Mar 18, 2011 at 10:33:56AM +0800, Du, Alek wrote:
> On Fri, 18 Mar 2011 03:32:58 +0800
> Thomas Gleixner <tglx@linutronix.de> wrote:
>
> > I don't have the specs for this beast, but it looks a lot like the PXA
> > GPIO block. Though I bet it's the same IP and the driver should have
> > reused the PXA code.
> >
>
> I think so.
>
> > Acknowleding the edge detect status after handling one or more gpio
> > interrupts looks wrong. We might lose an edge which came in while we
> > handled the previous one.
> >
>
> Thanks for it. Although losing interrupt can always happen if the pending
> IRQs are more than 1, but your patch will reduce the possibility.
I'll take that as an ack. Unless you tell me otherwise, I'll pick it
up and ask Linus to pull it shortly.
g.
>
> Thanks,
> Alek
>
> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> > Cc: Feng Tang <feng.tang@intel.com>
> > Cc: Alek Du <alek.du@intel.com>
> > Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
> >
> > ---
> > drivers/gpio/langwell_gpio.c | 13 ++++++-------
> > 1 file changed, 6 insertions(+), 7 deletions(-)
> >
> > Index: linux-2.6-tip/drivers/gpio/langwell_gpio.c
> > ===================================================================
> > --- linux-2.6-tip.orig/drivers/gpio/langwell_gpio.c
> > +++ linux-2.6-tip/drivers/gpio/langwell_gpio.c
> > @@ -190,23 +190,22 @@ static void lnw_irq_handler(unsigned irq
> > struct irq_data *data = irq_desc_get_irq_data(desc);
> > struct lnw_gpio *lnw = irq_data_get_irq_handler_data(data);
> > struct irq_chip *chip = irq_data_get_irq_chip(data);
> > - u32 base, gpio, gedr_v;
> > + u32 base, gpio, mask;
> > unsigned long pending;
> > void __iomem *gedr;
> >
> > /* check GPIO controller to check which pin triggered the interrupt */
> > for (base = 0; base < lnw->chip.ngpio; base += 32) {
> > gedr = gpio_reg(&lnw->chip, base, GEDR);
> > - gedr_v = pending = readl(gedr);
> > - if (!gedr_v)
> > - continue;
> > + pending = readl(gedr);
> > while (pending) {
> > gpio = __ffs(pending) - 1;
> > - pending &= ~BIT(gpio);
> > + mask = BIT(gpio);
> > + pending &= ~mask;
> > + /* Clear before handling so we can't lose an edge */
> > + writel(mask, gedr);
> > generic_handle_irq(lnw->irq_base + base + gpio);
> > }
> > - /* clear the edge detect status bit */
> > - writel(gedr_v, gedr);
> > }
> >
> > chip->irq_eoi(data);
> >
> >
>
next prev parent reply other threads:[~2011-03-18 5:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-17 19:32 [patch 0/5] gpio: langwell: Cleanup the interrupt mess Thomas Gleixner
2011-03-17 19:32 ` [patch 1/5] gpio; Make Intel chipset gpio drivers depend on x86 Thomas Gleixner
2011-03-17 19:32 ` [patch 2/5] gpio-langwell-fix-crap.patch Thomas Gleixner
2011-03-17 19:32 ` [patch 3/5] gpio: langwell: Convert irq name space Thomas Gleixner
2011-03-17 19:32 ` [patch 4/5] gpio: langwell: Simplify demux loop Thomas Gleixner
2011-03-17 19:32 ` [patch 5/5] [RFC] gpio: langwell: Clear edge bit before handling Thomas Gleixner
2011-03-18 2:33 ` Du, Alek
2011-03-18 5:06 ` Grant Likely [this message]
2011-03-17 19:51 ` [patch 0/5] gpio: langwell: Cleanup the interrupt mess Grant Likely
2011-03-17 21:38 ` Thomas Gleixner
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=20110318050635.GD18545@angua.secretlab.ca \
--to=grant.likely@secretlab.ca \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=alek.du@intel.com \
--cc=feng.tang@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tglx@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome