Login | Register For Free | Help
Search for: (Advanced)

Mailing List Archive: Linux: Kernel

[PATCH] gpio: Langwell GPIO driver miscellaneous clean-ups

 

 

Linux kernel RSS feed   Index | Next | Previous | View Threaded


alek.du at intel

Nov 21, 2009, 7:19 PM

Post #1 of 3 (171 views)
Permalink
[PATCH] gpio: Langwell GPIO driver miscellaneous clean-ups

From 9ba8224f5246ef7fdf1c0a15bb5535e442731435 Mon Sep 17 00:00:00 2001
From: Alek Du <alek.du [at] intel>
Date: Sun, 22 Nov 2009 10:58:21 +0800
Subject: [PATCH] gpio: Langwell GPIO driver miscellaneous clean-ups

1. Use >= N to check invalid gpio number (unsigned type)
2. Remove wrong and unnecessary unmask operation
3. Remove extra GEDR reading

The 2) and 3) will fix interrupts losing when two or more pins are triggered at close time.

Signed-off-by: Alek Du <alek.du [at] intel>
---
drivers/gpio/langwell_gpio.c | 13 ++-----------
1 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/gpio/langwell_gpio.c b/drivers/gpio/langwell_gpio.c
index 5711ce5..6c0ebbd 100644
--- a/drivers/gpio/langwell_gpio.c
+++ b/drivers/gpio/langwell_gpio.c
@@ -123,7 +123,7 @@ static int lnw_irq_type(unsigned irq, unsigned type)
void __iomem *grer = (void __iomem *)(&lnw->reg_base->GRER[reg]);
void __iomem *gfer = (void __iomem *)(&lnw->reg_base->GFER[reg]);

- if (gpio < 0 || gpio > lnw->chip.ngpio)
+ if (gpio >= lnw->chip.ngpio)
return -EINVAL;
spin_lock_irqsave(&lnw->lock, flags);
if (type & IRQ_TYPE_EDGE_RISING)
@@ -144,13 +144,6 @@ static int lnw_irq_type(unsigned irq, unsigned type)

static void lnw_irq_unmask(unsigned irq)
{
- struct lnw_gpio *lnw = get_irq_chip_data(irq);
- u32 gpio = irq - lnw->irq_base;
- u8 reg = gpio / 32;
- void __iomem *gedr;
-
- gedr = (void __iomem *)(&lnw->reg_base->GEDR[reg]);
- writel(BIT(gpio % 32), gedr);
};

static void lnw_irq_mask(unsigned irq)
@@ -183,13 +176,11 @@ static void lnw_irq_handler(unsigned irq, struct irq_desc *desc)
gedr_v = readl(gedr);
if (!gedr_v)
continue;
- for (gpio = reg*32; gpio < reg*32+32; gpio++) {
- gedr_v = readl(gedr);
+ for (gpio = reg*32; gpio < reg*32+32; gpio++)
if (gedr_v & BIT(gpio % 32)) {
pr_debug("pin %d triggered\n", gpio);
generic_handle_irq(lnw->irq_base + gpio);
}
- }
/* clear the edge detect status bit */
writel(gedr_v, gedr);
}
--
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


akpm at linux-foundation

Nov 24, 2009, 12:29 PM

Post #2 of 3 (140 views)
Permalink
Re: [PATCH] gpio: Langwell GPIO driver miscellaneous clean-ups [In reply to]

On Sun, 22 Nov 2009 11:19:01 +0800
Alek Du <alek.du [at] intel> wrote:

> >From 9ba8224f5246ef7fdf1c0a15bb5535e442731435 Mon Sep 17 00:00:00 2001
> From: Alek Du <alek.du [at] intel>
> Date: Sun, 22 Nov 2009 10:58:21 +0800
> Subject: [PATCH] gpio: Langwell GPIO driver miscellaneous clean-ups
>
> 1. Use >= N to check invalid gpio number (unsigned type)

I already had this in gpio-fix-test-on-unsigned-in-lnw_irq_type.patch

> 2. Remove wrong and unnecessary unmask operation
> 3. Remove extra GEDR reading
>
> The 2) and 3) will fix interrupts losing when two or more pins are triggered at close time.
>

Those aren't cleanups - they're bug fixes!

How important are they?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/


alek.du at intel

Nov 24, 2009, 5:02 PM

Post #3 of 3 (135 views)
Permalink
Re: [PATCH] gpio: Langwell GPIO driver miscellaneous clean-ups [In reply to]

On Wed, 25 Nov 2009 04:29:37 +0800
Andrew Morton <akpm [at] linux-foundation> wrote:

> On Sun, 22 Nov 2009 11:19:01 +0800
> Alek Du <alek.du [at] intel> wrote:
>
> > >From 9ba8224f5246ef7fdf1c0a15bb5535e442731435 Mon Sep 17 00:00:00 2001
> > From: Alek Du <alek.du [at] intel>
> > Date: Sun, 22 Nov 2009 10:58:21 +0800
> > Subject: [PATCH] gpio: Langwell GPIO driver miscellaneous clean-ups
> >
> > 1. Use >= N to check invalid gpio number (unsigned type)
>
> I already had this in gpio-fix-test-on-unsigned-in-lnw_irq_type.patch
>
> > 2. Remove wrong and unnecessary unmask operation
> > 3. Remove extra GEDR reading
> >
> > The 2) and 3) will fix interrupts losing when two or more pins are triggered at close time.
> >
>
> Those aren't cleanups - they're bug fixes!
I agree, thx.

>
> How important are they?

It is not show stopper one, but would be great if could commit to 2.6.32 rcx.

Thanks,
Alek
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo [at] vger
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Linux kernel RSS feed   Index | Next | Previous | View Threaded
 
 


Interested in having your list archived? Contact Gossamer Threads
 
  Web Applications & Managed Hosting Powered by Gossamer Threads Inc.