From: tglx@linutronix.de (Thomas Gleixner)
To: linux-arm-kernel@lists.infradead.org
Subject: [patch 17/23] arm: at91: Cleanup irq chip
Date: Fri, 25 Mar 2011 13:22:07 -0000 [thread overview]
Message-ID: <20110325132048.996818347@linutronix.de> (raw)
In-Reply-To: 20110325131617.258789658@linutronix.de
An embedded and charset-unspecified text was scrubbed...
Name: arm-at91.patch
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110325/e001fa0e/attachment.ksh>
WARNING: multiple messages have this Message-ID (diff)
From: Thomas Gleixner <tglx@linutronix.de>
To: LKML <linux-kernel@vger.kernel.org>
Cc: LAK <linux-arm-kernel@lists.infradead.org>,
Russell King <linux@arm.linux.org.uk>,
Lennert Buytenhek <buytenh@wantstofly.org>
Subject: [patch 17/23] arm: at91: Cleanup irq chip
Date: Fri, 25 Mar 2011 13:22:07 -0000 [thread overview]
Message-ID: <20110325132048.996818347@linutronix.de> (raw)
In-Reply-To: 20110325131617.258789658@linutronix.de
[-- Attachment #1: arm-at91.patch --]
[-- Type: text/plain, Size: 2297 bytes --]
Avoid the whole lazy disable dance in the demux handler by providing a
irq_disable() callback.
Use the proper accessor functions and tidy up gpio_irq_handler()
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
arch/arm/mach-at91/gpio.c | 31 +++++++++----------------------
1 file changed, 9 insertions(+), 22 deletions(-)
Index: linux-2.6-tip/arch/arm/mach-at91/gpio.c
===================================================================
--- linux-2.6-tip.orig/arch/arm/mach-at91/gpio.c
+++ linux-2.6-tip/arch/arm/mach-at91/gpio.c
@@ -375,6 +375,7 @@ static int gpio_irq_type(struct irq_data
static struct irq_chip gpio_irqchip = {
.name = "GPIO",
+ .irq_disable = gpio_irq_mask,
.irq_mask = gpio_irq_mask,
.irq_unmask = gpio_irq_unmask,
.irq_set_type = gpio_irq_type,
@@ -384,16 +385,14 @@ static struct irq_chip gpio_irqchip = {
static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
{
unsigned pin;
- struct irq_desc *gpio;
- struct at91_gpio_chip *at91_gpio;
- void __iomem *pio;
+ struct irq_data *idata = irq_desc_get_irq_data(desc);
+ struct irq_chip *chip = irq_data_get_chip(data);
+ struct at91_gpio_chip *at91_gpio = irq_data_get_chip_data(data);
+ void __iomem *pio = at91_gpio->regbase;
u32 isr;
- at91_gpio = get_irq_chip_data(irq);
- pio = at91_gpio->regbase;
-
/* temporarily mask (level sensitive) parent IRQ */
- desc->irq_data.chip->irq_ack(&desc->irq_data);
+ chip->irq_ack(idata);
for (;;) {
/* Reading ISR acks pending (edge triggered) GPIO interrupts.
* When there none are pending, we're finished unless we need
@@ -409,27 +408,15 @@ static void gpio_irq_handler(unsigned ir
}
pin = at91_gpio->chip.base;
- gpio = &irq_desc[pin];
while (isr) {
- if (isr & 1) {
- if (unlikely(gpio->depth)) {
- /*
- * The core ARM interrupt handler lazily disables IRQs so
- * another IRQ must be generated before it actually gets
- * here to be disabled on the GPIO controller.
- */
- gpio_irq_mask(irq_get_irq_data(pin));
- }
- else
- generic_handle_irq(pin);
- }
+ if (isr & 1)
+ generic_handle_irq(pin);
pin++;
- gpio++;
isr >>= 1;
}
}
- desc->irq_data.chip->irq_unmask(&desc->irq_data);
+ chip->irq_unmask(idata);
/* now it may re-trigger */
}
next prev parent reply other threads:[~2011-03-25 13:22 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-25 13:21 [patch 00/23] ARM: Final genirq cleanup Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 01/23] arm: Ns9xxx: Remove private irq flow handler Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 02/23] arm: tegra: Remove unused function which fiddles with irq_desc Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
[not found] ` <20110325132047.552074703-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
2011-03-26 20:12 ` Varun Wadekar
2011-03-26 20:12 ` Varun Wadekar
2011-03-26 20:12 ` Varun Wadekar
[not found] ` <4D8E4897.5030705-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-03-26 20:24 ` Thomas Gleixner
2011-03-26 20:24 ` Thomas Gleixner
2011-03-26 20:24 ` Thomas Gleixner
[not found] ` <alpine.LFD.2.00.1103262118010.31464-bi+AKbBUZKagILUCTcTcHdKyNwTtLsGr@public.gmane.org>
2011-03-26 22:37 ` Colin Cross
2011-03-26 22:37 ` Colin Cross
2011-03-26 22:37 ` Colin Cross
[not found] ` <AANLkTi=y9JkpJVCq5G151G9k3d0rAcSH13gi6uGB_gDX-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-03-27 8:07 ` Thomas Gleixner
2011-03-27 8:07 ` Thomas Gleixner
2011-03-27 8:07 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 03/23] arm: Use genirq lockdep helper to set lock class Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 04/23] arm: Use irq flag setter function Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 05/23] arm: msm: Convert to new irq chip functions Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 06/23] arm: Cleanup irq_desc access Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 07/23] arm: plat-samsung: Use proper irq accessor functions Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 08/23] arm: stmp3xxx: Use generic_handle_irq() Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:21 ` [patch 09/23] arm: nomadik: Use local irq state Thomas Gleixner
2011-03-25 13:21 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 10/23] arm: plat-omap: Cleanup irq_desc access Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 11/23] arm: msm: Use proper irq accessor functions Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 12/23] arm: vt8500: Use proper irq accessors Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 13/23] arm: mxc: Use generic_handle_irq() Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 14/23] arm: gemini: Use proper irq accessor functions Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 15/23] arm: ep93xx: " Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 16/23] arm: davinci: Cleanup irq chip code Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner [this message]
2011-03-25 13:22 ` [patch 17/23] arm: at91: Cleanup irq chip Thomas Gleixner
2011-03-25 21:03 ` Thomas Gleixner
2011-03-25 21:03 ` Thomas Gleixner
2011-03-27 15:02 ` Sergei Shtylyov
2011-03-27 15:02 ` Sergei Shtylyov
2011-03-27 15:47 ` Thomas Gleixner
2011-03-27 15:47 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 18/23] arm: gic: Use proper accessor functions Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 19/23] arm: dove: Use proper irq " Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 20/23] arm: Use generic show_interrupts() Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 21/23] arm: Cleanup the irq namespace Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-04-18 17:43 ` H Hartley Sweeten
2011-04-18 17:43 ` H Hartley Sweeten
2011-03-25 13:22 ` [patch 22/23] arm: Reorder irq_set_ function calls Thomas Gleixner
2011-03-25 13:22 ` Thomas Gleixner
2011-03-25 13:22 ` [patch 23/23] arm: Fold irq_set_chip/irq_set_handler Thomas Gleixner
2011-03-25 13:22 ` 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=20110325132048.996818347@linutronix.de \
--to=tglx@linutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
/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.