From: nicolas.ferre@atmel.com (Nicolas Ferre)
To: linux-arm-kernel@lists.infradead.org
Subject: [patch 23/29] arm: at91: Cleanup irq chip
Date: Tue, 29 Mar 2011 10:00:19 +0200 [thread overview]
Message-ID: <4D919193.2070601@atmel.com> (raw)
In-Reply-To: <20110328170652.972256153@linutronix.de>
Le 28/03/2011 19:12, Thomas Gleixner :
> 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>
Seems ok.
Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
> ---
> 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_irq_chip(idata);
> + struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(idata);
> + 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 */
> }
>
>
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
--
Nicolas Ferre
next prev parent reply other threads:[~2011-03-29 8:00 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-28 17:12 [patch 00/29] arm: bug fixes and irq cleanup (v2) for .39 Thomas Gleixner
2011-03-28 17:12 ` [patch 01/29] arm: bios32: Remove non exisiting machine code Thomas Gleixner
2011-03-28 17:12 ` [patch 03/29] arm: at91: at572d940hf: Fix SDRAMC define Thomas Gleixner
2011-03-29 7:46 ` Nicolas Ferre
2011-03-28 17:12 ` [patch 02/29] arm: footbridge: Make cksrc_dc21285_disable() void Thomas Gleixner
2011-03-28 17:12 ` [patch 05/29] arm: ns9xxx: Remove non exisiting machine checks Thomas Gleixner
2011-03-28 17:12 ` [patch 04/29] arm: dove: Use correct GPIO_BASE and remove orion_gpio_init() leftover Thomas Gleixner
2011-03-28 17:12 ` [patch 07/29] arm: h720x: Fix irq conversion fallout Thomas Gleixner
2011-03-28 17:12 ` [patch 06/29] arm: nomadik: Remove non existing cpu id check Thomas Gleixner
2011-03-29 5:35 ` Srinidhi Kasagar
2011-03-28 17:12 ` [patch 08/29] arm: tegra: Remove unused bogus irq enable/disable magic Thomas Gleixner
2011-03-28 17:12 ` Thomas Gleixner
[not found] ` <20110328170651.575138721-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org>
2011-03-28 19:00 ` Colin Cross
2011-03-28 19:00 ` Colin Cross
[not found] ` <BANLkTinjYq3F0CwfqRQVzG53ecPm=QyV5A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-03-28 19:13 ` Thomas Gleixner
2011-03-28 19:13 ` Thomas Gleixner
2011-03-28 17:12 ` [patch 10/29] arm: Use irq flag setter function Thomas Gleixner
2011-03-28 17:12 ` [patch 09/29] arm: Use genirq lockdep helper to set lock class Thomas Gleixner
2011-03-28 17:12 ` [patch 12/29] arm: Cleanup irq_desc access Thomas Gleixner
2011-03-28 17:12 ` [patch 11/29] arm: msm: Convert to new irq chip functions Thomas Gleixner
2011-03-28 17:12 ` [patch 13/29] arm: plat-samsung: Use proper irq accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 15/29] arm: nomadik: Use local irq state Thomas Gleixner
2011-03-28 17:12 ` [patch 14/29] arm: stmp3xxx: Use generic_handle_irq() Thomas Gleixner
2011-03-28 17:12 ` [patch 17/29] arm: msm: Use proper irq accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 16/29] arm: plat-omap: Cleanup irq_desc access Thomas Gleixner
2011-03-28 17:12 ` [patch 19/29] arm: mxc: Use generic_handle_irq() Thomas Gleixner
2011-03-28 17:12 ` [patch 18/29] arm: vt8500: Use proper irq accessors Thomas Gleixner
2011-03-28 17:12 ` [patch 20/29] arm: gemini: Use proper irq accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 21/29] arm: ep93xx: " Thomas Gleixner
2011-03-28 17:12 ` [patch 22/29] arm: davinci: Cleanup irq chip code Thomas Gleixner
2011-03-28 17:12 ` [patch 24/29] arm: gic: Use proper accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 23/29] arm: at91: Cleanup irq chip Thomas Gleixner
2011-03-29 8:00 ` Nicolas Ferre [this message]
2011-03-28 17:12 ` [patch 25/29] arm: dove: Use proper irq accessor functions Thomas Gleixner
2011-03-28 17:12 ` [patch 26/29] arm: Use generic show_interrupts() Thomas Gleixner
2011-03-28 17:12 ` [patch 29/29] arm: Fold irq_set_chip/irq_set_handler Thomas Gleixner
2011-03-29 7:49 ` Nicolas Ferre
2011-03-28 17:12 ` [patch 28/29] arm: Reorder irq_set_ function calls Thomas Gleixner
2011-03-28 17:13 ` [patch 27/29] arm: Cleanup the irq namespace Thomas Gleixner
2011-04-18 17:37 ` H Hartley Sweeten
2011-04-19 9:49 ` Uwe Kleine-König
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=4D919193.2070601@atmel.com \
--to=nicolas.ferre@atmel.com \
--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.